diff --git a/.gitattributes b/.gitattributes
index 25e6abe38978d18e46df13ef04d81be1af01fd58..39898d5066407054f7959629ce477f33d5cb2308 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -210,3 +210,4 @@ tuning-competition-baseline/.venv/lib/python3.11/site-packages/torch/_inductor/_
.venv/lib/python3.11/site-packages/rpds/rpds.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
.venv/lib/python3.11/site-packages/watchfiles/_rust_notify.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
.venv/lib/python3.11/site-packages/frozenlist/_frozenlist.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
+.venv/lib/python3.11/site-packages/uvloop/loop.cpython-311-x86_64-linux-gnu.so filter=lfs diff=lfs merge=lfs -text
diff --git a/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/INSTALLER b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/INSTALLER
new file mode 100644
index 0000000000000000000000000000000000000000..a1b589e38a32041e49332e5e81c2d363dc418d68
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/INSTALLER
@@ -0,0 +1 @@
+pip
diff --git a/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/LICENSE b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/LICENSE
new file mode 100644
index 0000000000000000000000000000000000000000..f26bcf4d2de6eb136e31006ca3ab447d5e488adf
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/LICENSE
@@ -0,0 +1,279 @@
+A. HISTORY OF THE SOFTWARE
+==========================
+
+Python was created in the early 1990s by Guido van Rossum at Stichting
+Mathematisch Centrum (CWI, see https://www.cwi.nl) in the Netherlands
+as a successor of a language called ABC. Guido remains Python's
+principal author, although it includes many contributions from others.
+
+In 1995, Guido continued his work on Python at the Corporation for
+National Research Initiatives (CNRI, see https://www.cnri.reston.va.us)
+in Reston, Virginia where he released several versions of the
+software.
+
+In May 2000, Guido and the Python core development team moved to
+BeOpen.com to form the BeOpen PythonLabs team. In October of the same
+year, the PythonLabs team moved to Digital Creations, which became
+Zope Corporation. In 2001, the Python Software Foundation (PSF, see
+https://www.python.org/psf/) was formed, a non-profit organization
+created specifically to own Python-related Intellectual Property.
+Zope Corporation was a sponsoring member of the PSF.
+
+All Python releases are Open Source (see https://opensource.org for
+the Open Source Definition). Historically, most, but not all, Python
+releases have also been GPL-compatible; the table below summarizes
+the various releases.
+
+ Release Derived Year Owner GPL-
+ from compatible? (1)
+
+ 0.9.0 thru 1.2 1991-1995 CWI yes
+ 1.3 thru 1.5.2 1.2 1995-1999 CNRI yes
+ 1.6 1.5.2 2000 CNRI no
+ 2.0 1.6 2000 BeOpen.com no
+ 1.6.1 1.6 2001 CNRI yes (2)
+ 2.1 2.0+1.6.1 2001 PSF no
+ 2.0.1 2.0+1.6.1 2001 PSF yes
+ 2.1.1 2.1+2.0.1 2001 PSF yes
+ 2.1.2 2.1.1 2002 PSF yes
+ 2.1.3 2.1.2 2002 PSF yes
+ 2.2 and above 2.1.1 2001-now PSF yes
+
+Footnotes:
+
+(1) GPL-compatible doesn't mean that we're distributing Python under
+ the GPL. All Python licenses, unlike the GPL, let you distribute
+ a modified version without making your changes open source. The
+ GPL-compatible licenses make it possible to combine Python with
+ other software that is released under the GPL; the others don't.
+
+(2) According to Richard Stallman, 1.6.1 is not GPL-compatible,
+ because its license has a choice of law clause. According to
+ CNRI, however, Stallman's lawyer has told CNRI's lawyer that 1.6.1
+ is "not incompatible" with the GPL.
+
+Thanks to the many outside volunteers who have worked under Guido's
+direction to make these releases possible.
+
+
+B. TERMS AND CONDITIONS FOR ACCESSING OR OTHERWISE USING PYTHON
+===============================================================
+
+Python software and documentation are licensed under the
+Python Software Foundation License Version 2.
+
+Starting with Python 3.8.6, examples, recipes, and other code in
+the documentation are dual licensed under the PSF License Version 2
+and the Zero-Clause BSD license.
+
+Some software incorporated into Python is under different licenses.
+The licenses are listed with code falling under that license.
+
+
+PYTHON SOFTWARE FOUNDATION LICENSE VERSION 2
+--------------------------------------------
+
+1. This LICENSE AGREEMENT is between the Python Software Foundation
+("PSF"), and the Individual or Organization ("Licensee") accessing and
+otherwise using this software ("Python") in source or binary form and
+its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, PSF hereby
+grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce,
+analyze, test, perform and/or display publicly, prepare derivative works,
+distribute, and otherwise use Python alone or in any derivative version,
+provided, however, that PSF's License Agreement and PSF's notice of copyright,
+i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Python Software Foundation;
+All Rights Reserved" are retained in Python alone or in any derivative version
+prepared by Licensee.
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python.
+
+4. PSF is making Python available to Licensee on an "AS IS"
+basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. Nothing in this License Agreement shall be deemed to create any
+relationship of agency, partnership, or joint venture between PSF and
+Licensee. This License Agreement does not grant permission to use PSF
+trademarks or trade name in a trademark sense to endorse or promote
+products or services of Licensee, or any third party.
+
+8. By copying, installing or otherwise using Python, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+
+BEOPEN.COM LICENSE AGREEMENT FOR PYTHON 2.0
+-------------------------------------------
+
+BEOPEN PYTHON OPEN SOURCE LICENSE AGREEMENT VERSION 1
+
+1. This LICENSE AGREEMENT is between BeOpen.com ("BeOpen"), having an
+office at 160 Saratoga Avenue, Santa Clara, CA 95051, and the
+Individual or Organization ("Licensee") accessing and otherwise using
+this software in source or binary form and its associated
+documentation ("the Software").
+
+2. Subject to the terms and conditions of this BeOpen Python License
+Agreement, BeOpen hereby grants Licensee a non-exclusive,
+royalty-free, world-wide license to reproduce, analyze, test, perform
+and/or display publicly, prepare derivative works, distribute, and
+otherwise use the Software alone or in any derivative version,
+provided, however, that the BeOpen Python License is retained in the
+Software, alone or in any derivative version prepared by Licensee.
+
+3. BeOpen is making the Software available to Licensee on an "AS IS"
+basis. BEOPEN MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, BEOPEN MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+4. BEOPEN SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF THE
+SOFTWARE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS
+AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE, OR ANY
+DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+5. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+6. This License Agreement shall be governed by and interpreted in all
+respects by the law of the State of California, excluding conflict of
+law provisions. Nothing in this License Agreement shall be deemed to
+create any relationship of agency, partnership, or joint venture
+between BeOpen and Licensee. This License Agreement does not grant
+permission to use BeOpen trademarks or trade names in a trademark
+sense to endorse or promote products or services of Licensee, or any
+third party. As an exception, the "BeOpen Python" logos available at
+http://www.pythonlabs.com/logos.html may be used according to the
+permissions granted on that web page.
+
+7. By copying, installing or otherwise using the software, Licensee
+agrees to be bound by the terms and conditions of this License
+Agreement.
+
+
+CNRI LICENSE AGREEMENT FOR PYTHON 1.6.1
+---------------------------------------
+
+1. This LICENSE AGREEMENT is between the Corporation for National
+Research Initiatives, having an office at 1895 Preston White Drive,
+Reston, VA 20191 ("CNRI"), and the Individual or Organization
+("Licensee") accessing and otherwise using Python 1.6.1 software in
+source or binary form and its associated documentation.
+
+2. Subject to the terms and conditions of this License Agreement, CNRI
+hereby grants Licensee a nonexclusive, royalty-free, world-wide
+license to reproduce, analyze, test, perform and/or display publicly,
+prepare derivative works, distribute, and otherwise use Python 1.6.1
+alone or in any derivative version, provided, however, that CNRI's
+License Agreement and CNRI's notice of copyright, i.e., "Copyright (c)
+1995-2001 Corporation for National Research Initiatives; All Rights
+Reserved" are retained in Python 1.6.1 alone or in any derivative
+version prepared by Licensee. Alternately, in lieu of CNRI's License
+Agreement, Licensee may substitute the following text (omitting the
+quotes): "Python 1.6.1 is made available subject to the terms and
+conditions in CNRI's License Agreement. This Agreement together with
+Python 1.6.1 may be located on the internet using the following
+unique, persistent identifier (known as a handle): 1895.22/1013. This
+Agreement may also be obtained from a proxy server on the internet
+using the following URL: http://hdl.handle.net/1895.22/1013".
+
+3. In the event Licensee prepares a derivative work that is based on
+or incorporates Python 1.6.1 or any part thereof, and wants to make
+the derivative work available to others as provided herein, then
+Licensee hereby agrees to include in any such work a brief summary of
+the changes made to Python 1.6.1.
+
+4. CNRI is making Python 1.6.1 available to Licensee on an "AS IS"
+basis. CNRI MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
+IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, CNRI MAKES NO AND
+DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
+FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON 1.6.1 WILL NOT
+INFRINGE ANY THIRD PARTY RIGHTS.
+
+5. CNRI SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON
+1.6.1 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS
+A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON 1.6.1,
+OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF.
+
+6. This License Agreement will automatically terminate upon a material
+breach of its terms and conditions.
+
+7. This License Agreement shall be governed by the federal
+intellectual property law of the United States, including without
+limitation the federal copyright law, and, to the extent such
+U.S. federal law does not apply, by the law of the Commonwealth of
+Virginia, excluding Virginia's conflict of law provisions.
+Notwithstanding the foregoing, with regard to derivative works based
+on Python 1.6.1 that incorporate non-separable material that was
+previously distributed under the GNU General Public License (GPL), the
+law of the Commonwealth of Virginia shall govern this License
+Agreement only as to issues arising under or with respect to
+Paragraphs 4, 5, and 7 of this License Agreement. Nothing in this
+License Agreement shall be deemed to create any relationship of
+agency, partnership, or joint venture between CNRI and Licensee. This
+License Agreement does not grant permission to use CNRI trademarks or
+trade name in a trademark sense to endorse or promote products or
+services of Licensee, or any third party.
+
+8. By clicking on the "ACCEPT" button where indicated, or by copying,
+installing or otherwise using Python 1.6.1, Licensee agrees to be
+bound by the terms and conditions of this License Agreement.
+
+ ACCEPT
+
+
+CWI LICENSE AGREEMENT FOR PYTHON 0.9.0 THROUGH 1.2
+--------------------------------------------------
+
+Copyright (c) 1991 - 1995, Stichting Mathematisch Centrum Amsterdam,
+The Netherlands. All rights reserved.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Stichting Mathematisch
+Centrum or CWI not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ZERO-CLAUSE BSD LICENSE FOR CODE IN THE PYTHON DOCUMENTATION
+----------------------------------------------------------------------
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
diff --git a/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/METADATA b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/METADATA
new file mode 100644
index 0000000000000000000000000000000000000000..fc74649887b9bb82d87c063780984615341b08ad
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/METADATA
@@ -0,0 +1,123 @@
+Metadata-Version: 2.3
+Name: aiohappyeyeballs
+Version: 2.4.6
+Summary: Happy Eyeballs for asyncio
+License: PSF-2.0
+Author: J. Nick Koston
+Author-email: nick@koston.org
+Requires-Python: >=3.9
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Intended Audience :: Developers
+Classifier: Natural Language :: English
+Classifier: Operating System :: OS Independent
+Classifier: Topic :: Software Development :: Libraries
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: Programming Language :: Python :: 3.12
+Classifier: Programming Language :: Python :: 3.13
+Classifier: License :: OSI Approved :: Python Software Foundation License
+Project-URL: Bug Tracker, https://github.com/aio-libs/aiohappyeyeballs/issues
+Project-URL: Changelog, https://github.com/aio-libs/aiohappyeyeballs/blob/main/CHANGELOG.md
+Project-URL: Documentation, https://aiohappyeyeballs.readthedocs.io
+Project-URL: Repository, https://github.com/aio-libs/aiohappyeyeballs
+Description-Content-Type: text/markdown
+
+# aiohappyeyeballs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+---
+
+**Documentation**: https://aiohappyeyeballs.readthedocs.io
+
+**Source Code**: https://github.com/aio-libs/aiohappyeyeballs
+
+---
+
+[Happy Eyeballs](https://en.wikipedia.org/wiki/Happy_Eyeballs)
+([RFC 8305](https://www.rfc-editor.org/rfc/rfc8305.html))
+
+## Use case
+
+This library exists to allow connecting with
+[Happy Eyeballs](https://en.wikipedia.org/wiki/Happy_Eyeballs)
+([RFC 8305](https://www.rfc-editor.org/rfc/rfc8305.html))
+when you
+already have a list of addrinfo and not a DNS name.
+
+The stdlib version of `loop.create_connection()`
+will only work when you pass in an unresolved name which
+is not a good fit when using DNS caching or resolving
+names via another method such as `zeroconf`.
+
+## Installation
+
+Install this via pip (or your favourite package manager):
+
+`pip install aiohappyeyeballs`
+
+## License
+
+[aiohappyeyeballs is licensed under the same terms as cpython itself.](https://github.com/python/cpython/blob/main/LICENSE)
+
+## Example usage
+
+```python
+
+addr_infos = await loop.getaddrinfo("example.org", 80)
+
+socket = await start_connection(addr_infos)
+socket = await start_connection(addr_infos, local_addr_infos=local_addr_infos, happy_eyeballs_delay=0.2)
+
+transport, protocol = await loop.create_connection(
+ MyProtocol, sock=socket, ...)
+
+# Remove the first address for each family from addr_info
+pop_addr_infos_interleave(addr_info, 1)
+
+# Remove all matching address from addr_info
+remove_addr_infos(addr_info, "dead::beef::")
+
+# Convert a local_addr to local_addr_infos
+local_addr_infos = addr_to_addr_infos(("127.0.0.1",0))
+```
+
+## Credits
+
+This package contains code from cpython and is licensed under the same terms as cpython itself.
+
+This package was created with
+[Copier](https://copier.readthedocs.io/) and the
+[browniebroke/pypackage-template](https://github.com/browniebroke/pypackage-template)
+project template.
+
diff --git a/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/RECORD b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/RECORD
new file mode 100644
index 0000000000000000000000000000000000000000..04d344a9729056a8af6231d022acc022086fb19d
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/RECORD
@@ -0,0 +1,16 @@
+aiohappyeyeballs-2.4.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
+aiohappyeyeballs-2.4.6.dist-info/LICENSE,sha256=Oy-B_iHRgcSZxZolbI4ZaEVdZonSaaqFNzv7avQdo78,13936
+aiohappyeyeballs-2.4.6.dist-info/METADATA,sha256=57Lz5EDHk7TF4Oax_XNbrYyA2yOXTb2j22mOZd-uqaM,5915
+aiohappyeyeballs-2.4.6.dist-info/RECORD,,
+aiohappyeyeballs-2.4.6.dist-info/WHEEL,sha256=IYZQI976HJqqOpQU6PHkJ8fb3tMNBFjg-Cn-pwAbaFM,88
+aiohappyeyeballs/__init__.py,sha256=BQdrvCrl9sfn8i_nyFHBMBtWSImRkHB0hnuKzuxBR_U,317
+aiohappyeyeballs/__pycache__/__init__.cpython-311.pyc,,
+aiohappyeyeballs/__pycache__/_staggered.cpython-311.pyc,,
+aiohappyeyeballs/__pycache__/impl.cpython-311.pyc,,
+aiohappyeyeballs/__pycache__/types.cpython-311.pyc,,
+aiohappyeyeballs/__pycache__/utils.cpython-311.pyc,,
+aiohappyeyeballs/_staggered.py,sha256=EJffJ9VcZ8pTrnYGwbEk03dGlKhumkznvAi0xSEQmEA,6737
+aiohappyeyeballs/impl.py,sha256=dad76ssTB0hlJagDdi7_wtKH57RJrWpxDzDQv3EfyIM,7708
+aiohappyeyeballs/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
+aiohappyeyeballs/types.py,sha256=iYPiBTl5J7YEjnIqEOVUTRPzz2DwqSHBRhvbAlM0zv0,234
+aiohappyeyeballs/utils.py,sha256=on9GxIR0LhEfZu8P6Twi9hepX9zDanuZM20MWsb3xlQ,3028
diff --git a/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/WHEEL b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/WHEEL
new file mode 100644
index 0000000000000000000000000000000000000000..cafd7e15ace76facf4f1bcec42710b31e59c1ae3
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/aiohappyeyeballs-2.4.6.dist-info/WHEEL
@@ -0,0 +1,4 @@
+Wheel-Version: 1.0
+Generator: poetry-core 2.0.1
+Root-Is-Purelib: true
+Tag: py3-none-any
diff --git a/.venv/lib/python3.11/site-packages/functorch/__init__.py b/.venv/lib/python3.11/site-packages/functorch/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..0aef38c8a9bb84a9833c4c2c9c34ad528d564b32
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/functorch/__init__.py
@@ -0,0 +1,39 @@
+# Copyright (c) Facebook, Inc. and its affiliates.
+# All rights reserved.
+#
+# This source code is licensed under the BSD-style license found in the
+# LICENSE file in the root directory of this source tree.
+import torch
+from torch._functorch.deprecated import (
+ combine_state_for_ensemble,
+ functionalize,
+ grad,
+ grad_and_value,
+ hessian,
+ jacfwd,
+ jacrev,
+ jvp,
+ make_functional,
+ make_functional_with_buffers,
+ vjp,
+ vmap,
+)
+
+# utilities. Maybe these should go in their own namespace in the future?
+from torch._functorch.make_functional import (
+ FunctionalModule,
+ FunctionalModuleWithBuffers,
+)
+
+# Was never documented
+from torch._functorch.python_key import make_fx
+
+
+# Top-level APIs. Please think carefully before adding something to the
+# top-level namespace:
+# - private helper functions should go into torch._functorch
+# - very experimental things should go into functorch.experimental
+# - compilation related things should go into functorch.compile
+
+
+__version__ = torch.__version__
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/admin.datatransfer_v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/admin.datatransfer_v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..6b5692623f8994427e700acef37635ce4924fb6a
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/admin.datatransfer_v1.json
@@ -0,0 +1,453 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/admin.datatransfer": {
+"description": "View and manage data transfers between users in your organization"
+},
+"https://www.googleapis.com/auth/admin.datatransfer.readonly": {
+"description": "View data transfers between users in your organization"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://admin.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "DataTransfer",
+"description": "Admin SDK lets administrators of enterprise domains to view and manage resources like user, groups etc. It also provides audit and usage reports of domain.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/admin-sdk/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "admin:datatransfer_v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://admin.mtls.googleapis.com/",
+"name": "admin",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"packagePath": "admin",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"applications": {
+"methods": {
+"get": {
+"description": "Retrieves information about an application for the given application ID.",
+"flatPath": "admin/datatransfer/v1/applications/{applicationId}",
+"httpMethod": "GET",
+"id": "datatransfer.applications.get",
+"parameterOrder": [
+"applicationId"
+],
+"parameters": {
+"applicationId": {
+"description": "ID of the application resource to be retrieved.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "admin/datatransfer/v1/applications/{applicationId}",
+"response": {
+"$ref": "Application"
+},
+"scopes": [
+"https://www.googleapis.com/auth/admin.datatransfer",
+"https://www.googleapis.com/auth/admin.datatransfer.readonly"
+]
+},
+"list": {
+"description": "Lists the applications available for data transfer for a customer.",
+"flatPath": "admin/datatransfer/v1/applications",
+"httpMethod": "GET",
+"id": "datatransfer.applications.list",
+"parameterOrder": [],
+"parameters": {
+"customerId": {
+"description": "Immutable ID of the Google Workspace account.",
+"location": "query",
+"type": "string"
+},
+"maxResults": {
+"description": "Maximum number of results to return. Default is 100.",
+"format": "int32",
+"location": "query",
+"maximum": "500",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token to specify next page in the list.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "admin/datatransfer/v1/applications",
+"response": {
+"$ref": "ApplicationsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/admin.datatransfer",
+"https://www.googleapis.com/auth/admin.datatransfer.readonly"
+]
+}
+}
+},
+"transfers": {
+"methods": {
+"get": {
+"description": "Retrieves a data transfer request by its resource ID.",
+"flatPath": "admin/datatransfer/v1/transfers/{dataTransferId}",
+"httpMethod": "GET",
+"id": "datatransfer.transfers.get",
+"parameterOrder": [
+"dataTransferId"
+],
+"parameters": {
+"dataTransferId": {
+"description": "ID of the resource to be retrieved. This is returned in the response from the insert method.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "admin/datatransfer/v1/transfers/{dataTransferId}",
+"response": {
+"$ref": "DataTransfer"
+},
+"scopes": [
+"https://www.googleapis.com/auth/admin.datatransfer",
+"https://www.googleapis.com/auth/admin.datatransfer.readonly"
+]
+},
+"insert": {
+"description": "Inserts a data transfer request. See the [Transfer parameters](/admin-sdk/data-transfer/v1/parameters) reference for specific application requirements.",
+"flatPath": "admin/datatransfer/v1/transfers",
+"httpMethod": "POST",
+"id": "datatransfer.transfers.insert",
+"parameterOrder": [],
+"parameters": {},
+"path": "admin/datatransfer/v1/transfers",
+"request": {
+"$ref": "DataTransfer"
+},
+"response": {
+"$ref": "DataTransfer"
+},
+"scopes": [
+"https://www.googleapis.com/auth/admin.datatransfer"
+]
+},
+"list": {
+"description": "Lists the transfers for a customer by source user, destination user, or status.",
+"flatPath": "admin/datatransfer/v1/transfers",
+"httpMethod": "GET",
+"id": "datatransfer.transfers.list",
+"parameterOrder": [],
+"parameters": {
+"customerId": {
+"description": "Immutable ID of the Google Workspace account.",
+"location": "query",
+"type": "string"
+},
+"maxResults": {
+"description": "Maximum number of results to return. Default is 100.",
+"format": "int32",
+"location": "query",
+"maximum": "500",
+"minimum": "1",
+"type": "integer"
+},
+"newOwnerUserId": {
+"description": "Destination user's profile ID.",
+"location": "query",
+"type": "string"
+},
+"oldOwnerUserId": {
+"description": "Source user's profile ID.",
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Token to specify the next page in the list.",
+"location": "query",
+"type": "string"
+},
+"status": {
+"description": "Status of the transfer.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "admin/datatransfer/v1/transfers",
+"response": {
+"$ref": "DataTransfersListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/admin.datatransfer",
+"https://www.googleapis.com/auth/admin.datatransfer.readonly"
+]
+}
+}
+}
+},
+"revision": "20240618",
+"rootUrl": "https://admin.googleapis.com/",
+"schemas": {
+"Application": {
+"description": "Application resources represent applications installed on the domain that support transferring ownership of user data.",
+"id": "Application",
+"properties": {
+"etag": {
+"description": "Etag of the resource.",
+"type": "string"
+},
+"id": {
+"description": "The application's ID. Retrievable by using the [`applications.list()`](/admin-sdk/data-transfer/reference/rest/v1/applications/list) method.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"default": "admin#datatransfer#ApplicationResource",
+"description": "Identifies the resource as a DataTransfer Application Resource.",
+"type": "string"
+},
+"name": {
+"description": "The application's name.",
+"type": "string"
+},
+"transferParams": {
+"description": "The list of all possible transfer parameters for this application. These parameters select which categories of the user's data to transfer.",
+"items": {
+"$ref": "ApplicationTransferParam"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ApplicationDataTransfer": {
+"description": "Template to map fields of ApplicationDataTransfer resource.",
+"id": "ApplicationDataTransfer",
+"properties": {
+"applicationId": {
+"description": "The application's ID.",
+"format": "int64",
+"type": "string"
+},
+"applicationTransferParams": {
+"description": "The transfer parameters for the application. These parameters are used to select the data which will get transferred in context of this application. For more information about the specific values available for each application, see the [Transfer parameters](/admin-sdk/data-transfer/v1/parameters) reference.",
+"items": {
+"$ref": "ApplicationTransferParam"
+},
+"type": "array"
+},
+"applicationTransferStatus": {
+"description": "Read-only. Current status of transfer for this application.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ApplicationTransferParam": {
+"description": "Template for application transfer parameters.",
+"id": "ApplicationTransferParam",
+"properties": {
+"key": {
+"description": "The type of the transfer parameter, such as `PRIVACY_LEVEL`.",
+"type": "string"
+},
+"value": {
+"description": "The value of the transfer parameter, such as `PRIVATE` or `SHARED`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ApplicationsListResponse": {
+"description": "Template for a collection of Applications.",
+"id": "ApplicationsListResponse",
+"properties": {
+"applications": {
+"description": "The list of applications that support data transfer and are also installed for the customer.",
+"items": {
+"$ref": "Application"
+},
+"type": "array"
+},
+"etag": {
+"description": "ETag of the resource.",
+"type": "string"
+},
+"kind": {
+"default": "admin#datatransfer#applicationsList",
+"description": "Identifies the resource as a collection of Applications.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Token to specify the next page in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DataTransfer": {
+"description": "A Transfer resource represents the transfer of the ownership of user data between users.",
+"id": "DataTransfer",
+"properties": {
+"applicationDataTransfers": {
+"description": "The list of per-application data transfer resources. It contains details of the applications associated with this transfer resource, and also specifies the applications for which data transfer has to be done at the time of the transfer resource creation.",
+"items": {
+"$ref": "ApplicationDataTransfer"
+},
+"type": "array"
+},
+"etag": {
+"description": "ETag of the resource.",
+"type": "string"
+},
+"id": {
+"description": "Read-only. The transfer's ID.",
+"type": "string"
+},
+"kind": {
+"default": "admin#datatransfer#DataTransfer",
+"description": "Identifies the resource as a DataTransfer request.",
+"type": "string"
+},
+"newOwnerUserId": {
+"description": "ID of the user to whom the data is being transferred.",
+"type": "string"
+},
+"oldOwnerUserId": {
+"description": "ID of the user whose data is being transferred.",
+"type": "string"
+},
+"overallTransferStatusCode": {
+"description": "Read-only. Overall transfer status.",
+"type": "string"
+},
+"requestTime": {
+"description": "Read-only. The time at which the data transfer was requested.",
+"format": "date-time",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DataTransfersListResponse": {
+"description": "Template for a collection of DataTransfer resources.",
+"id": "DataTransfersListResponse",
+"properties": {
+"dataTransfers": {
+"description": "List of data transfer requests.",
+"items": {
+"$ref": "DataTransfer"
+},
+"type": "array"
+},
+"etag": {
+"description": "ETag of the resource.",
+"type": "string"
+},
+"kind": {
+"default": "admin#datatransfer#dataTransfersList",
+"description": "Identifies the resource as a collection of data transfer requests.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Token to specify the next page in the list.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Admin SDK API",
+"version": "datatransfer_v1"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/alloydb.v1beta.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/alloydb.v1beta.json
new file mode 100644
index 0000000000000000000000000000000000000000..5083818032d0608dd2fad72d904ffcfdf3ea18b6
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/alloydb.v1beta.json
@@ -0,0 +1,5484 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://alloydb.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud AlloyDB Admin",
+"description": "AlloyDB for PostgreSQL is an open source-compatible database service that provides a powerful option for migrating, modernizing, or building commercial-grade applications. It offers full compatibility with standard PostgreSQL, and is more than 4x faster for transactional workloads and up to 100x faster for analytical queries than standard PostgreSQL in our performance tests. AlloyDB for PostgreSQL offers a 99.99 percent availability SLA inclusive of maintenance. AlloyDB is optimized for the most demanding use cases, allowing you to build new applications that require high transaction throughput, large database sizes, or multiple read resources; scale existing PostgreSQL workloads with no application changes; and modernize legacy proprietary databases. ",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/alloydb/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "alloydb:v1beta",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://alloydb.mtls.googleapis.com/",
+"name": "alloydb",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleCloudLocationLocation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1beta/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}/locations",
+"response": {
+"$ref": "GoogleCloudLocationListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"backups": {
+"methods": {
+"create": {
+"description": "Creates a new Backup in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/backups",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.backups.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"backupId": {
+"description": "Required. ID of the requesting object.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Value for parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, the backend validates the request, but doesn't actually execute it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+parent}/backups",
+"request": {
+"$ref": "Backup"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Backup.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/backups/{backupsId}",
+"httpMethod": "DELETE",
+"id": "alloydb.projects.locations.backups.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The current etag of the Backup. If an etag is provided and does not match the current etag of the Backup, deletion will be blocked and an ABORTED error will be returned.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Name of the resource. For the required format, see the comment on the Backup.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, the backend validates the request, but doesn't actually execute it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Backup.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/backups/{backupsId}",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.backups.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the resource",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Backup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Backups in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/backups",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.backups.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filtering results",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Hint for how to order the results",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent value for ListBackupsRequest",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/backups",
+"response": {
+"$ref": "ListBackupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Backup.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/backups/{backupsId}",
+"httpMethod": "PATCH",
+"id": "alloydb.projects.locations.backups.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, update succeeds even if instance is not found. In that case, a new backup is created and `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id} where the cluster and backup ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the backup resource name is the name of the parent resource: * projects/{project}/locations/{region}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the Backup resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, the backend validates the request, but doesn't actually execute it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+name}",
+"request": {
+"$ref": "Backup"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"clusters": {
+"methods": {
+"create": {
+"description": "Creates a new Cluster in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"clusterId": {
+"description": "Required. ID of the requesting object.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The location of the new cluster. For the required format, see the comment on the Cluster.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+parent}/clusters",
+"request": {
+"$ref": "Cluster"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"createsecondary": {
+"description": "Creates a cluster of type SECONDARY in the given location using the primary cluster as the source.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters:createsecondary",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.createsecondary",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"clusterId": {
+"description": "Required. ID of the requesting object (the secondary cluster).",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The location of the new cluster. For the required format, see the comment on the Cluster.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+parent}/clusters:createsecondary",
+"request": {
+"$ref": "Cluster"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Cluster.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}",
+"httpMethod": "DELETE",
+"id": "alloydb.projects.locations.clusters.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The current etag of the Cluster. If an etag is provided and does not match the current etag of the Cluster, deletion will be blocked and an ABORTED error will be returned.",
+"location": "query",
+"type": "string"
+},
+"force": {
+"description": "Optional. Whether to cascade delete child instances for given cluster.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Cluster.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"export": {
+"description": "Exports data from the cluster. Imperative only.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:export",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.export",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the cluster.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:export",
+"request": {
+"$ref": "ExportClusterRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Cluster.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.clusters.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Cluster.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Optional. The view of the cluster to return. Returns all default fields if not set.",
+"enum": [
+"CLUSTER_VIEW_UNSPECIFIED",
+"CLUSTER_VIEW_BASIC",
+"CLUSTER_VIEW_CONTINUOUS_BACKUP"
+],
+"enumDescriptions": [
+"CLUSTER_VIEW_UNSPECIFIED Not specified, equivalent to BASIC.",
+"BASIC server responses include all the relevant cluster details, excluding Cluster.ContinuousBackupInfo.EarliestRestorableTime and other view-specific fields. The default value.",
+"CONTINUOUS_BACKUP response returns all the fields from BASIC plus the earliest restorable time if continuous backups are enabled. May increase latency."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Cluster"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Clusters in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.clusters.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filtering results",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Hint for how to order the results",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the parent resource. For the required format, see the comment on the Cluster.name field. Additionally, you can perform an aggregated list operation by specifying a value with the following format: * projects/{project}/locations/-",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/clusters",
+"response": {
+"$ref": "ListClustersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Cluster.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}",
+"httpMethod": "PATCH",
+"id": "alloydb.projects.locations.clusters.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, update succeeds even if cluster is not found. In that case, a new cluster is created and `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. The name of the cluster resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id} where the cluster ID segment should satisfy the regex expression `[a-z0-9-]+`. For more details see https://google.aip.dev/122. The prefix of the cluster resource name is the name of the parent resource: * projects/{project}/locations/{region}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the Cluster resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+name}",
+"request": {
+"$ref": "Cluster"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"promote": {
+"description": "Promotes a SECONDARY cluster. This turns down replication from the PRIMARY cluster and promotes a secondary cluster into its own standalone cluster. Imperative only.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:promote",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.promote",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Cluster.name field",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:promote",
+"request": {
+"$ref": "PromoteClusterRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"restore": {
+"description": "Creates a new Cluster in a given project and location, with a volume restored from the provided source, either a backup ID or a point-in-time and a source cluster.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters:restore",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.restore",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the parent resource. For the required format, see the comment on the Cluster.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/clusters:restore",
+"request": {
+"$ref": "RestoreClusterRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"restoreFromCloudSQL": {
+"description": "Restores an AlloyDB cluster from a CloudSQL resource.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters:restoreFromCloudSQL",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.restoreFromCloudSQL",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The location of the new cluster. For the required format, see the comment on Cluster.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/clusters:restoreFromCloudSQL",
+"request": {
+"$ref": "RestoreFromCloudSQLRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"switchover": {
+"description": "Switches the roles of PRIMARY and SECONDARY clusters without any data loss. This promotes the SECONDARY cluster to PRIMARY and sets up the original PRIMARY cluster to replicate from this newly promoted cluster.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:switchover",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.switchover",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Cluster.name field",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:switchover",
+"request": {
+"$ref": "SwitchoverClusterRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"upgrade": {
+"description": "Upgrades a single Cluster. Imperative only.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:upgrade",
+"httpMethod": "PATCH",
+"id": "alloydb.projects.locations.clusters.upgrade",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the cluster.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:upgrade",
+"request": {
+"$ref": "UpgradeClusterRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"instances": {
+"methods": {
+"create": {
+"description": "Creates a new Instance in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.instances.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"instanceId": {
+"description": "Required. ID of the requesting object.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the parent resource. For the required format, see the comment on the Instance.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+parent}/instances",
+"request": {
+"$ref": "Instance"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"createsecondary": {
+"description": "Creates a new SECONDARY Instance in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances:createsecondary",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.instances.createsecondary",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"instanceId": {
+"description": "Required. ID of the requesting object.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the parent resource. For the required format, see the comment on the Instance.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+parent}/instances:createsecondary",
+"request": {
+"$ref": "Instance"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Instance.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances/{instancesId}",
+"httpMethod": "DELETE",
+"id": "alloydb.projects.locations.clusters.instances.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The current etag of the Instance. If an etag is provided and does not match the current etag of the Instance, deletion will be blocked and an ABORTED error will be returned.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Instance.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"failover": {
+"description": "Forces a Failover for a highly available instance. Failover promotes the HA standby instance as the new primary. Imperative only.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances/{instancesId}:failover",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.instances.failover",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Instance.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:failover",
+"request": {
+"$ref": "FailoverInstanceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Instance.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances/{instancesId}",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.clusters.instances.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Instance.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "The view of the instance to return.",
+"enum": [
+"INSTANCE_VIEW_UNSPECIFIED",
+"INSTANCE_VIEW_BASIC",
+"INSTANCE_VIEW_FULL"
+],
+"enumDescriptions": [
+"INSTANCE_VIEW_UNSPECIFIED Not specified, equivalent to BASIC.",
+"BASIC server responses for a primary or read instance include all the relevant instance details, excluding the details of each node in the instance. The default value.",
+"FULL response is equivalent to BASIC for primary instance (for now). For read pool instance, this includes details of each node in the pool."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Instance"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getConnectionInfo": {
+"description": "Get instance metadata used for a connection.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances/{instancesId}/connectionInfo",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.clusters.instances.getConnectionInfo",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the parent resource. The required format is: projects/{project}/locations/{location}/clusters/{cluster}/instances/{instance}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/connectionInfo",
+"response": {
+"$ref": "ConnectionInfo"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"injectFault": {
+"description": "Injects fault in an instance. Imperative only.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances/{instancesId}:injectFault",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.instances.injectFault",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Instance.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:injectFault",
+"request": {
+"$ref": "InjectFaultRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Instances in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.clusters.instances.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filtering results",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Hint for how to order the results",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the parent resource. For the required format, see the comment on the Instance.name field. Additionally, you can perform an aggregated list operation by specifying a value with one of the following formats: * projects/{project}/locations/-/clusters/- * projects/{project}/locations/{region}/clusters/-",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/instances",
+"response": {
+"$ref": "ListInstancesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Instance.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances/{instancesId}",
+"httpMethod": "PATCH",
+"id": "alloydb.projects.locations.clusters.instances.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, update succeeds even if instance is not found. In that case, a new instance is created and `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. The name of the instance resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id} where the cluster and instance ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the instance resource name is the name of the parent resource: * projects/{project}/locations/{region}/clusters/{cluster_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the Instance resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+name}",
+"request": {
+"$ref": "Instance"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"restart": {
+"description": "Restart an Instance in a cluster. Imperative only.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/instances/{instancesId}:restart",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.instances.restart",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the Instance.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:restart",
+"request": {
+"$ref": "RestartInstanceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"users": {
+"methods": {
+"create": {
+"description": "Creates a new User in a given project, location, and cluster.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/users",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.clusters.users.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Value for parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"userId": {
+"description": "Required. ID of the requesting object.",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, the backend validates the request, but doesn't actually execute it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+parent}/users",
+"request": {
+"$ref": "User"
+},
+"response": {
+"$ref": "User"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single User.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/users/{usersId}",
+"httpMethod": "DELETE",
+"id": "alloydb.projects.locations.clusters.users.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the User.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/users/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, the backend validates the request, but doesn't actually execute it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single User.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/users/{usersId}",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.clusters.users.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource. For the required format, see the comment on the User.name field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/users/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "User"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Users in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/users",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.clusters.users.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filtering results",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Hint for how to order the results",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent value for ListUsersRequest",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/users",
+"response": {
+"$ref": "ListUsersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single User.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/users/{usersId}",
+"httpMethod": "PATCH",
+"id": "alloydb.projects.locations.clusters.users.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. Allow missing fields in the update mask.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. Name of the resource in the form of projects/{project}/locations/{location}/cluster/{cluster}/users/{user}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/users/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the User resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, the backend validates the request, but doesn't actually execute it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta/{+name}",
+"request": {
+"$ref": "User"
+},
+"response": {
+"$ref": "User"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "alloydb.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:cancel",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "alloydb.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"supportedDatabaseFlags": {
+"methods": {
+"list": {
+"description": "Lists SupportedDatabaseFlags for a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/supportedDatabaseFlags",
+"httpMethod": "GET",
+"id": "alloydb.projects.locations.supportedDatabaseFlags.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Requested page size. Server may return fewer items than requested. If unspecified, server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the parent resource. The required format is: * projects/{project}/locations/{location} Regardless of the parent specified here, as long it is contains a valid project and location, the service will return a static list of supported flags resources. Note that we do not yet support region-specific flags.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/supportedDatabaseFlags",
+"response": {
+"$ref": "ListSupportedDatabaseFlagsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241228",
+"rootUrl": "https://alloydb.googleapis.com/",
+"schemas": {
+"AuthorizedNetwork": {
+"description": "AuthorizedNetwork contains metadata for an authorized network.",
+"id": "AuthorizedNetwork",
+"properties": {
+"cidrRange": {
+"description": "CIDR range for one authorzied network of the instance.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AutomatedBackupPolicy": {
+"description": "Message describing the user-specified automated backup policy. All fields in the automated backup policy are optional. Defaults for each field are provided if they are not set.",
+"id": "AutomatedBackupPolicy",
+"properties": {
+"backupWindow": {
+"description": "The length of the time window during which a backup can be taken. If a backup does not succeed within this time window, it will be canceled and considered failed. The backup window must be at least 5 minutes long. There is no upper bound on the window. If not set, it defaults to 1 hour.",
+"format": "google-duration",
+"type": "string"
+},
+"enabled": {
+"description": "Whether automated automated backups are enabled. If not set, defaults to true.",
+"type": "boolean"
+},
+"encryptionConfig": {
+"$ref": "EncryptionConfig",
+"description": "Optional. The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels to apply to backups created using this configuration.",
+"type": "object"
+},
+"location": {
+"description": "The location where the backup will be stored. Currently, the only supported option is to store the backup in the same region as the cluster. If empty, defaults to the region of the cluster.",
+"type": "string"
+},
+"quantityBasedRetention": {
+"$ref": "QuantityBasedRetention",
+"description": "Quantity-based Backup retention policy to retain recent backups."
+},
+"timeBasedRetention": {
+"$ref": "TimeBasedRetention",
+"description": "Time-based Backup retention policy."
+},
+"weeklySchedule": {
+"$ref": "WeeklySchedule",
+"description": "Weekly schedule for the Backup."
+}
+},
+"type": "object"
+},
+"Backup": {
+"description": "Message describing Backup object",
+"id": "Backup",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
+"type": "object"
+},
+"clusterName": {
+"description": "Required. The full resource name of the backup source cluster (e.g., projects/{project}/locations/{region}/clusters/{cluster_id}).",
+"type": "string"
+},
+"clusterUid": {
+"description": "Output only. The system-generated UID of the cluster which was used to create this resource.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Create time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"databaseVersion": {
+"description": "Output only. The database engine major version of the cluster this backup was created from. Any restored cluster created from this backup will have the same database version.",
+"enum": [
+"DATABASE_VERSION_UNSPECIFIED",
+"POSTGRES_13",
+"POSTGRES_14",
+"POSTGRES_15",
+"POSTGRES_16"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"This is an unknown database version.",
+"DEPRECATED - The database version is Postgres 13.",
+"The database version is Postgres 14.",
+"The database version is Postgres 15.",
+"The database version is Postgres 16."
+],
+"readOnly": true,
+"type": "string"
+},
+"deleteTime": {
+"description": "Output only. Delete time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "User-provided description of the backup.",
+"type": "string"
+},
+"displayName": {
+"description": "User-settable and human-readable display name for the Backup.",
+"type": "string"
+},
+"encryptionConfig": {
+"$ref": "EncryptionConfig",
+"description": "Optional. The encryption config can be specified to encrypt the backup with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
+},
+"encryptionInfo": {
+"$ref": "EncryptionInfo",
+"description": "Output only. The encryption information for the backup.",
+"readOnly": true
+},
+"etag": {
+"description": "For Resource freshness validation (https://google.aip.dev/154)",
+"type": "string"
+},
+"expiryQuantity": {
+"$ref": "QuantityBasedExpiry",
+"description": "Output only. The QuantityBasedExpiry of the backup, specified by the backup's retention policy. Once the expiry quantity is over retention, the backup is eligible to be garbage collected.",
+"readOnly": true
+},
+"expiryTime": {
+"description": "Output only. The time at which after the backup is eligible to be garbage collected. It is the duration specified by the backup's retention policy, added to the backup's create_time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels as key value pairs",
+"type": "object"
+},
+"name": {
+"description": "Output only. The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id} where the cluster and backup ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the backup resource name is the name of the parent resource: * projects/{project}/locations/{region}",
+"readOnly": true,
+"type": "string"
+},
+"reconciling": {
+"description": "Output only. Reconciling (https://google.aip.dev/128#reconciliation), if true, indicates that the service is actively updating the resource. This can happen due to user-triggered updates or system actions like failover or maintenance.",
+"readOnly": true,
+"type": "boolean"
+},
+"satisfiesPzs": {
+"description": "Output only. Reserved for future use.",
+"readOnly": true,
+"type": "boolean"
+},
+"sizeBytes": {
+"description": "Output only. The size of the backup in bytes.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state of the backup.",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"CREATING",
+"FAILED",
+"DELETING"
+],
+"enumDescriptions": [
+"The state of the backup is unknown.",
+"The backup is ready.",
+"The backup is creating.",
+"The backup failed.",
+"The backup is being deleted."
+],
+"readOnly": true,
+"type": "string"
+},
+"tags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Input only. Immutable. Tag keys/values directly bound to this resource. For example: ``` \"123/environment\": \"production\", \"123/costCenter\": \"marketing\" ```",
+"type": "object"
+},
+"type": {
+"description": "The backup type, which suggests the trigger for the backup.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"ON_DEMAND",
+"AUTOMATED",
+"CONTINUOUS"
+],
+"enumDescriptions": [
+"Backup Type is unknown.",
+"ON_DEMAND backups that were triggered by the customer (e.g., not AUTOMATED).",
+"AUTOMATED backups triggered by the automated backups scheduler pursuant to an automated backup policy.",
+"CONTINUOUS backups triggered by the automated backups scheduler due to a continuous backup policy."
+],
+"type": "string"
+},
+"uid": {
+"description": "Output only. The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Update time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"BackupSource": {
+"description": "Message describing a BackupSource.",
+"id": "BackupSource",
+"properties": {
+"backupName": {
+"description": "Required. The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backup_id}",
+"type": "string"
+},
+"backupUid": {
+"description": "Output only. The system-generated UID of the backup which was used to create this resource. The UID is generated when the backup is created, and it is retained until the backup is deleted.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClientConnectionConfig": {
+"description": "Client connection configuration",
+"id": "ClientConnectionConfig",
+"properties": {
+"requireConnectors": {
+"description": "Optional. Configuration to enforce connectors only (ex: AuthProxy) connections to the database.",
+"type": "boolean"
+},
+"sslConfig": {
+"$ref": "SslConfig",
+"description": "Optional. SSL configuration option for this instance."
+}
+},
+"type": "object"
+},
+"CloudControl2SharedOperationsReconciliationOperationMetadata": {
+"description": "Operation metadata returned by the CLH during resource state reconciliation.",
+"id": "CloudControl2SharedOperationsReconciliationOperationMetadata",
+"properties": {
+"deleteResource": {
+"deprecated": true,
+"description": "DEPRECATED. Use exclusive_action instead.",
+"type": "boolean"
+},
+"exclusiveAction": {
+"description": "Excluisive action returned by the CLH.",
+"enum": [
+"UNKNOWN_REPAIR_ACTION",
+"DELETE",
+"RETRY"
+],
+"enumDeprecated": [
+false,
+true,
+false
+],
+"enumDescriptions": [
+"Unknown repair action.",
+"The resource has to be deleted. When using this bit, the CLH should fail the operation. DEPRECATED. Instead use DELETE_RESOURCE OperationSignal in SideChannel.",
+"This resource could not be repaired but the repair should be tried again at a later time. This can happen if there is a dependency that needs to be resolved first- e.g. if a parent resource must be repaired before a child resource."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudSQLBackupRunSource": {
+"description": "The source CloudSQL backup resource.",
+"id": "CloudSQLBackupRunSource",
+"properties": {
+"backupRunId": {
+"description": "Required. The CloudSQL backup run ID.",
+"format": "int64",
+"type": "string"
+},
+"instanceId": {
+"description": "Required. The CloudSQL instance ID.",
+"type": "string"
+},
+"project": {
+"description": "The project ID of the source CloudSQL instance. This should be the same as the AlloyDB cluster's project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Cluster": {
+"description": "A cluster is a collection of regional AlloyDB resources. It can include a primary instance and one or more read pool instances. All cluster resources share a storage layer, which scales as needed.",
+"id": "Cluster",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
+"type": "object"
+},
+"automatedBackupPolicy": {
+"$ref": "AutomatedBackupPolicy",
+"description": "The automated backup policy for this cluster. If no policy is provided then the default policy will be used. If backups are supported for the cluster, the default policy takes one backup a day, has a backup window of 1 hour, and retains backups for 14 days. For more information on the defaults, consult the documentation for the message type."
+},
+"backupSource": {
+"$ref": "BackupSource",
+"description": "Output only. Cluster created from backup.",
+"readOnly": true
+},
+"cloudsqlBackupRunSource": {
+"$ref": "CloudSQLBackupRunSource",
+"description": "Output only. Cluster created from CloudSQL snapshot.",
+"readOnly": true
+},
+"clusterType": {
+"description": "Output only. The type of the cluster. This is an output-only field and it's populated at the Cluster creation time or the Cluster promotion time. The cluster type is determined by which RPC was used to create the cluster (i.e. `CreateCluster` vs. `CreateSecondaryCluster`",
+"enum": [
+"CLUSTER_TYPE_UNSPECIFIED",
+"PRIMARY",
+"SECONDARY"
+],
+"enumDescriptions": [
+"The type of the cluster is unknown.",
+"Primary cluster that support read and write operations.",
+"Secondary cluster that is replicating from another region. This only supports read."
+],
+"readOnly": true,
+"type": "string"
+},
+"continuousBackupConfig": {
+"$ref": "ContinuousBackupConfig",
+"description": "Optional. Continuous backup configuration for this cluster."
+},
+"continuousBackupInfo": {
+"$ref": "ContinuousBackupInfo",
+"description": "Output only. Continuous backup properties for this cluster.",
+"readOnly": true
+},
+"createTime": {
+"description": "Output only. Create time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"databaseVersion": {
+"description": "Optional. The database engine major version. This is an optional field and it is populated at the Cluster creation time. If a database version is not supplied at cluster creation time, then a default database version will be used.",
+"enum": [
+"DATABASE_VERSION_UNSPECIFIED",
+"POSTGRES_13",
+"POSTGRES_14",
+"POSTGRES_15",
+"POSTGRES_16"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"This is an unknown database version.",
+"DEPRECATED - The database version is Postgres 13.",
+"The database version is Postgres 14.",
+"The database version is Postgres 15.",
+"The database version is Postgres 16."
+],
+"type": "string"
+},
+"deleteTime": {
+"description": "Output only. Delete time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "User-settable and human-readable display name for the Cluster.",
+"type": "string"
+},
+"encryptionConfig": {
+"$ref": "EncryptionConfig",
+"description": "Optional. The encryption config can be specified to encrypt the data disks and other persistent data resources of a cluster with a customer-managed encryption key (CMEK). When this field is not specified, the cluster will then use default encryption scheme to protect the user data."
+},
+"encryptionInfo": {
+"$ref": "EncryptionInfo",
+"description": "Output only. The encryption information for the cluster.",
+"readOnly": true
+},
+"etag": {
+"description": "For Resource freshness validation (https://google.aip.dev/154)",
+"type": "string"
+},
+"geminiConfig": {
+"$ref": "GeminiClusterConfig",
+"description": "Optional. Configuration parameters related to the Gemini in Databases add-on."
+},
+"initialUser": {
+"$ref": "UserPassword",
+"description": "Input only. Initial user to setup during cluster creation. Required. If used in `RestoreCluster` this is ignored."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels as key value pairs",
+"type": "object"
+},
+"maintenanceSchedule": {
+"$ref": "MaintenanceSchedule",
+"description": "Output only. The maintenance schedule for the cluster, generated for a specific rollout if a maintenance window is set.",
+"readOnly": true
+},
+"maintenanceUpdatePolicy": {
+"$ref": "MaintenanceUpdatePolicy",
+"description": "Optional. The maintenance update policy determines when to allow or deny updates."
+},
+"migrationSource": {
+"$ref": "MigrationSource",
+"description": "Output only. Cluster created via DMS migration.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. The name of the cluster resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id} where the cluster ID segment should satisfy the regex expression `[a-z0-9-]+`. For more details see https://google.aip.dev/122. The prefix of the cluster resource name is the name of the parent resource: * projects/{project}/locations/{region}",
+"readOnly": true,
+"type": "string"
+},
+"network": {
+"deprecated": true,
+"description": "Required. The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster. It is specified in the form: `projects/{project}/global/networks/{network_id}`. This is required to create a cluster. Deprecated, use network_config.network instead.",
+"type": "string"
+},
+"networkConfig": {
+"$ref": "NetworkConfig"
+},
+"primaryConfig": {
+"$ref": "PrimaryConfig",
+"description": "Output only. Cross Region replication config specific to PRIMARY cluster.",
+"readOnly": true
+},
+"pscConfig": {
+"$ref": "PscConfig",
+"description": "Optional. The configuration for Private Service Connect (PSC) for the cluster."
+},
+"reconciling": {
+"description": "Output only. Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Cluster does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance.",
+"readOnly": true,
+"type": "boolean"
+},
+"satisfiesPzs": {
+"description": "Output only. Reserved for future use.",
+"readOnly": true,
+"type": "boolean"
+},
+"secondaryConfig": {
+"$ref": "SecondaryConfig",
+"description": "Cross Region replication config specific to SECONDARY cluster."
+},
+"sslConfig": {
+"$ref": "SslConfig",
+"deprecated": true,
+"description": "SSL configuration for this AlloyDB cluster."
+},
+"state": {
+"description": "Output only. The current serving state of the cluster.",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"STOPPED",
+"EMPTY",
+"CREATING",
+"DELETING",
+"FAILED",
+"BOOTSTRAPPING",
+"MAINTENANCE",
+"PROMOTING"
+],
+"enumDescriptions": [
+"The state of the cluster is unknown.",
+"The cluster is active and running.",
+"The cluster is stopped. All instances in the cluster are stopped. Customers can start a stopped cluster at any point and all their instances will come back to life with same names and IP resources. In this state, customer pays for storage. Associated backups could also be present in a stopped cluster.",
+"The cluster is empty and has no associated resources. All instances, associated storage and backups have been deleted.",
+"The cluster is being created.",
+"The cluster is being deleted.",
+"The creation of the cluster failed.",
+"The cluster is bootstrapping with data from some other source. Direct mutations to the cluster (e.g. adding read pool) are not allowed.",
+"The cluster is under maintenance. AlloyDB regularly performs maintenance and upgrades on customer clusters. Updates on the cluster are not allowed while the cluster is in this state.",
+"The cluster is being promoted."
+],
+"readOnly": true,
+"type": "string"
+},
+"subscriptionType": {
+"description": "Optional. Subscription type of the cluster.",
+"enum": [
+"SUBSCRIPTION_TYPE_UNSPECIFIED",
+"STANDARD",
+"TRIAL"
+],
+"enumDescriptions": [
+"This is an unknown subscription type. By default, the subscription type is STANDARD.",
+"Standard subscription.",
+"Trial subscription."
+],
+"type": "string"
+},
+"tags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Input only. Immutable. Tag keys/values directly bound to this resource. For example: ``` \"123/environment\": \"production\", \"123/costCenter\": \"marketing\" ```",
+"type": "object"
+},
+"trialMetadata": {
+"$ref": "TrialMetadata",
+"description": "Output only. Metadata for free trial clusters",
+"readOnly": true
+},
+"uid": {
+"description": "Output only. The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Update time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClusterUpgradeDetails": {
+"description": "Upgrade details of a cluster. This cluster can be primary or secondary.",
+"id": "ClusterUpgradeDetails",
+"properties": {
+"clusterType": {
+"description": "Cluster type which can either be primary or secondary.",
+"enum": [
+"CLUSTER_TYPE_UNSPECIFIED",
+"PRIMARY",
+"SECONDARY"
+],
+"enumDescriptions": [
+"The type of the cluster is unknown.",
+"Primary cluster that support read and write operations.",
+"Secondary cluster that is replicating from another region. This only supports read."
+],
+"type": "string"
+},
+"databaseVersion": {
+"description": "Database version of the cluster after the upgrade operation. This will be the target version if the upgrade was successful otherwise it remains the same as that before the upgrade operation.",
+"enum": [
+"DATABASE_VERSION_UNSPECIFIED",
+"POSTGRES_13",
+"POSTGRES_14",
+"POSTGRES_15",
+"POSTGRES_16"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"This is an unknown database version.",
+"DEPRECATED - The database version is Postgres 13.",
+"The database version is Postgres 14.",
+"The database version is Postgres 15.",
+"The database version is Postgres 16."
+],
+"type": "string"
+},
+"instanceUpgradeDetails": {
+"description": "Upgrade details of the instances directly associated with this cluster.",
+"items": {
+"$ref": "InstanceUpgradeDetails"
+},
+"type": "array"
+},
+"name": {
+"description": "Normalized name of the cluster",
+"type": "string"
+},
+"stageInfo": {
+"description": "Array containing stage info associated with this cluster.",
+"items": {
+"$ref": "StageInfo"
+},
+"type": "array"
+},
+"upgradeStatus": {
+"description": "Upgrade status of the cluster.",
+"enum": [
+"STATUS_UNSPECIFIED",
+"NOT_STARTED",
+"IN_PROGRESS",
+"SUCCESS",
+"FAILED",
+"PARTIAL_SUCCESS",
+"CANCEL_IN_PROGRESS",
+"CANCELLED"
+],
+"enumDescriptions": [
+"Unspecified status.",
+"Not started.",
+"In progress.",
+"Operation succeeded.",
+"Operation failed.",
+"Operation partially succeeded.",
+"Cancel is in progress.",
+"Cancellation complete."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConnectionInfo": {
+"description": "ConnectionInfo singleton resource. https://google.aip.dev/156",
+"id": "ConnectionInfo",
+"properties": {
+"instanceUid": {
+"description": "Output only. The unique ID of the Instance.",
+"readOnly": true,
+"type": "string"
+},
+"ipAddress": {
+"description": "Output only. The private network IP address for the Instance. This is the default IP for the instance and is always created (even if enable_public_ip is set). This is the connection endpoint for an end-user application.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "The name of the ConnectionInfo singleton resource, e.g.: projects/{project}/locations/{location}/clusters/*/instances/*/connectionInfo This field currently has no semantic meaning.",
+"type": "string"
+},
+"pemCertificateChain": {
+"deprecated": true,
+"description": "Output only. The pem-encoded chain that may be used to verify the X.509 certificate. Expected to be in issuer-to-root order according to RFC 5246.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"pscDnsName": {
+"description": "Output only. The DNS name to use with PSC for the Instance.",
+"readOnly": true,
+"type": "string"
+},
+"publicIpAddress": {
+"description": "Output only. The public IP addresses for the Instance. This is available ONLY when enable_public_ip is set. This is the connection endpoint for an end-user application.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContinuousBackupConfig": {
+"description": "ContinuousBackupConfig describes the continuous backups recovery configurations of a cluster.",
+"id": "ContinuousBackupConfig",
+"properties": {
+"enabled": {
+"description": "Whether ContinuousBackup is enabled.",
+"type": "boolean"
+},
+"encryptionConfig": {
+"$ref": "EncryptionConfig",
+"description": "The encryption config can be specified to encrypt the backups with a customer-managed encryption key (CMEK). When this field is not specified, the backup will then use default encryption scheme to protect the user data."
+},
+"recoveryWindowDays": {
+"description": "The number of days that are eligible to restore from using PITR. To support the entire recovery window, backups and logs are retained for one day more than the recovery window. If not set, defaults to 14 days.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ContinuousBackupInfo": {
+"description": "ContinuousBackupInfo describes the continuous backup properties of a cluster.",
+"id": "ContinuousBackupInfo",
+"properties": {
+"earliestRestorableTime": {
+"description": "Output only. The earliest restorable time that can be restored to. Output only field.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"enabledTime": {
+"description": "Output only. When ContinuousBackup was most recently enabled. Set to null if ContinuousBackup is not enabled.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"encryptionInfo": {
+"$ref": "EncryptionInfo",
+"description": "Output only. The encryption information for the WALs and backups required for ContinuousBackup.",
+"readOnly": true
+},
+"schedule": {
+"description": "Output only. Days of the week on which a continuous backup is taken. Output only field. Ignored if passed into the request.",
+"items": {
+"enum": [
+"DAY_OF_WEEK_UNSPECIFIED",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY",
+"SUNDAY"
+],
+"enumDescriptions": [
+"The day of the week is unspecified.",
+"Monday",
+"Tuesday",
+"Wednesday",
+"Thursday",
+"Friday",
+"Saturday",
+"Sunday"
+],
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContinuousBackupSource": {
+"description": "Message describing a ContinuousBackupSource.",
+"id": "ContinuousBackupSource",
+"properties": {
+"cluster": {
+"description": "Required. The source cluster from which to restore. This cluster must have continuous backup enabled for this operation to succeed. For the required format, see the comment on the Cluster.name field.",
+"type": "string"
+},
+"pointInTime": {
+"description": "Required. The point in time to restore to.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CsvExportOptions": {
+"description": "Options for exporting data in CSV format.",
+"id": "CsvExportOptions",
+"properties": {
+"escapeCharacter": {
+"description": "Optional. Specifies the character that should appear before a data character that needs to be escaped. The default is the same as quote character. The value of this argument has to be a character in Hex ASCII Code.",
+"type": "string"
+},
+"fieldDelimiter": {
+"description": "Optional. Specifies the character that separates columns within each row (line) of the file. The default is comma. The value of this argument has to be a character in Hex ASCII Code.",
+"type": "string"
+},
+"quoteCharacter": {
+"description": "Optional. Specifies the quoting character to be used when a data value is quoted. The default is double-quote. The value of this argument has to be a character in Hex ASCII Code.",
+"type": "string"
+},
+"selectQuery": {
+"description": "Required. The SELECT query used to extract the data.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"EncryptionConfig": {
+"description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).",
+"id": "EncryptionConfig",
+"properties": {
+"kmsKeyName": {
+"description": "The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME]",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EncryptionInfo": {
+"description": "EncryptionInfo describes the encryption information of a cluster or a backup.",
+"id": "EncryptionInfo",
+"properties": {
+"encryptionType": {
+"description": "Output only. Type of encryption.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"GOOGLE_DEFAULT_ENCRYPTION",
+"CUSTOMER_MANAGED_ENCRYPTION"
+],
+"enumDescriptions": [
+"Encryption type not specified. Defaults to GOOGLE_DEFAULT_ENCRYPTION.",
+"The data is encrypted at rest with a key that is fully managed by Google. No key version will be populated. This is the default state.",
+"The data is encrypted at rest with a key that is managed by the customer. KMS key versions will be populated."
+],
+"readOnly": true,
+"type": "string"
+},
+"kmsKeyVersions": {
+"description": "Output only. Cloud KMS key versions that are being used to protect the database or the backup.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ExportClusterRequest": {
+"description": "Export cluster request.",
+"id": "ExportClusterRequest",
+"properties": {
+"csvExportOptions": {
+"$ref": "CsvExportOptions",
+"description": "Options for exporting data in CSV format. Required field to be set for CSV file type."
+},
+"database": {
+"description": "Required. Name of the database where the export command will be executed. Note - Value provided should be the same as expected from `SELECT current_database();` and NOT as a resource reference.",
+"type": "string"
+},
+"gcsDestination": {
+"$ref": "GcsDestination",
+"description": "Required. Option to export data to cloud storage."
+},
+"sqlExportOptions": {
+"$ref": "SqlExportOptions",
+"description": "Options for exporting data in SQL format. Required field to be set for SQL file type."
+}
+},
+"type": "object"
+},
+"FailoverInstanceRequest": {
+"description": "Message for triggering failover on an Instance",
+"id": "FailoverInstanceRequest",
+"properties": {
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GcsDestination": {
+"description": "Destination for Export. Export will be done to cloud storage.",
+"id": "GcsDestination",
+"properties": {
+"uri": {
+"description": "Required. The path to the file in Google Cloud Storage where the export will be stored. The URI is in the form `gs://bucketName/fileName`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GeminiClusterConfig": {
+"description": "Cluster level configuration parameters related to the Gemini in Databases add-on.",
+"id": "GeminiClusterConfig",
+"properties": {
+"entitled": {
+"description": "Output only. Whether the Gemini in Databases add-on is enabled for the cluster. It will be true only if the add-on has been enabled for the billing account corresponding to the cluster. Its status is toggled from the Admin Control Center (ACC) and cannot be toggled using AlloyDB's APIs.",
+"readOnly": true,
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GeminiInstanceConfig": {
+"description": "Instance level configuration parameters related to the Gemini in Databases add-on.",
+"id": "GeminiInstanceConfig",
+"properties": {
+"entitled": {
+"description": "Output only. Whether the Gemini in Databases add-on is enabled for the instance. It will be true only if the add-on has been enabled for the billing account corresponding to the instance. Its status is toggled from the Admin Control Center (ACC) and cannot be toggled using AlloyDB's APIs.",
+"readOnly": true,
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudLocationListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "GoogleCloudLocationListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "GoogleCloudLocationLocation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudLocationLocation": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "GoogleCloudLocationLocation",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeTimeOfDay": {
+"description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
+"id": "GoogleTypeTimeOfDay",
+"properties": {
+"hours": {
+"description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
+"format": "int32",
+"type": "integer"
+},
+"minutes": {
+"description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.",
+"format": "int32",
+"type": "integer"
+},
+"nanos": {
+"description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.",
+"format": "int32",
+"type": "integer"
+},
+"seconds": {
+"description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"InjectFaultRequest": {
+"description": "Message for triggering fault injection on an instance",
+"id": "InjectFaultRequest",
+"properties": {
+"faultType": {
+"description": "Required. The type of fault to be injected in an instance.",
+"enum": [
+"FAULT_TYPE_UNSPECIFIED",
+"STOP_VM"
+],
+"enumDescriptions": [
+"The fault type is unknown.",
+"Stop the VM"
+],
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Instance": {
+"description": "An Instance is a computing unit that an end customer can connect to. It's the main unit of computing resources in AlloyDB.",
+"id": "Instance",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Annotations to allow client tools to store small amount of arbitrary data. This is distinct from labels. https://google.aip.dev/128",
+"type": "object"
+},
+"availabilityType": {
+"description": "Availability type of an Instance. If empty, defaults to REGIONAL for primary instances. For read pools, availability_type is always UNSPECIFIED. Instances in the read pools are evenly distributed across available zones within the region (i.e. read pools with more than one node will have a node in at least two zones).",
+"enum": [
+"AVAILABILITY_TYPE_UNSPECIFIED",
+"ZONAL",
+"REGIONAL"
+],
+"enumDescriptions": [
+"This is an unknown Availability type.",
+"Zonal available instance.",
+"Regional (or Highly) available instance."
+],
+"type": "string"
+},
+"clientConnectionConfig": {
+"$ref": "ClientConnectionConfig",
+"description": "Optional. Client connection specific configurations"
+},
+"createTime": {
+"description": "Output only. Create time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"databaseFlags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Database flags. Set at the instance level. They are copied from the primary instance on secondary instance creation. Flags that have restrictions default to the value at primary instance on read instances during creation. Read instances can set new flags or override existing flags that are relevant for reads, for example, for enabling columnar cache on a read instance. Flags set on read instance might or might not be present on the primary instance. This is a list of \"key\": \"value\" pairs. \"key\": The name of the flag. These flags are passed at instance setup time, so include both server options and system variables for Postgres. Flags are specified with underscores, not hyphens. \"value\": The value of the flag. Booleans are set to **on** for true and **off** for false. This field must be omitted if the flag doesn't take a value.",
+"type": "object"
+},
+"deleteTime": {
+"description": "Output only. Delete time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "User-settable and human-readable display name for the Instance.",
+"type": "string"
+},
+"etag": {
+"description": "For Resource freshness validation (https://google.aip.dev/154)",
+"type": "string"
+},
+"gceZone": {
+"description": "The Compute Engine zone that the instance should serve from, per https://cloud.google.com/compute/docs/regions-zones This can ONLY be specified for ZONAL instances. If present for a REGIONAL instance, an error will be thrown. If this is absent for a ZONAL instance, instance is created in a random zone with available capacity.",
+"type": "string"
+},
+"geminiConfig": {
+"$ref": "GeminiInstanceConfig",
+"description": "Optional. Configuration parameters related to the Gemini in Databases add-on."
+},
+"instanceType": {
+"description": "Required. The type of the instance. Specified at creation time.",
+"enum": [
+"INSTANCE_TYPE_UNSPECIFIED",
+"PRIMARY",
+"READ_POOL",
+"SECONDARY"
+],
+"enumDescriptions": [
+"The type of the instance is unknown.",
+"PRIMARY instances support read and write operations.",
+"READ POOL instances support read operations only. Each read pool instance consists of one or more homogeneous nodes. * Read pool of size 1 can only have zonal availability. * Read pools with node count of 2 or more can have regional availability (nodes are present in 2 or more zones in a region).",
+"SECONDARY instances support read operations only. SECONDARY instance is a cross-region read replica"
+],
+"type": "string"
+},
+"ipAddress": {
+"description": "Output only. The IP address for the Instance. This is the connection endpoint for an end-user application.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels as key value pairs",
+"type": "object"
+},
+"machineConfig": {
+"$ref": "MachineConfig",
+"description": "Configurations for the machines that host the underlying database engine."
+},
+"name": {
+"description": "Output only. The name of the instance resource with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}/instances/{instance_id} where the cluster and instance ID segments should satisfy the regex expression `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`, e.g. 1-63 characters of lowercase letters, numbers, and dashes, starting with a letter, and ending with a letter or number. For more details see https://google.aip.dev/122. The prefix of the instance resource name is the name of the parent resource: * projects/{project}/locations/{region}/clusters/{cluster_id}",
+"readOnly": true,
+"type": "string"
+},
+"networkConfig": {
+"$ref": "InstanceNetworkConfig",
+"description": "Optional. Instance-level network configuration."
+},
+"nodes": {
+"description": "Output only. List of available read-only VMs in this instance, including the standby for a PRIMARY instance.",
+"items": {
+"$ref": "Node"
+},
+"readOnly": true,
+"type": "array"
+},
+"observabilityConfig": {
+"$ref": "ObservabilityInstanceConfig",
+"description": "Configuration for observability."
+},
+"outboundPublicIpAddresses": {
+"description": "Output only. All outbound public IP addresses configured for the instance.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"pscInstanceConfig": {
+"$ref": "PscInstanceConfig",
+"description": "Optional. The configuration for Private Service Connect (PSC) for the instance."
+},
+"publicIpAddress": {
+"description": "Output only. The public IP addresses for the Instance. This is available ONLY when enable_public_ip is set. This is the connection endpoint for an end-user application.",
+"readOnly": true,
+"type": "string"
+},
+"queryInsightsConfig": {
+"$ref": "QueryInsightsInstanceConfig",
+"description": "Configuration for query insights."
+},
+"readPoolConfig": {
+"$ref": "ReadPoolConfig",
+"description": "Read pool instance configuration. This is required if the value of instanceType is READ_POOL."
+},
+"reconciling": {
+"description": "Output only. Reconciling (https://google.aip.dev/128#reconciliation). Set to true if the current state of Instance does not match the user's intended state, and the service is actively updating the resource to reconcile them. This can happen due to user-triggered updates or system actions like failover or maintenance.",
+"readOnly": true,
+"type": "boolean"
+},
+"satisfiesPzs": {
+"description": "Output only. Reserved for future use.",
+"readOnly": true,
+"type": "boolean"
+},
+"state": {
+"description": "Output only. The current serving state of the instance.",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"STOPPED",
+"CREATING",
+"DELETING",
+"MAINTENANCE",
+"FAILED",
+"BOOTSTRAPPING",
+"PROMOTING"
+],
+"enumDescriptions": [
+"The state of the instance is unknown.",
+"The instance is active and running.",
+"The instance is stopped. Instance name and IP resources are preserved.",
+"The instance is being created.",
+"The instance is being deleted.",
+"The instance is down for maintenance.",
+"The creation of the instance failed or a fatal error occurred during an operation on the instance. Note: Instances in this state would tried to be auto-repaired. And Customers should be able to restart, update or delete these instances.",
+"Index 7 is used in the producer apis for ROLLED_BACK state. Keeping that index unused in case that state also needs to exposed via consumer apis in future. The instance has been configured to sync data from some other source.",
+"The instance is being promoted."
+],
+"readOnly": true,
+"type": "string"
+},
+"uid": {
+"description": "Output only. The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updatePolicy": {
+"$ref": "UpdatePolicy",
+"description": "Update policy that will be applied during instance update. This field is not persisted when you update the instance. To use a non-default update policy, you must specify explicitly specify the value in each update request."
+},
+"updateTime": {
+"description": "Output only. Update time stamp",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"writableNode": {
+"$ref": "Node",
+"description": "Output only. This is set for the read-write VM of the PRIMARY instance only.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"InstanceNetworkConfig": {
+"description": "Metadata related to instance-level network configuration.",
+"id": "InstanceNetworkConfig",
+"properties": {
+"authorizedExternalNetworks": {
+"description": "Optional. A list of external network authorized to access this instance.",
+"items": {
+"$ref": "AuthorizedNetwork"
+},
+"type": "array"
+},
+"enableOutboundPublicIp": {
+"description": "Optional. Enabling an outbound public IP address to support a database server sending requests out into the internet.",
+"type": "boolean"
+},
+"enablePublicIp": {
+"description": "Optional. Enabling public ip for the instance.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"InstanceUpgradeDetails": {
+"description": "Details regarding the upgrade of instaces associated with a cluster.",
+"id": "InstanceUpgradeDetails",
+"properties": {
+"instanceType": {
+"description": "Instance type.",
+"enum": [
+"INSTANCE_TYPE_UNSPECIFIED",
+"PRIMARY",
+"READ_POOL",
+"SECONDARY"
+],
+"enumDescriptions": [
+"The type of the instance is unknown.",
+"PRIMARY instances support read and write operations.",
+"READ POOL instances support read operations only. Each read pool instance consists of one or more homogeneous nodes. * Read pool of size 1 can only have zonal availability. * Read pools with node count of 2 or more can have regional availability (nodes are present in 2 or more zones in a region).",
+"SECONDARY instances support read operations only. SECONDARY instance is a cross-region read replica"
+],
+"type": "string"
+},
+"name": {
+"description": "Normalized name of the instance.",
+"type": "string"
+},
+"upgradeStatus": {
+"description": "Upgrade status of the instance.",
+"enum": [
+"STATUS_UNSPECIFIED",
+"NOT_STARTED",
+"IN_PROGRESS",
+"SUCCESS",
+"FAILED",
+"PARTIAL_SUCCESS",
+"CANCEL_IN_PROGRESS",
+"CANCELLED"
+],
+"enumDescriptions": [
+"Unspecified status.",
+"Not started.",
+"In progress.",
+"Operation succeeded.",
+"Operation failed.",
+"Operation partially succeeded.",
+"Cancel is in progress.",
+"Cancellation complete."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"IntegerRestrictions": {
+"description": "Restrictions on INTEGER type values.",
+"id": "IntegerRestrictions",
+"properties": {
+"maxValue": {
+"description": "The maximum value that can be specified, if applicable.",
+"format": "int64",
+"type": "string"
+},
+"minValue": {
+"description": "The minimum value that can be specified, if applicable.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListBackupsResponse": {
+"description": "Message for response to listing Backups",
+"id": "ListBackupsResponse",
+"properties": {
+"backups": {
+"description": "The list of Backup",
+"items": {
+"$ref": "Backup"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListClustersResponse": {
+"description": "Message for response to listing Clusters",
+"id": "ListClustersResponse",
+"properties": {
+"clusters": {
+"description": "The list of Cluster",
+"items": {
+"$ref": "Cluster"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListInstancesResponse": {
+"description": "Message for response to listing Instances",
+"id": "ListInstancesResponse",
+"properties": {
+"instances": {
+"description": "The list of Instance",
+"items": {
+"$ref": "Instance"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListSupportedDatabaseFlagsResponse": {
+"description": "Message for response to listing SupportedDatabaseFlags.",
+"id": "ListSupportedDatabaseFlagsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"supportedDatabaseFlags": {
+"description": "The list of SupportedDatabaseFlags.",
+"items": {
+"$ref": "SupportedDatabaseFlag"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListUsersResponse": {
+"description": "Message for response to listing Users",
+"id": "ListUsersResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"users": {
+"description": "The list of User",
+"items": {
+"$ref": "User"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MachineConfig": {
+"description": "MachineConfig describes the configuration of a machine.",
+"id": "MachineConfig",
+"properties": {
+"cpuCount": {
+"description": "The number of CPU's in the VM instance.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"MaintenanceSchedule": {
+"description": "MaintenanceSchedule stores the maintenance schedule generated from the MaintenanceUpdatePolicy, once a maintenance rollout is triggered, if MaintenanceWindow is set, and if there is no conflicting DenyPeriod. The schedule is cleared once the update takes place. This field cannot be manually changed; modify the MaintenanceUpdatePolicy instead.",
+"id": "MaintenanceSchedule",
+"properties": {
+"startTime": {
+"description": "Output only. The scheduled start time for the maintenance.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"MaintenanceUpdatePolicy": {
+"description": "MaintenanceUpdatePolicy defines the policy for system updates.",
+"id": "MaintenanceUpdatePolicy",
+"properties": {
+"maintenanceWindows": {
+"description": "Preferred windows to perform maintenance. Currently limited to 1.",
+"items": {
+"$ref": "MaintenanceWindow"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MaintenanceWindow": {
+"description": "MaintenanceWindow specifies a preferred day and time for maintenance.",
+"id": "MaintenanceWindow",
+"properties": {
+"day": {
+"description": "Preferred day of the week for maintenance, e.g. MONDAY, TUESDAY, etc.",
+"enum": [
+"DAY_OF_WEEK_UNSPECIFIED",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY",
+"SUNDAY"
+],
+"enumDescriptions": [
+"The day of the week is unspecified.",
+"Monday",
+"Tuesday",
+"Wednesday",
+"Thursday",
+"Friday",
+"Saturday",
+"Sunday"
+],
+"type": "string"
+},
+"startTime": {
+"$ref": "GoogleTypeTimeOfDay",
+"description": "Preferred time to start the maintenance operation on the specified day. Maintenance will start within 1 hour of this time."
+}
+},
+"type": "object"
+},
+"MigrationSource": {
+"description": "Subset of the source instance configuration that is available when reading the cluster resource.",
+"id": "MigrationSource",
+"properties": {
+"hostPort": {
+"description": "Output only. The host and port of the on-premises instance in host:port format",
+"readOnly": true,
+"type": "string"
+},
+"referenceId": {
+"description": "Output only. Place holder for the external source identifier(e.g DMS job name) that created the cluster.",
+"readOnly": true,
+"type": "string"
+},
+"sourceType": {
+"description": "Output only. Type of migration source.",
+"enum": [
+"MIGRATION_SOURCE_TYPE_UNSPECIFIED",
+"DMS"
+],
+"enumDescriptions": [
+"Migration source is unknown.",
+"DMS source means the cluster was created via DMS migration job."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"NetworkConfig": {
+"description": "Metadata related to network configuration.",
+"id": "NetworkConfig",
+"properties": {
+"allocatedIpRange": {
+"description": "Optional. Name of the allocated IP range for the private IP AlloyDB cluster, for example: \"google-managed-services-default\". If set, the instance IPs for this cluster will be created in the allocated range. The range name must comply with RFC 1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`. Field name is intended to be consistent with Cloud SQL.",
+"type": "string"
+},
+"network": {
+"description": "Optional. The resource link for the VPC network in which cluster resources are created and from which they are accessible via Private IP. The network must belong to the same project as the cluster. It is specified in the form: `projects/{project_number}/global/networks/{network_id}`. This is required to create a cluster.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Node": {
+"description": "Details of a single node in the instance. Nodes in an AlloyDB instance are ephemereal, they can change during update, failover, autohealing and resize operations.",
+"id": "Node",
+"properties": {
+"id": {
+"description": "Output only. The identifier of the VM e.g. \"test-read-0601-407e52be-ms3l\".",
+"readOnly": true,
+"type": "string"
+},
+"ip": {
+"description": "Output only. The private IP address of the VM e.g. \"10.57.0.34\".",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. Determined by state of the compute VM and postgres-service health. Compute VM state can have values listed in https://cloud.google.com/compute/docs/instances/instance-life-cycle and postgres-service health can have values: HEALTHY and UNHEALTHY.",
+"readOnly": true,
+"type": "string"
+},
+"zoneId": {
+"description": "Output only. The Compute Engine zone of the VM e.g. \"us-central1-b\".",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ObservabilityInstanceConfig": {
+"description": "Observability Instance specific configuration.",
+"id": "ObservabilityInstanceConfig",
+"properties": {
+"enabled": {
+"description": "Observability feature status for an instance. This flag is turned \"off\" by default.",
+"type": "boolean"
+},
+"maxQueryStringLength": {
+"description": "Query string length. The default value is 10k.",
+"format": "int32",
+"type": "integer"
+},
+"preserveComments": {
+"description": "Preserve comments in query string for an instance. This flag is turned \"off\" by default.",
+"type": "boolean"
+},
+"queryPlansPerMinute": {
+"description": "Number of query execution plans captured by Insights per minute for all queries combined. The default value is 200. Any integer between 0 to 200 is considered valid.",
+"format": "int32",
+"type": "integer"
+},
+"recordApplicationTags": {
+"description": "Record application tags for an instance. This flag is turned \"off\" by default.",
+"type": "boolean"
+},
+"trackActiveQueries": {
+"description": "Track actively running queries on the instance. If not set, this flag is \"off\" by default.",
+"type": "boolean"
+},
+"trackClientAddress": {
+"description": "Track client address for an instance. If not set, default value is \"off\".",
+"type": "boolean"
+},
+"trackWaitEventTypes": {
+"description": "Output only. Track wait event types during query execution for an instance. This flag is turned \"on\" by default but tracking is enabled only after observability enabled flag is also turned on. This is read-only flag and only modifiable by producer API.",
+"readOnly": true,
+"type": "boolean"
+},
+"trackWaitEvents": {
+"description": "Track wait events during query execution for an instance. This flag is turned \"on\" by default but tracking is enabled only after observability enabled flag is also turned on.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PrimaryConfig": {
+"description": "Configuration for the primary cluster. It has the list of clusters that are replicating from this cluster. This should be set if and only if the cluster is of type PRIMARY.",
+"id": "PrimaryConfig",
+"properties": {
+"secondaryClusterNames": {
+"description": "Output only. Names of the clusters that are replicating from this cluster.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"PromoteClusterRequest": {
+"description": "Message for promoting a Cluster",
+"id": "PromoteClusterRequest",
+"properties": {
+"etag": {
+"description": "Optional. The current etag of the Cluster. If an etag is provided and does not match the current etag of the Cluster, deletion will be blocked and an ABORTED error will be returned.",
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"PscConfig": {
+"description": "PscConfig contains PSC related configuration at a cluster level.",
+"id": "PscConfig",
+"properties": {
+"pscEnabled": {
+"description": "Optional. Create an instance that allows connections from Private Service Connect endpoints to the instance.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"PscInstanceConfig": {
+"description": "PscInstanceConfig contains PSC related configuration at an instance level.",
+"id": "PscInstanceConfig",
+"properties": {
+"allowedConsumerProjects": {
+"description": "Optional. List of consumer projects that are allowed to create PSC endpoints to service-attachments to this instance.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"pscDnsName": {
+"description": "Output only. The DNS name of the instance for PSC connectivity. Name convention: ...alloydb-psc.goog",
+"readOnly": true,
+"type": "string"
+},
+"serviceAttachmentLink": {
+"description": "Output only. The service attachment created when Private Service Connect (PSC) is enabled for the instance. The name of the resource will be in the format of `projects//regions//serviceAttachments/`",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"QuantityBasedExpiry": {
+"description": "A backup's position in a quantity-based retention queue, of backups with the same source cluster and type, with length, retention, specified by the backup's retention policy. Once the position is greater than the retention, the backup is eligible to be garbage collected. Example: 5 backups from the same source cluster and type with a quantity-based retention of 3 and denoted by backup_id (position, retention). Safe: backup_5 (1, 3), backup_4, (2, 3), backup_3 (3, 3). Awaiting garbage collection: backup_2 (4, 3), backup_1 (5, 3)",
+"id": "QuantityBasedExpiry",
+"properties": {
+"retentionCount": {
+"description": "Output only. The backup's position among its backups with the same source cluster and type, by descending chronological order create time(i.e. newest first).",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"totalRetentionCount": {
+"description": "Output only. The length of the quantity-based queue, specified by the backup's retention policy.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"QuantityBasedRetention": {
+"description": "A quantity based policy specifies that a certain number of the most recent successful backups should be retained.",
+"id": "QuantityBasedRetention",
+"properties": {
+"count": {
+"description": "The number of backups to retain.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"QueryInsightsInstanceConfig": {
+"description": "QueryInsights Instance specific configuration.",
+"id": "QueryInsightsInstanceConfig",
+"properties": {
+"queryPlansPerMinute": {
+"description": "Number of query execution plans captured by Insights per minute for all queries combined. The default value is 5. Any integer between 0 and 20 is considered valid.",
+"format": "uint32",
+"type": "integer"
+},
+"queryStringLength": {
+"description": "Query string length. The default value is 1024. Any integer between 256 and 4500 is considered valid.",
+"format": "uint32",
+"type": "integer"
+},
+"recordApplicationTags": {
+"description": "Record application tags for an instance. This flag is turned \"on\" by default.",
+"type": "boolean"
+},
+"recordClientAddress": {
+"description": "Record client address for an instance. Client address is PII information. This flag is turned \"on\" by default.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ReadPoolConfig": {
+"description": "Configuration for a read pool instance.",
+"id": "ReadPoolConfig",
+"properties": {
+"nodeCount": {
+"description": "Read capacity, i.e. number of nodes in a read pool instance.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"RestartInstanceRequest": {
+"id": "RestartInstanceRequest",
+"properties": {
+"nodeIds": {
+"description": "Optional. Full name of the nodes as obtained from INSTANCE_VIEW_FULL to restart upon. Applicable only to read instances.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"RestoreClusterRequest": {
+"description": "Message for restoring a Cluster from a backup or another cluster at a given point in time.",
+"id": "RestoreClusterRequest",
+"properties": {
+"backupSource": {
+"$ref": "BackupSource",
+"description": "Backup source."
+},
+"cluster": {
+"$ref": "Cluster",
+"description": "Required. The resource being created"
+},
+"clusterId": {
+"description": "Required. ID of the requesting object.",
+"type": "string"
+},
+"continuousBackupSource": {
+"$ref": "ContinuousBackupSource",
+"description": "ContinuousBackup source. Continuous backup needs to be enabled in the source cluster for this operation to succeed."
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"RestoreFromCloudSQLRequest": {
+"description": "Message for registering Restoring from CloudSQL resource.",
+"id": "RestoreFromCloudSQLRequest",
+"properties": {
+"cloudsqlBackupRunSource": {
+"$ref": "CloudSQLBackupRunSource",
+"description": "Cluster created from CloudSQL backup run."
+},
+"cluster": {
+"$ref": "Cluster",
+"description": "Required. The resource being created"
+},
+"clusterId": {
+"description": "Required. ID of the requesting object.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SecondaryConfig": {
+"description": "Configuration information for the secondary cluster. This should be set if and only if the cluster is of type SECONDARY.",
+"id": "SecondaryConfig",
+"properties": {
+"primaryClusterName": {
+"description": "The name of the primary cluster name with the format: * projects/{project}/locations/{region}/clusters/{cluster_id}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SqlExportOptions": {
+"description": "Options for exporting data in SQL format.",
+"id": "SqlExportOptions",
+"properties": {
+"cleanTargetObjects": {
+"description": "Optional. If true, output commands to DROP all the dumped database objects prior to outputting the commands for creating them.",
+"type": "boolean"
+},
+"ifExistTargetObjects": {
+"description": "Optional. If true, use DROP ... IF EXISTS commands to check for the object's existence before dropping it in clean_target_objects mode.",
+"type": "boolean"
+},
+"schemaOnly": {
+"description": "Optional. If true, only export the schema.",
+"type": "boolean"
+},
+"tables": {
+"description": "Optional. Tables to export from.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SslConfig": {
+"description": "SSL configuration.",
+"id": "SslConfig",
+"properties": {
+"caSource": {
+"description": "Optional. Certificate Authority (CA) source. Only CA_SOURCE_MANAGED is supported currently, and is the default value.",
+"enum": [
+"CA_SOURCE_UNSPECIFIED",
+"CA_SOURCE_MANAGED"
+],
+"enumDescriptions": [
+"Certificate Authority (CA) source not specified. Defaults to CA_SOURCE_MANAGED.",
+"Certificate Authority (CA) managed by the AlloyDB Cluster."
+],
+"type": "string"
+},
+"sslMode": {
+"description": "Optional. SSL mode. Specifies client-server SSL/TLS connection behavior.",
+"enum": [
+"SSL_MODE_UNSPECIFIED",
+"SSL_MODE_ALLOW",
+"SSL_MODE_REQUIRE",
+"SSL_MODE_VERIFY_CA",
+"ALLOW_UNENCRYPTED_AND_ENCRYPTED",
+"ENCRYPTED_ONLY"
+],
+"enumDeprecated": [
+false,
+true,
+true,
+true,
+false,
+false
+],
+"enumDescriptions": [
+"SSL mode is not specified. Defaults to ENCRYPTED_ONLY.",
+"SSL connections are optional. CA verification not enforced.",
+"SSL connections are required. CA verification not enforced. Clients may use locally self-signed certificates (default psql client behavior).",
+"SSL connections are required. CA verification enforced. Clients must have certificates signed by a Cluster CA, for example, using GenerateClientCertificate.",
+"SSL connections are optional. CA verification not enforced.",
+"SSL connections are required. CA verification not enforced."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"StageInfo": {
+"description": "Stage information for different stages in the upgrade process.",
+"id": "StageInfo",
+"properties": {
+"logsUrl": {
+"description": "logs_url is the URL for the logs associated with a stage if that stage has logs. Right now, only three stages have logs: ALLOYDB_PRECHECK, PG_UPGRADE_CHECK, PRIMARY_INSTANCE_UPGRADE.",
+"type": "string"
+},
+"stage": {
+"description": "The stage.",
+"enum": [
+"STAGE_UNSPECIFIED",
+"ALLOYDB_PRECHECK",
+"PG_UPGRADE_CHECK",
+"PREPARE_FOR_UPGRADE",
+"PRIMARY_INSTANCE_UPGRADE",
+"READ_POOL_INSTANCES_UPGRADE",
+"ROLLBACK",
+"CLEANUP"
+],
+"enumDescriptions": [
+"Unspecified stage.",
+"Pre-upgrade custom checks, not covered by pg_upgrade.",
+"Pre-upgrade pg_upgrade checks.",
+"Clone the original cluster.",
+"Upgrade the primary instance(downtime).",
+"This stage is read pool upgrade.",
+"Rollback in case of critical failures.",
+"Cleanup."
+],
+"type": "string"
+},
+"status": {
+"description": "Status of the stage.",
+"enum": [
+"STATUS_UNSPECIFIED",
+"NOT_STARTED",
+"IN_PROGRESS",
+"SUCCESS",
+"FAILED",
+"PARTIAL_SUCCESS",
+"CANCEL_IN_PROGRESS",
+"CANCELLED"
+],
+"enumDescriptions": [
+"Unspecified status.",
+"Not started.",
+"In progress.",
+"Operation succeeded.",
+"Operation failed.",
+"Operation partially succeeded.",
+"Cancel is in progress.",
+"Cancellation complete."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainAvailabilityConfiguration": {
+"description": "Configuration for availability of database instance",
+"id": "StorageDatabasecenterPartnerapiV1mainAvailabilityConfiguration",
+"properties": {
+"automaticFailoverRoutingConfigured": {
+"description": "Checks for existence of (multi-cluster) routing configuration that allows automatic failover to a different zone/region in case of an outage. Applicable to Bigtable resources.",
+"type": "boolean"
+},
+"availabilityType": {
+"description": "Availability type. Potential values: * `ZONAL`: The instance serves data from only one zone. Outages in that zone affect data accessibility. * `REGIONAL`: The instance can serve data from more than one zone in a region (it is highly available).",
+"enum": [
+"AVAILABILITY_TYPE_UNSPECIFIED",
+"ZONAL",
+"REGIONAL",
+"MULTI_REGIONAL",
+"AVAILABILITY_TYPE_OTHER"
+],
+"enumDescriptions": [
+"",
+"Zonal available instance.",
+"Regional available instance.",
+"Multi regional instance",
+"For rest of the other category"
+],
+"type": "string"
+},
+"crossRegionReplicaConfigured": {
+"description": "Checks for resources that are configured to have redundancy, and ongoing replication across regions",
+"type": "boolean"
+},
+"externalReplicaConfigured": {
+"type": "boolean"
+},
+"promotableReplicaConfigured": {
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainBackupConfiguration": {
+"description": "Configuration for automatic backups",
+"id": "StorageDatabasecenterPartnerapiV1mainBackupConfiguration",
+"properties": {
+"automatedBackupEnabled": {
+"description": "Whether customer visible automated backups are enabled on the instance.",
+"type": "boolean"
+},
+"backupRetentionSettings": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainRetentionSettings",
+"description": "Backup retention settings."
+},
+"pointInTimeRecoveryEnabled": {
+"description": "Whether point-in-time recovery is enabled. This is optional field, if the database service does not have this feature or metadata is not available in control plane, this can be omitted.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainBackupRun": {
+"description": "A backup run.",
+"id": "StorageDatabasecenterPartnerapiV1mainBackupRun",
+"properties": {
+"endTime": {
+"description": "The time the backup operation completed. REQUIRED",
+"format": "google-datetime",
+"type": "string"
+},
+"error": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainOperationError",
+"description": "Information about why the backup operation failed. This is only present if the run has the FAILED status. OPTIONAL"
+},
+"startTime": {
+"description": "The time the backup operation started. REQUIRED",
+"format": "google-datetime",
+"type": "string"
+},
+"status": {
+"description": "The status of this run. REQUIRED",
+"enum": [
+"STATUS_UNSPECIFIED",
+"SUCCESSFUL",
+"FAILED"
+],
+"enumDescriptions": [
+"",
+"The backup was successful.",
+"The backup was unsuccessful."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainCompliance": {
+"description": "Contains compliance information about a security standard indicating unmet recommendations.",
+"id": "StorageDatabasecenterPartnerapiV1mainCompliance",
+"properties": {
+"standard": {
+"description": "Industry-wide compliance standards or benchmarks, such as CIS, PCI, and OWASP.",
+"type": "string"
+},
+"version": {
+"description": "Version of the standard or benchmark, for example, 1.1",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainCustomMetadataData": {
+"description": "Any custom metadata associated with the resource. e.g. A spanner instance can have multiple databases with its own unique metadata. Information for these individual databases can be captured in custom metadata data",
+"id": "StorageDatabasecenterPartnerapiV1mainCustomMetadataData",
+"properties": {
+"internalResourceMetadata": {
+"description": "Metadata for individual internal resources in an instance. e.g. spanner instance can have multiple databases with unique configuration.",
+"items": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainInternalResourceMetadata"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainDatabaseResourceFeed": {
+"description": "DatabaseResourceFeed is the top level proto to be used to ingest different database resource level events into Condor platform.",
+"id": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceFeed",
+"properties": {
+"feedTimestamp": {
+"description": "Required. Timestamp when feed is generated.",
+"format": "google-datetime",
+"type": "string"
+},
+"feedType": {
+"description": "Required. Type feed to be ingested into condor",
+"enum": [
+"FEEDTYPE_UNSPECIFIED",
+"RESOURCE_METADATA",
+"OBSERVABILITY_DATA",
+"SECURITY_FINDING_DATA",
+"RECOMMENDATION_SIGNAL_DATA"
+],
+"enumDescriptions": [
+"",
+"Database resource metadata feed from control plane",
+"Database resource monitoring data",
+"Database resource security health signal data",
+"Database resource recommendation signal data"
+],
+"type": "string"
+},
+"observabilityMetricData": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainObservabilityMetricData"
+},
+"recommendationSignalData": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceRecommendationSignalData"
+},
+"resourceHealthSignalData": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceHealthSignalData"
+},
+"resourceId": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceId",
+"deprecated": true,
+"description": "Primary key associated with the Resource. resource_id is available in individual feed level as well."
+},
+"resourceMetadata": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceMetadata"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainDatabaseResourceHealthSignalData": {
+"description": "Common model for database resource health signal data.",
+"id": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceHealthSignalData",
+"properties": {
+"additionalMetadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Any other additional metadata",
+"type": "object"
+},
+"compliance": {
+"description": "Industry standards associated with this signal; if this signal is an issue, that could be a violation of the associated industry standard(s). For example, AUTO_BACKUP_DISABLED signal is associated with CIS GCP 1.1, CIS GCP 1.2, CIS GCP 1.3, NIST 800-53 and ISO-27001 compliance standards. If a database resource does not have automated backup enable, it will violate these following industry standards.",
+"items": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainCompliance"
+},
+"type": "array"
+},
+"description": {
+"description": "Description associated with signal",
+"type": "string"
+},
+"eventTime": {
+"description": "Required. The last time at which the event described by this signal took place",
+"format": "google-datetime",
+"type": "string"
+},
+"externalUri": {
+"description": "The external-uri of the signal, using which more information about this signal can be obtained. In GCP, this will take user to SCC page to get more details about signals.",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the signal, ex: PUBLIC_SQL_INSTANCE, SQL_LOG_ERROR_VERBOSITY etc.",
+"type": "string"
+},
+"provider": {
+"description": "Cloud provider name. Ex: GCP/AWS/Azure/OnPrem/SelfManaged",
+"enum": [
+"PROVIDER_UNSPECIFIED",
+"GCP",
+"AWS",
+"AZURE",
+"ONPREM",
+"SELFMANAGED",
+"PROVIDER_OTHER"
+],
+"enumDescriptions": [
+"",
+"Google cloud platform provider",
+"Amazon web service",
+"Azure web service",
+"On-prem database resources.",
+"Self-managed database provider. These are resources on a cloud platform, e.g., database resource installed in a GCE VM, but not a managed database service.",
+"For the rest of the other categories. Other refers to the rest of other database service providers, this could be smaller cloud provider. This needs to be provided when the provider is known, but it is not present in the existing set of enum values."
+],
+"type": "string"
+},
+"resourceContainer": {
+"description": "Closest parent container of this resource. In GCP, 'container' refers to a Cloud Resource Manager project. It must be resource name of a Cloud Resource Manager project with the format of \"provider//\", such as \"projects/123\". For GCP provided resources, number should be project number.",
+"type": "string"
+},
+"resourceName": {
+"description": "Required. Database resource name associated with the signal. Resource name to follow CAIS resource_name format as noted here go/condor-common-datamodel",
+"type": "string"
+},
+"signalClass": {
+"description": "Required. The class of the signal, such as if it's a THREAT or VULNERABILITY.",
+"enum": [
+"CLASS_UNSPECIFIED",
+"THREAT",
+"VULNERABILITY",
+"MISCONFIGURATION",
+"OBSERVATION",
+"ERROR"
+],
+"enumDescriptions": [
+"Unspecified signal class.",
+"Describes unwanted or malicious activity.",
+"Describes a potential weakness in software that increases risk to Confidentiality & Integrity & Availability.",
+"Describes a potential weakness in cloud resource/asset configuration that increases risk.",
+"Describes a security observation that is for informational purposes.",
+"Describes an error that prevents some SCC functionality."
+],
+"type": "string"
+},
+"signalId": {
+"description": "Required. Unique identifier for the signal. This is an unique id which would be mainatined by partner to identify a signal.",
+"type": "string"
+},
+"signalSeverity": {
+"description": "The severity of the signal, such as if it's a HIGH or LOW severity.",
+"enum": [
+"SIGNAL_SEVERITY_UNSPECIFIED",
+"CRITICAL",
+"HIGH",
+"MEDIUM",
+"LOW"
+],
+"enumDescriptions": [
+"This value is used for findings when a source doesn't write a severity value.",
+"A critical vulnerability is easily discoverable by an external actor, exploitable.",
+"A high risk vulnerability can be easily discovered and exploited in combination with other vulnerabilities.",
+"A medium risk vulnerability could be used by an actor to gain access to resources or privileges that enable them to eventually gain access and the ability to execute arbitrary code or exfiltrate data.",
+"A low risk vulnerability hampers a security organization's ability to detect vulnerabilities or active threats in their deployment."
+],
+"type": "string"
+},
+"signalType": {
+"description": "Required. Type of signal, for example, `AVAILABLE_IN_MULTIPLE_ZONES`, `LOGGING_MOST_ERRORS`, etc.",
+"enum": [
+"SIGNAL_TYPE_UNSPECIFIED",
+"SIGNAL_TYPE_NOT_PROTECTED_BY_AUTOMATIC_FAILOVER",
+"SIGNAL_TYPE_GROUP_NOT_REPLICATING_ACROSS_REGIONS",
+"SIGNAL_TYPE_NOT_AVAILABLE_IN_MULTIPLE_ZONES",
+"SIGNAL_TYPE_NOT_AVAILABLE_IN_MULTIPLE_REGIONS",
+"SIGNAL_TYPE_NO_PROMOTABLE_REPLICA",
+"SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY",
+"SIGNAL_TYPE_SHORT_BACKUP_RETENTION",
+"SIGNAL_TYPE_LAST_BACKUP_FAILED",
+"SIGNAL_TYPE_LAST_BACKUP_OLD",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0",
+"SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0",
+"SIGNAL_TYPE_VIOLATES_NIST_800_53",
+"SIGNAL_TYPE_VIOLATES_NIST_800_53_R5",
+"SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0",
+"SIGNAL_TYPE_VIOLATES_ISO_27001",
+"SIGNAL_TYPE_VIOLATES_ISO_27001_V2022",
+"SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1",
+"SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0",
+"SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4",
+"SIGNAL_TYPE_VIOLATES_HIPAA",
+"SIGNAL_TYPE_VIOLATES_SOC2_V2017",
+"SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING",
+"SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED",
+"SIGNAL_TYPE_VERBOSE_ERROR_LOGGING",
+"SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED",
+"SIGNAL_TYPE_LOGGING_MOST_ERRORS",
+"SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS",
+"SIGNAL_TYPE_MINIMAL_ERROR_LOGGING",
+"SIGNAL_TYPE_QUERY_STATISTICS_LOGGED",
+"SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME",
+"SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATISTICS",
+"SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATISTICS",
+"SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS",
+"SIGNAL_TYPE_LOGGING_QUERY_STATISTICS",
+"SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES",
+"SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED",
+"SIGNAL_TYPE_USER_OPTIONS_CONFIGURED",
+"SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS",
+"SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS",
+"SIGNAL_TYPE_NO_ROOT_PASSWORD",
+"SIGNAL_TYPE_WEAK_ROOT_PASSWORD",
+"SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED",
+"SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED",
+"SIGNAL_TYPE_EXPOSED_BY_OWNERSHIP_CHAINING",
+"SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS",
+"SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS",
+"SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED",
+"SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED",
+"SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO",
+"SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS",
+"SIGNAL_TYPE_DATABASE_NAMES_EXPOSED",
+"SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED",
+"SIGNAL_TYPE_PUBLIC_IP_ENABLED",
+"SIGNAL_TYPE_IDLE",
+"SIGNAL_TYPE_OVERPROVISIONED",
+"SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES",
+"SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES",
+"SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION",
+"SIGNAL_TYPE_UNDERPROVISIONED",
+"SIGNAL_TYPE_OUT_OF_DISK",
+"SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY",
+"SIGNAL_TYPE_DATABASE_AUDITING_DISABLED",
+"SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS",
+"SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP",
+"SIGNAL_TYPE_QUOTA_LIMIT",
+"SIGNAL_TYPE_NO_PASSWORD_POLICY",
+"SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT",
+"SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT",
+"SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT",
+"SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES",
+"SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES",
+"SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS",
+"SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET",
+"SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET",
+"SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM",
+"SIGNAL_TYPE_NO_USER_PASSWORD_POLICY"
+],
+"enumDeprecated": [
+false,
+false,
+false,
+true,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Unspecified.",
+"Represents if a resource is protected by automatic failover. Checks for resources that are configured to have redundancy within a region that enables automatic failover.",
+"Represents if a group is replicating across regions. Checks for resources that are configured to have redundancy, and ongoing replication, across regions.",
+"Represents if the resource is available in multiple zones or not.",
+"Represents if a resource is available in multiple regions.",
+"Represents if a resource has a promotable replica.",
+"Represents if a resource has an automated backup policy.",
+"Represents if a resources has a short backup retention period.",
+"Represents if the last backup of a resource failed.",
+"Represents if the last backup of a resource is older than some threshold value.",
+"Represents if a resource violates CIS GCP Foundation 2.0.",
+"Represents if a resource violates CIS GCP Foundation 1.3.",
+"Represents if a resource violates CIS GCP Foundation 1.2.",
+"Represents if a resource violates CIS GCP Foundation 1.1.",
+"Represents if a resource violates CIS GCP Foundation 1.0.",
+"Represents if a resource violates CIS Controls 8.0.",
+"Represents if a resource violates NIST 800-53.",
+"Represents if a resource violates NIST 800-53 R5.",
+"Represents if a resource violates NIST Cybersecurity Framework 1.0.",
+"Represents if a resource violates ISO-27001.",
+"Represents if a resource violates ISO 27001 2022.",
+"Represents if a resource violates PCI-DSS v3.2.1.",
+"Represents if a resource violates PCI-DSS v4.0.",
+"Represents if a resource violates Cloud Controls Matrix v4.0.",
+"Represents if a resource violates HIPAA.",
+"Represents if a resource violates SOC2 v2017.",
+"Represents if log_checkpoints database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_duration database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_error_verbosity database flag for a Cloud SQL for PostgreSQL instance is not set to default or stricter (default or terse).",
+"Represents if the log_lock_waits database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_min_error_statement database flag for a Cloud SQL for PostgreSQL instance is not set appropriately.",
+"Represents if the log_min_error_statement database flag for a Cloud SQL for PostgreSQL instance does not have an appropriate severity level.",
+"Represents if the log_min_messages database flag for a Cloud SQL for PostgreSQL instance is not set to warning or another recommended value.",
+"Represents if the databaseFlags property of instance metadata for the log_executor_status field is set to on.",
+"Represents if the log_hostname database flag for a Cloud SQL for PostgreSQL instance is not set to off.",
+"Represents if the log_parser_stats database flag for a Cloud SQL for PostgreSQL instance is not set to off.",
+"Represents if the log_planner_stats database flag for a Cloud SQL for PostgreSQL instance is not set to off.",
+"Represents if the log_statement database flag for a Cloud SQL for PostgreSQL instance is not set to DDL (all data definition statements).",
+"Represents if the log_statement_stats database flag for a Cloud SQL for PostgreSQL instance is not set to off.",
+"Represents if the log_temp_files database flag for a Cloud SQL for PostgreSQL instance is not set to \"0\". (NOTE: 0 = ON)",
+"Represents if the user connections database flag for a Cloud SQL for SQL Server instance is configured.",
+"Represents if the user options database flag for Cloud SQL SQL Server instance is configured or not.",
+"Represents if a resource is exposed to public access.",
+"Represents if a resources requires all incoming connections to use SSL or not.",
+"Represents if a Cloud SQL database has a password configured for the root account or not.",
+"Represents if a Cloud SQL database has a weak password configured for the root account.",
+"Represents if a SQL database instance is not encrypted with customer-managed encryption keys (CMEK).",
+"Represents if The contained database authentication database flag for a Cloud SQL for SQL Server instance is not set to off.",
+"Represents if the cross_db_ownership_chaining database flag for a Cloud SQL for SQL Server instance is not set to off.",
+"Represents if he external scripts enabled database flag for a Cloud SQL for SQL Server instance is not set to off.",
+"Represents if the local_infile database flag for a Cloud SQL for MySQL instance is not set to off.",
+"Represents if the log_connections database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_disconnections database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_min_duration_statement database flag for a Cloud SQL for PostgreSQL instance is not set to -1.",
+"Represents if the remote access database flag for a Cloud SQL for SQL Server instance is not set to off.",
+"Represents if the skip_show_database database flag for a Cloud SQL for MySQL instance is not set to on.",
+"Represents if the 3625 (trace flag) database flag for a Cloud SQL for SQL Server instance is not set to on.",
+"Represents if public IP is enabled.",
+"Represents Idle instance helps to reduce costs.",
+"Represents instances that are unnecessarily large for given workload.",
+"Represents high number of concurrently opened tables.",
+"Represents high table count close to SLA limit.",
+"Represents high number of unvacuumed transactions",
+"Represents need for more CPU and/or memory",
+"Represents out of disk.",
+"Represents server certificate is near expiry.",
+"Represents database auditing is disabled.",
+"Represents not restricted to authorized networks.",
+"Represents violate org policy restrict public ip.",
+"Cluster nearing quota limit",
+"No password policy set on resources",
+"Performance impact of connections settings",
+"Performance impact of temporary tables settings",
+"Performance impact of transaction logs settings",
+"Performance impact of high joins without indexes",
+"Detects events where a Cloud SQL superuser (postgres for PostgreSQL servers or root for MySQL users) writes to non-system tables.",
+"Detects events where a database user or role has been granted all privileges to a database, or to all tables, procedures, or functions in a schema.",
+"Detects if database instance data exported to a Cloud Storage bucket outside of the organization.",
+"Detects if database instance data exported to a Cloud Storage bucket that is owned by the organization and is publicly accessible.",
+"Detects if a database instance is using a weak password hash algorithm.",
+"Detects if a database instance has no user password policy set."
+],
+"type": "string"
+},
+"state": {
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"RESOLVED",
+"MUTED"
+],
+"enumDescriptions": [
+"Unspecified state.",
+"The signal requires attention and has not been addressed yet.",
+"The signal has been fixed, triaged as a non-issue or otherwise addressed and is no longer active.",
+"The signal has been muted."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainDatabaseResourceId": {
+"description": "DatabaseResourceId will serve as primary key for any resource ingestion event.",
+"id": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceId",
+"properties": {
+"provider": {
+"description": "Required. Cloud provider name. Ex: GCP/AWS/Azure/OnPrem/SelfManaged",
+"enum": [
+"PROVIDER_UNSPECIFIED",
+"GCP",
+"AWS",
+"AZURE",
+"ONPREM",
+"SELFMANAGED",
+"PROVIDER_OTHER"
+],
+"enumDescriptions": [
+"",
+"Google cloud platform provider",
+"Amazon web service",
+"Azure web service",
+"On-prem database resources.",
+"Self-managed database provider. These are resources on a cloud platform, e.g., database resource installed in a GCE VM, but not a managed database service.",
+"For the rest of the other categories. Other refers to the rest of other database service providers, this could be smaller cloud provider. This needs to be provided when the provider is known, but it is not present in the existing set of enum values."
+],
+"type": "string"
+},
+"providerDescription": {
+"description": "Optional. Needs to be used only when the provider is PROVIDER_OTHER.",
+"type": "string"
+},
+"resourceType": {
+"description": "Required. The type of resource this ID is identifying. Ex redis.googleapis.com/Instance, redis.googleapis.com/Cluster, alloydb.googleapis.com/Cluster, alloydb.googleapis.com/Instance, spanner.googleapis.com/Instance, spanner.googleapis.com/Database, firestore.googleapis.com/Database, sqladmin.googleapis.com/Instance, bigtableadmin.googleapis.com/Cluster, bigtableadmin.googleapis.com/Instance REQUIRED Please refer go/condor-common-datamodel",
+"type": "string"
+},
+"uniqueId": {
+"description": "Required. A service-local token that distinguishes this resource from other resources within the same service.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainDatabaseResourceMetadata": {
+"description": "Common model for database resource instance metadata. Next ID: 23",
+"id": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceMetadata",
+"properties": {
+"availabilityConfiguration": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainAvailabilityConfiguration",
+"description": "Availability configuration for this instance"
+},
+"backupConfiguration": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainBackupConfiguration",
+"description": "Backup configuration for this instance"
+},
+"backupRun": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainBackupRun",
+"description": "Latest backup run information for this instance"
+},
+"creationTime": {
+"description": "The creation time of the resource, i.e. the time when resource is created and recorded in partner service.",
+"format": "google-datetime",
+"type": "string"
+},
+"currentState": {
+"description": "Current state of the instance.",
+"enum": [
+"STATE_UNSPECIFIED",
+"HEALTHY",
+"UNHEALTHY",
+"SUSPENDED",
+"DELETED",
+"STATE_OTHER"
+],
+"enumDescriptions": [
+"",
+"The instance is running.",
+"Instance being created, updated, deleted or under maintenance",
+"When instance is suspended",
+"Instance is deleted.",
+"For rest of the other category"
+],
+"type": "string"
+},
+"customMetadata": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainCustomMetadataData",
+"description": "Any custom metadata associated with the resource"
+},
+"edition": {
+"description": "Optional. Edition represents whether the instance is ENTERPRISE or ENTERPRISE_PLUS. This information is core to Cloud SQL only and is used to identify the edition of the instance.",
+"enum": [
+"EDITION_UNSPECIFIED",
+"EDITION_ENTERPRISE",
+"EDITION_ENTERPRISE_PLUS"
+],
+"enumDescriptions": [
+"Default, to make it consistent with instance edition enum.",
+"Represents the enterprise edition.",
+"Represents the enterprise plus edition."
+],
+"type": "string"
+},
+"entitlements": {
+"description": "Entitlements associated with the resource",
+"items": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainEntitlement"
+},
+"type": "array"
+},
+"expectedState": {
+"description": "The state that the instance is expected to be in. For example, an instance state can transition to UNHEALTHY due to wrong patch update, while the expected state will remain at the HEALTHY.",
+"enum": [
+"STATE_UNSPECIFIED",
+"HEALTHY",
+"UNHEALTHY",
+"SUSPENDED",
+"DELETED",
+"STATE_OTHER"
+],
+"enumDescriptions": [
+"",
+"The instance is running.",
+"Instance being created, updated, deleted or under maintenance",
+"When instance is suspended",
+"Instance is deleted.",
+"For rest of the other category"
+],
+"type": "string"
+},
+"id": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceId",
+"description": "Required. Unique identifier for a Database resource"
+},
+"instanceType": {
+"description": "The type of the instance. Specified at creation time.",
+"enum": [
+"INSTANCE_TYPE_UNSPECIFIED",
+"SUB_RESOURCE_TYPE_UNSPECIFIED",
+"PRIMARY",
+"SECONDARY",
+"READ_REPLICA",
+"OTHER",
+"SUB_RESOURCE_TYPE_PRIMARY",
+"SUB_RESOURCE_TYPE_SECONDARY",
+"SUB_RESOURCE_TYPE_READ_REPLICA",
+"SUB_RESOURCE_TYPE_OTHER"
+],
+"enumDeprecated": [
+true,
+false,
+true,
+true,
+true,
+true,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"",
+"For rest of the other categories.",
+"A regular primary database instance.",
+"A cluster or an instance acting as a secondary.",
+"An instance acting as a read-replica.",
+"For rest of the other categories.",
+"A regular primary database instance.",
+"A cluster or an instance acting as a secondary.",
+"An instance acting as a read-replica.",
+"For rest of the other categories."
+],
+"type": "string"
+},
+"location": {
+"description": "The resource location. REQUIRED",
+"type": "string"
+},
+"machineConfiguration": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainMachineConfiguration",
+"description": "Machine configuration for this resource."
+},
+"primaryResourceId": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceId",
+"description": "Identifier for this resource's immediate parent/primary resource if the current resource is a replica or derived form of another Database resource. Else it would be NULL. REQUIRED if the immediate parent exists when first time resource is getting ingested, otherwise optional."
+},
+"primaryResourceLocation": {
+"description": "Primary resource location. REQUIRED if the immediate parent exists when first time resource is getting ingested, otherwise optional.",
+"type": "string"
+},
+"product": {
+"$ref": "StorageDatabasecenterProtoCommonProduct",
+"description": "The product this resource represents."
+},
+"resourceContainer": {
+"description": "Closest parent Cloud Resource Manager container of this resource. It must be resource name of a Cloud Resource Manager project with the format of \"/\", such as \"projects/123\". For GCP provided resources, number should be project number.",
+"type": "string"
+},
+"resourceName": {
+"description": "Required. Different from DatabaseResourceId.unique_id, a resource name can be reused over time. That is, after a resource named \"ABC\" is deleted, the name \"ABC\" can be used to to create a new resource within the same source. Resource name to follow CAIS resource_name format as noted here go/condor-common-datamodel",
+"type": "string"
+},
+"tagsSet": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainTags",
+"description": "Optional. Tags associated with this resources."
+},
+"updationTime": {
+"description": "The time at which the resource was updated and recorded at partner service.",
+"format": "google-datetime",
+"type": "string"
+},
+"userLabelSet": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainUserLabels",
+"description": "User-provided labels associated with the resource"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainDatabaseResourceRecommendationSignalData": {
+"description": "Common model for database resource recommendation signal data.",
+"id": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceRecommendationSignalData",
+"properties": {
+"additionalMetadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. Any other additional metadata specific to recommendation",
+"type": "object"
+},
+"lastRefreshTime": {
+"description": "Required. last time recommendationw as refreshed",
+"format": "google-datetime",
+"type": "string"
+},
+"recommendationState": {
+"description": "Required. Recommendation state",
+"enum": [
+"UNSPECIFIED",
+"ACTIVE",
+"CLAIMED",
+"SUCCEEDED",
+"FAILED",
+"DISMISSED"
+],
+"enumDescriptions": [
+"",
+"Recommendation is active and can be applied. ACTIVE recommendations can be marked as CLAIMED, SUCCEEDED, or FAILED.",
+"Recommendation is in claimed state. Recommendations content is immutable and cannot be updated by Google. CLAIMED recommendations can be marked as CLAIMED, SUCCEEDED, or FAILED.",
+"Recommendation is in succeeded state. Recommendations content is immutable and cannot be updated by Google. SUCCEEDED recommendations can be marked as SUCCEEDED, or FAILED.",
+"Recommendation is in failed state. Recommendations content is immutable and cannot be updated by Google. FAILED recommendations can be marked as SUCCEEDED, or FAILED.",
+"Recommendation is in dismissed state. Recommendation content can be updated by Google. DISMISSED recommendations can be marked as ACTIVE."
+],
+"type": "string"
+},
+"recommender": {
+"description": "Required. Name of recommendation. Examples: organizations/1234/locations/us-central1/recommenders/google.cloudsql.instance.PerformanceRecommender/recommendations/9876",
+"type": "string"
+},
+"recommenderId": {
+"description": "Required. ID of recommender. Examples: \"google.cloudsql.instance.PerformanceRecommender\"",
+"type": "string"
+},
+"recommenderSubtype": {
+"description": "Required. Contains an identifier for a subtype of recommendations produced for the same recommender. Subtype is a function of content and impact, meaning a new subtype might be added when significant changes to `content` or `primary_impact.category` are introduced. See the Recommenders section to see a list of subtypes for a given Recommender. Examples: For recommender = \"google.cloudsql.instance.PerformanceRecommender\", recommender_subtype can be \"MYSQL_HIGH_NUMBER_OF_OPEN_TABLES_BEST_PRACTICE\"/\"POSTGRES_HIGH_TRANSACTION_ID_UTILIZATION_BEST_PRACTICE\"",
+"type": "string"
+},
+"resourceName": {
+"description": "Required. Database resource name associated with the signal. Resource name to follow CAIS resource_name format as noted here go/condor-common-datamodel",
+"type": "string"
+},
+"signalType": {
+"description": "Required. Type of signal, for example, `SIGNAL_TYPE_IDLE`, `SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES`, etc.",
+"enum": [
+"SIGNAL_TYPE_UNSPECIFIED",
+"SIGNAL_TYPE_NOT_PROTECTED_BY_AUTOMATIC_FAILOVER",
+"SIGNAL_TYPE_GROUP_NOT_REPLICATING_ACROSS_REGIONS",
+"SIGNAL_TYPE_NOT_AVAILABLE_IN_MULTIPLE_ZONES",
+"SIGNAL_TYPE_NOT_AVAILABLE_IN_MULTIPLE_REGIONS",
+"SIGNAL_TYPE_NO_PROMOTABLE_REPLICA",
+"SIGNAL_TYPE_NO_AUTOMATED_BACKUP_POLICY",
+"SIGNAL_TYPE_SHORT_BACKUP_RETENTION",
+"SIGNAL_TYPE_LAST_BACKUP_FAILED",
+"SIGNAL_TYPE_LAST_BACKUP_OLD",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_2_0",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_3",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_2",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_1",
+"SIGNAL_TYPE_VIOLATES_CIS_GCP_FOUNDATION_1_0",
+"SIGNAL_TYPE_VIOLATES_CIS_CONTROLS_V8_0",
+"SIGNAL_TYPE_VIOLATES_NIST_800_53",
+"SIGNAL_TYPE_VIOLATES_NIST_800_53_R5",
+"SIGNAL_TYPE_VIOLATES_NIST_CYBERSECURITY_FRAMEWORK_V1_0",
+"SIGNAL_TYPE_VIOLATES_ISO_27001",
+"SIGNAL_TYPE_VIOLATES_ISO_27001_V2022",
+"SIGNAL_TYPE_VIOLATES_PCI_DSS_V3_2_1",
+"SIGNAL_TYPE_VIOLATES_PCI_DSS_V4_0",
+"SIGNAL_TYPE_VIOLATES_CLOUD_CONTROLS_MATRIX_V4",
+"SIGNAL_TYPE_VIOLATES_HIPAA",
+"SIGNAL_TYPE_VIOLATES_SOC2_V2017",
+"SIGNAL_TYPE_LOGS_NOT_OPTIMIZED_FOR_TROUBLESHOOTING",
+"SIGNAL_TYPE_QUERY_DURATIONS_NOT_LOGGED",
+"SIGNAL_TYPE_VERBOSE_ERROR_LOGGING",
+"SIGNAL_TYPE_QUERY_LOCK_WAITS_NOT_LOGGED",
+"SIGNAL_TYPE_LOGGING_MOST_ERRORS",
+"SIGNAL_TYPE_LOGGING_ONLY_CRITICAL_ERRORS",
+"SIGNAL_TYPE_MINIMAL_ERROR_LOGGING",
+"SIGNAL_TYPE_QUERY_STATISTICS_LOGGED",
+"SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_CLIENT_HOSTNAME",
+"SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PARSER_STATISTICS",
+"SIGNAL_TYPE_EXCESSIVE_LOGGING_OF_PLANNER_STATISTICS",
+"SIGNAL_TYPE_NOT_LOGGING_ONLY_DDL_STATEMENTS",
+"SIGNAL_TYPE_LOGGING_QUERY_STATISTICS",
+"SIGNAL_TYPE_NOT_LOGGING_TEMPORARY_FILES",
+"SIGNAL_TYPE_CONNECTION_MAX_NOT_CONFIGURED",
+"SIGNAL_TYPE_USER_OPTIONS_CONFIGURED",
+"SIGNAL_TYPE_EXPOSED_TO_PUBLIC_ACCESS",
+"SIGNAL_TYPE_UNENCRYPTED_CONNECTIONS",
+"SIGNAL_TYPE_NO_ROOT_PASSWORD",
+"SIGNAL_TYPE_WEAK_ROOT_PASSWORD",
+"SIGNAL_TYPE_ENCRYPTION_KEY_NOT_CUSTOMER_MANAGED",
+"SIGNAL_TYPE_SERVER_AUTHENTICATION_NOT_REQUIRED",
+"SIGNAL_TYPE_EXPOSED_BY_OWNERSHIP_CHAINING",
+"SIGNAL_TYPE_EXPOSED_TO_EXTERNAL_SCRIPTS",
+"SIGNAL_TYPE_EXPOSED_TO_LOCAL_DATA_LOADS",
+"SIGNAL_TYPE_CONNECTION_ATTEMPTS_NOT_LOGGED",
+"SIGNAL_TYPE_DISCONNECTIONS_NOT_LOGGED",
+"SIGNAL_TYPE_LOGGING_EXCESSIVE_STATEMENT_INFO",
+"SIGNAL_TYPE_EXPOSED_TO_REMOTE_ACCESS",
+"SIGNAL_TYPE_DATABASE_NAMES_EXPOSED",
+"SIGNAL_TYPE_SENSITIVE_TRACE_INFO_NOT_MASKED",
+"SIGNAL_TYPE_PUBLIC_IP_ENABLED",
+"SIGNAL_TYPE_IDLE",
+"SIGNAL_TYPE_OVERPROVISIONED",
+"SIGNAL_TYPE_HIGH_NUMBER_OF_OPEN_TABLES",
+"SIGNAL_TYPE_HIGH_NUMBER_OF_TABLES",
+"SIGNAL_TYPE_HIGH_TRANSACTION_ID_UTILIZATION",
+"SIGNAL_TYPE_UNDERPROVISIONED",
+"SIGNAL_TYPE_OUT_OF_DISK",
+"SIGNAL_TYPE_SERVER_CERTIFICATE_NEAR_EXPIRY",
+"SIGNAL_TYPE_DATABASE_AUDITING_DISABLED",
+"SIGNAL_TYPE_RESTRICT_AUTHORIZED_NETWORKS",
+"SIGNAL_TYPE_VIOLATE_POLICY_RESTRICT_PUBLIC_IP",
+"SIGNAL_TYPE_QUOTA_LIMIT",
+"SIGNAL_TYPE_NO_PASSWORD_POLICY",
+"SIGNAL_TYPE_CONNECTIONS_PERFORMANCE_IMPACT",
+"SIGNAL_TYPE_TMP_TABLES_PERFORMANCE_IMPACT",
+"SIGNAL_TYPE_TRANS_LOGS_PERFORMANCE_IMPACT",
+"SIGNAL_TYPE_HIGH_JOINS_WITHOUT_INDEXES",
+"SIGNAL_TYPE_SUPERUSER_WRITING_TO_USER_TABLES",
+"SIGNAL_TYPE_USER_GRANTED_ALL_PERMISSIONS",
+"SIGNAL_TYPE_DATA_EXPORT_TO_EXTERNAL_CLOUD_STORAGE_BUCKET",
+"SIGNAL_TYPE_DATA_EXPORT_TO_PUBLIC_CLOUD_STORAGE_BUCKET",
+"SIGNAL_TYPE_WEAK_PASSWORD_HASH_ALGORITHM",
+"SIGNAL_TYPE_NO_USER_PASSWORD_POLICY"
+],
+"enumDeprecated": [
+false,
+false,
+false,
+true,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Unspecified.",
+"Represents if a resource is protected by automatic failover. Checks for resources that are configured to have redundancy within a region that enables automatic failover.",
+"Represents if a group is replicating across regions. Checks for resources that are configured to have redundancy, and ongoing replication, across regions.",
+"Represents if the resource is available in multiple zones or not.",
+"Represents if a resource is available in multiple regions.",
+"Represents if a resource has a promotable replica.",
+"Represents if a resource has an automated backup policy.",
+"Represents if a resources has a short backup retention period.",
+"Represents if the last backup of a resource failed.",
+"Represents if the last backup of a resource is older than some threshold value.",
+"Represents if a resource violates CIS GCP Foundation 2.0.",
+"Represents if a resource violates CIS GCP Foundation 1.3.",
+"Represents if a resource violates CIS GCP Foundation 1.2.",
+"Represents if a resource violates CIS GCP Foundation 1.1.",
+"Represents if a resource violates CIS GCP Foundation 1.0.",
+"Represents if a resource violates CIS Controls 8.0.",
+"Represents if a resource violates NIST 800-53.",
+"Represents if a resource violates NIST 800-53 R5.",
+"Represents if a resource violates NIST Cybersecurity Framework 1.0.",
+"Represents if a resource violates ISO-27001.",
+"Represents if a resource violates ISO 27001 2022.",
+"Represents if a resource violates PCI-DSS v3.2.1.",
+"Represents if a resource violates PCI-DSS v4.0.",
+"Represents if a resource violates Cloud Controls Matrix v4.0.",
+"Represents if a resource violates HIPAA.",
+"Represents if a resource violates SOC2 v2017.",
+"Represents if log_checkpoints database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_duration database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_error_verbosity database flag for a Cloud SQL for PostgreSQL instance is not set to default or stricter (default or terse).",
+"Represents if the log_lock_waits database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_min_error_statement database flag for a Cloud SQL for PostgreSQL instance is not set appropriately.",
+"Represents if the log_min_error_statement database flag for a Cloud SQL for PostgreSQL instance does not have an appropriate severity level.",
+"Represents if the log_min_messages database flag for a Cloud SQL for PostgreSQL instance is not set to warning or another recommended value.",
+"Represents if the databaseFlags property of instance metadata for the log_executor_status field is set to on.",
+"Represents if the log_hostname database flag for a Cloud SQL for PostgreSQL instance is not set to off.",
+"Represents if the log_parser_stats database flag for a Cloud SQL for PostgreSQL instance is not set to off.",
+"Represents if the log_planner_stats database flag for a Cloud SQL for PostgreSQL instance is not set to off.",
+"Represents if the log_statement database flag for a Cloud SQL for PostgreSQL instance is not set to DDL (all data definition statements).",
+"Represents if the log_statement_stats database flag for a Cloud SQL for PostgreSQL instance is not set to off.",
+"Represents if the log_temp_files database flag for a Cloud SQL for PostgreSQL instance is not set to \"0\". (NOTE: 0 = ON)",
+"Represents if the user connections database flag for a Cloud SQL for SQL Server instance is configured.",
+"Represents if the user options database flag for Cloud SQL SQL Server instance is configured or not.",
+"Represents if a resource is exposed to public access.",
+"Represents if a resources requires all incoming connections to use SSL or not.",
+"Represents if a Cloud SQL database has a password configured for the root account or not.",
+"Represents if a Cloud SQL database has a weak password configured for the root account.",
+"Represents if a SQL database instance is not encrypted with customer-managed encryption keys (CMEK).",
+"Represents if The contained database authentication database flag for a Cloud SQL for SQL Server instance is not set to off.",
+"Represents if the cross_db_ownership_chaining database flag for a Cloud SQL for SQL Server instance is not set to off.",
+"Represents if he external scripts enabled database flag for a Cloud SQL for SQL Server instance is not set to off.",
+"Represents if the local_infile database flag for a Cloud SQL for MySQL instance is not set to off.",
+"Represents if the log_connections database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_disconnections database flag for a Cloud SQL for PostgreSQL instance is not set to on.",
+"Represents if the log_min_duration_statement database flag for a Cloud SQL for PostgreSQL instance is not set to -1.",
+"Represents if the remote access database flag for a Cloud SQL for SQL Server instance is not set to off.",
+"Represents if the skip_show_database database flag for a Cloud SQL for MySQL instance is not set to on.",
+"Represents if the 3625 (trace flag) database flag for a Cloud SQL for SQL Server instance is not set to on.",
+"Represents if public IP is enabled.",
+"Represents Idle instance helps to reduce costs.",
+"Represents instances that are unnecessarily large for given workload.",
+"Represents high number of concurrently opened tables.",
+"Represents high table count close to SLA limit.",
+"Represents high number of unvacuumed transactions",
+"Represents need for more CPU and/or memory",
+"Represents out of disk.",
+"Represents server certificate is near expiry.",
+"Represents database auditing is disabled.",
+"Represents not restricted to authorized networks.",
+"Represents violate org policy restrict public ip.",
+"Cluster nearing quota limit",
+"No password policy set on resources",
+"Performance impact of connections settings",
+"Performance impact of temporary tables settings",
+"Performance impact of transaction logs settings",
+"Performance impact of high joins without indexes",
+"Detects events where a Cloud SQL superuser (postgres for PostgreSQL servers or root for MySQL users) writes to non-system tables.",
+"Detects events where a database user or role has been granted all privileges to a database, or to all tables, procedures, or functions in a schema.",
+"Detects if database instance data exported to a Cloud Storage bucket outside of the organization.",
+"Detects if database instance data exported to a Cloud Storage bucket that is owned by the organization and is publicly accessible.",
+"Detects if a database instance is using a weak password hash algorithm.",
+"Detects if a database instance has no user password policy set."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainEntitlement": {
+"description": "Proto representing the access that a user has to a specific feature/service. NextId: 3.",
+"id": "StorageDatabasecenterPartnerapiV1mainEntitlement",
+"properties": {
+"entitlementState": {
+"description": "The current state of user's accessibility to a feature/benefit.",
+"enum": [
+"ENTITLEMENT_STATE_UNSPECIFIED",
+"ENTITLED",
+"REVOKED"
+],
+"enumDescriptions": [
+"",
+"User is entitled to a feature/benefit, but whether it has been successfully provisioned is decided by provisioning state.",
+"User is entitled to a feature/benefit, but it was requested to be revoked. Whether the revoke has been successful is decided by provisioning state."
+],
+"type": "string"
+},
+"type": {
+"description": "An enum that represents the type of this entitlement.",
+"enum": [
+"ENTITLEMENT_TYPE_UNSPECIFIED",
+"GEMINI"
+],
+"enumDescriptions": [
+"",
+"The root entitlement representing Gemini package ownership."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainInternalResourceMetadata": {
+"description": "Metadata for individual internal resources in an instance. e.g. spanner instance can have multiple databases with unique configuration settings. Similarly bigtable can have multiple clusters within same bigtable instance.",
+"id": "StorageDatabasecenterPartnerapiV1mainInternalResourceMetadata",
+"properties": {
+"backupConfiguration": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainBackupConfiguration",
+"description": "Backup configuration for this database"
+},
+"backupRun": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainBackupRun",
+"description": "Information about the last backup attempt for this database"
+},
+"product": {
+"$ref": "StorageDatabasecenterProtoCommonProduct"
+},
+"resourceId": {
+"$ref": "StorageDatabasecenterPartnerapiV1mainDatabaseResourceId"
+},
+"resourceName": {
+"description": "Required. internal resource name for spanner this will be database name e.g.\"spanner.googleapis.com/projects/123/abc/instances/inst1/databases/db1\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainMachineConfiguration": {
+"description": "MachineConfiguration describes the configuration of a machine specific to Database Resource.",
+"id": "StorageDatabasecenterPartnerapiV1mainMachineConfiguration",
+"properties": {
+"cpuCount": {
+"deprecated": true,
+"description": "The number of CPUs. Deprecated. Use vcpu_count instead. TODO(b/342344482, b/342346271) add proto validations again after bug fix.",
+"format": "int32",
+"type": "integer"
+},
+"memorySizeInBytes": {
+"description": "Memory size in bytes. TODO(b/342344482, b/342346271) add proto validations again after bug fix.",
+"format": "int64",
+"type": "string"
+},
+"shardCount": {
+"description": "Optional. Number of shards (if applicable).",
+"format": "int32",
+"type": "integer"
+},
+"vcpuCount": {
+"description": "Optional. The number of vCPUs. TODO(b/342344482, b/342346271) add proto validations again after bug fix.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainObservabilityMetricData": {
+"id": "StorageDatabasecenterPartnerapiV1mainObservabilityMetricData",
+"properties": {
+"aggregationType": {
+"description": "Required. Type of aggregation performed on the metric.",
+"enum": [
+"AGGREGATION_TYPE_UNSPECIFIED",
+"PEAK",
+"P99",
+"P95",
+"CURRENT"
+],
+"enumDescriptions": [
+"Unspecified aggregation type.",
+"PEAK aggregation type.",
+"P99 aggregation type.",
+"P95 aggregation type.",
+"current aggregation type."
+],
+"type": "string"
+},
+"metricType": {
+"description": "Required. Type of metric like CPU, Memory, etc.",
+"enum": [
+"METRIC_TYPE_UNSPECIFIED",
+"CPU_UTILIZATION",
+"MEMORY_UTILIZATION",
+"NETWORK_CONNECTIONS",
+"STORAGE_UTILIZATION",
+"STORAGE_USED_BYTES"
+],
+"enumDescriptions": [
+"Unspecified metric type.",
+"CPU utilization for a resource. The value is a fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some cases).",
+"Memory utilization for a resource. The value is a fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some cases).",
+"Number of network connections for a resource.",
+"Storage utilization for a resource. The value is a fraction between 0.0 and 1.0 (may momentarily exceed 1.0 in some cases).",
+"Sotrage used by a resource."
+],
+"type": "string"
+},
+"observationTime": {
+"description": "Required. The time the metric value was observed.",
+"format": "google-datetime",
+"type": "string"
+},
+"resourceName": {
+"description": "Required. Database resource name associated with the signal. Resource name to follow CAIS resource_name format as noted here go/condor-common-datamodel",
+"type": "string"
+},
+"value": {
+"$ref": "StorageDatabasecenterProtoCommonTypedValue",
+"description": "Required. Value of the metric type."
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainOperationError": {
+"description": "An error that occurred during a backup creation operation.",
+"id": "StorageDatabasecenterPartnerapiV1mainOperationError",
+"properties": {
+"code": {
+"description": "Identifies the specific error that occurred. REQUIRED",
+"type": "string"
+},
+"errorType": {
+"enum": [
+"OPERATION_ERROR_TYPE_UNSPECIFIED",
+"KMS_KEY_ERROR",
+"DATABASE_ERROR",
+"STOCKOUT_ERROR",
+"CANCELLATION_ERROR",
+"SQLSERVER_ERROR",
+"INTERNAL_ERROR"
+],
+"enumDescriptions": [
+"UNSPECIFIED means product type is not known or available.",
+"key destroyed, expired, not found, unreachable or permission denied.",
+"Database is not accessible",
+"The zone or region does not have sufficient resources to handle the request at the moment",
+"User initiated cancellation",
+"SQL server specific error",
+"Any other internal error."
+],
+"type": "string"
+},
+"message": {
+"description": "Additional information about the error encountered. REQUIRED",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainRetentionSettings": {
+"id": "StorageDatabasecenterPartnerapiV1mainRetentionSettings",
+"properties": {
+"durationBasedRetention": {
+"description": "Duration based retention period i.e. 172800 seconds (2 days)",
+"format": "google-duration",
+"type": "string"
+},
+"quantityBasedRetention": {
+"format": "int32",
+"type": "integer"
+},
+"retentionUnit": {
+"deprecated": true,
+"description": "The unit that 'retained_backups' represents.",
+"enum": [
+"RETENTION_UNIT_UNSPECIFIED",
+"COUNT",
+"TIME",
+"DURATION",
+"RETENTION_UNIT_OTHER"
+],
+"enumDescriptions": [
+"Backup retention unit is unspecified, will be treated as COUNT.",
+"Retention will be by count, eg. \"retain the most recent 7 backups\".",
+"Retention will be by Time, eg. \"retain backups till a specific time\" i.e. till 2024-05-01T00:00:00Z.",
+"Retention will be by duration, eg. \"retain the backups for 172800 seconds (2 days)\".",
+"For rest of the other category"
+],
+"type": "string"
+},
+"timeBasedRetention": {
+"format": "google-duration",
+"type": "string"
+},
+"timestampBasedRetentionTime": {
+"description": "Timestamp based retention period i.e. 2024-05-01T00:00:00Z",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainTags": {
+"description": "Message type for storing tags. Tags provide a way to create annotations for resources, and in some cases conditionally allow or deny policies based on whether a resource has a specific tag.",
+"id": "StorageDatabasecenterPartnerapiV1mainTags",
+"properties": {
+"tags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The Tag key/value mappings.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterPartnerapiV1mainUserLabels": {
+"description": "Message type for storing user labels. User labels are used to tag App Engine resources, allowing users to search for resources matching a set of labels and to aggregate usage data by labels.",
+"id": "StorageDatabasecenterPartnerapiV1mainUserLabels",
+"properties": {
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterProtoCommonProduct": {
+"description": "Product specification for Condor resources.",
+"id": "StorageDatabasecenterProtoCommonProduct",
+"properties": {
+"engine": {
+"description": "The specific engine that the underlying database is running.",
+"enum": [
+"ENGINE_UNSPECIFIED",
+"ENGINE_MYSQL",
+"MYSQL",
+"ENGINE_POSTGRES",
+"POSTGRES",
+"ENGINE_SQL_SERVER",
+"SQL_SERVER",
+"ENGINE_NATIVE",
+"NATIVE",
+"ENGINE_CLOUD_SPANNER_WITH_POSTGRES_DIALECT",
+"ENGINE_CLOUD_SPANNER_WITH_GOOGLESQL_DIALECT",
+"ENGINE_MEMORYSTORE_FOR_REDIS",
+"ENGINE_MEMORYSTORE_FOR_REDIS_CLUSTER",
+"ENGINE_OTHER",
+"ENGINE_FIRESTORE_WITH_NATIVE_MODE",
+"ENGINE_FIRESTORE_WITH_DATASTORE_MODE"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false,
+true,
+false,
+true,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"UNSPECIFIED means engine type is not known or available.",
+"MySQL binary running as an engine in the database instance.",
+"MySQL binary running as engine in database instance.",
+"Postgres binary running as engine in database instance.",
+"Postgres binary running as engine in database instance.",
+"SQLServer binary running as engine in database instance.",
+"SQLServer binary running as engine in database instance.",
+"Native database binary running as engine in instance.",
+"Native database binary running as engine in instance.",
+"Cloud Spanner with PostgreSQL dialect.",
+"Cloud Spanner with Google SQL dialect.",
+"Memorystore with Redis dialect.",
+"Memorystore with Redis cluster dialect.",
+"Other refers to rest of other database engine. This is to be when engine is known, but it is not present in this enum.",
+"Firestore with native mode.",
+"Firestore with datastore mode."
+],
+"type": "string"
+},
+"type": {
+"description": "Type of specific database product. It could be CloudSQL, AlloyDB etc..",
+"enum": [
+"PRODUCT_TYPE_UNSPECIFIED",
+"PRODUCT_TYPE_CLOUD_SQL",
+"CLOUD_SQL",
+"PRODUCT_TYPE_ALLOYDB",
+"ALLOYDB",
+"PRODUCT_TYPE_SPANNER",
+"PRODUCT_TYPE_ON_PREM",
+"ON_PREM",
+"PRODUCT_TYPE_MEMORYSTORE",
+"PRODUCT_TYPE_BIGTABLE",
+"PRODUCT_TYPE_OTHER",
+"PRODUCT_TYPE_FIRESTORE"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"UNSPECIFIED means product type is not known or available.",
+"Cloud SQL product area in GCP",
+"Cloud SQL product area in GCP",
+"AlloyDB product area in GCP",
+"AlloyDB product area in GCP",
+"Spanner product area in GCP",
+"On premises database product.",
+"On premises database product.",
+"Memorystore product area in GCP",
+"Bigtable product area in GCP",
+"Other refers to rest of other product type. This is to be when product type is known, but it is not present in this enum.",
+"Firestore product area in GCP."
+],
+"type": "string"
+},
+"version": {
+"description": "Version of the underlying database engine. Example values: For MySQL, it could be \"8.0\", \"5.7\" etc.. For Postgres, it could be \"14\", \"15\" etc..",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StorageDatabasecenterProtoCommonTypedValue": {
+"description": "TypedValue represents the value of a metric type. It can either be a double, an int64, a string or a bool.",
+"id": "StorageDatabasecenterProtoCommonTypedValue",
+"properties": {
+"boolValue": {
+"description": "For boolean value",
+"type": "boolean"
+},
+"doubleValue": {
+"description": "For double value",
+"format": "double",
+"type": "number"
+},
+"int64Value": {
+"description": "For integer value",
+"format": "int64",
+"type": "string"
+},
+"stringValue": {
+"description": "For string value",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StringRestrictions": {
+"description": "Restrictions on STRING type values",
+"id": "StringRestrictions",
+"properties": {
+"allowedValues": {
+"description": "The list of allowed values, if bounded. This field will be empty if there is a unbounded number of allowed values.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SupportedDatabaseFlag": {
+"description": "SupportedDatabaseFlag gives general information about a database flag, like type and allowed values. This is a static value that is defined on the server side, and it cannot be modified by callers. To set the Database flags on a particular Instance, a caller should modify the Instance.database_flags field.",
+"id": "SupportedDatabaseFlag",
+"properties": {
+"acceptsMultipleValues": {
+"description": "Whether the database flag accepts multiple values. If true, a comma-separated list of stringified values may be specified.",
+"type": "boolean"
+},
+"flagName": {
+"description": "The name of the database flag, e.g. \"max_allowed_packets\". The is a possibly key for the Instance.database_flags map field.",
+"type": "string"
+},
+"integerRestrictions": {
+"$ref": "IntegerRestrictions",
+"description": "Restriction on INTEGER type value."
+},
+"name": {
+"description": "The name of the flag resource, following Google Cloud conventions, e.g.: * projects/{project}/locations/{location}/flags/{flag} This field currently has no semantic meaning.",
+"type": "string"
+},
+"requiresDbRestart": {
+"description": "Whether setting or updating this flag on an Instance requires a database restart. If a flag that requires database restart is set, the backend will automatically restart the database (making sure to satisfy any availability SLO's).",
+"type": "boolean"
+},
+"stringRestrictions": {
+"$ref": "StringRestrictions",
+"description": "Restriction on STRING type value."
+},
+"supportedDbVersions": {
+"description": "Major database engine versions for which this flag is supported.",
+"items": {
+"enum": [
+"DATABASE_VERSION_UNSPECIFIED",
+"POSTGRES_13",
+"POSTGRES_14",
+"POSTGRES_15",
+"POSTGRES_16"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"This is an unknown database version.",
+"DEPRECATED - The database version is Postgres 13.",
+"The database version is Postgres 14.",
+"The database version is Postgres 15.",
+"The database version is Postgres 16."
+],
+"type": "string"
+},
+"type": "array"
+},
+"valueType": {
+"enum": [
+"VALUE_TYPE_UNSPECIFIED",
+"STRING",
+"INTEGER",
+"FLOAT",
+"NONE"
+],
+"enumDescriptions": [
+"This is an unknown flag type.",
+"String type flag.",
+"Integer type flag.",
+"Float type flag.",
+"Denotes that the flag does not accept any values."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"SwitchoverClusterRequest": {
+"description": "Message for switching over to a cluster",
+"id": "SwitchoverClusterRequest",
+"properties": {
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"TimeBasedRetention": {
+"description": "A time based retention policy specifies that all backups within a certain time period should be retained.",
+"id": "TimeBasedRetention",
+"properties": {
+"retentionPeriod": {
+"description": "The retention period.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TrialMetadata": {
+"description": "Contains information and all metadata related to TRIAL clusters.",
+"id": "TrialMetadata",
+"properties": {
+"endTime": {
+"description": "End time of the trial cluster.",
+"format": "google-datetime",
+"type": "string"
+},
+"graceEndTime": {
+"description": "grace end time of the cluster.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "start time of the trial cluster.",
+"format": "google-datetime",
+"type": "string"
+},
+"upgradeTime": {
+"description": "Upgrade time of trial cluster to Standard cluster.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpdatePolicy": {
+"description": "Policy to be used while updating the instance.",
+"id": "UpdatePolicy",
+"properties": {
+"mode": {
+"description": "Mode for updating the instance.",
+"enum": [
+"MODE_UNSPECIFIED",
+"DEFAULT",
+"FORCE_APPLY"
+],
+"enumDescriptions": [
+"Mode is unknown.",
+"Least disruptive way to apply the update.",
+"Performs a forced update when applicable. This will be fast but may incur a downtime."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpgradeClusterRequest": {
+"description": "Upgrades a cluster.",
+"id": "UpgradeClusterRequest",
+"properties": {
+"etag": {
+"description": "Optional. The current etag of the Cluster. If an etag is provided and does not match the current etag of the Cluster, upgrade will be blocked and an ABORTED error will be returned.",
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server ignores the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if the original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, performs request validation, for example, permission checks and any other type of validation, but does not actually execute the create request.",
+"type": "boolean"
+},
+"version": {
+"description": "Required. The version the cluster is going to be upgraded to.",
+"enum": [
+"DATABASE_VERSION_UNSPECIFIED",
+"POSTGRES_13",
+"POSTGRES_14",
+"POSTGRES_15",
+"POSTGRES_16"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"This is an unknown database version.",
+"DEPRECATED - The database version is Postgres 13.",
+"The database version is Postgres 14.",
+"The database version is Postgres 15.",
+"The database version is Postgres 16."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpgradeClusterResponse": {
+"description": "UpgradeClusterResponse contains the response for upgrade cluster operation.",
+"id": "UpgradeClusterResponse",
+"properties": {
+"clusterUpgradeDetails": {
+"description": "Array of upgrade details for the current cluster and all the secondary clusters associated with this cluster.",
+"items": {
+"$ref": "ClusterUpgradeDetails"
+},
+"type": "array"
+},
+"message": {
+"description": "A user friendly message summarising the upgrade operation details and the next steps for the user if there is any.",
+"type": "string"
+},
+"status": {
+"description": "Status of upgrade operation.",
+"enum": [
+"STATUS_UNSPECIFIED",
+"NOT_STARTED",
+"IN_PROGRESS",
+"SUCCESS",
+"FAILED",
+"PARTIAL_SUCCESS",
+"CANCEL_IN_PROGRESS",
+"CANCELLED"
+],
+"enumDescriptions": [
+"Unspecified status.",
+"Not started.",
+"In progress.",
+"Operation succeeded.",
+"Operation failed.",
+"Operation partially succeeded.",
+"Cancel is in progress.",
+"Cancellation complete."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"User": {
+"description": "Message describing User object.",
+"id": "User",
+"properties": {
+"databaseRoles": {
+"description": "Optional. List of database roles this user has. The database role strings are subject to the PostgreSQL naming conventions.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"keepExtraRoles": {
+"description": "Input only. If the user already exists and it has additional roles, keep them granted.",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. Name of the resource in the form of projects/{project}/locations/{location}/cluster/{cluster}/users/{user}.",
+"readOnly": true,
+"type": "string"
+},
+"password": {
+"description": "Input only. Password for the user.",
+"type": "string"
+},
+"userType": {
+"description": "Optional. Type of this user.",
+"enum": [
+"USER_TYPE_UNSPECIFIED",
+"ALLOYDB_BUILT_IN",
+"ALLOYDB_IAM_USER"
+],
+"enumDescriptions": [
+"Unspecified user type.",
+"The default user type that authenticates via password-based authentication.",
+"Database user that can authenticate via IAM-Based authentication."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserPassword": {
+"description": "The username/password for a database user. Used for specifying initial users at cluster creation time.",
+"id": "UserPassword",
+"properties": {
+"password": {
+"description": "The initial password for the user.",
+"type": "string"
+},
+"user": {
+"description": "The database username.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WeeklySchedule": {
+"description": "A weekly schedule starts a backup at prescribed start times within a day, for the specified days of the week. The weekly schedule message is flexible and can be used to create many types of schedules. For example, to have a daily backup that starts at 22:00, configure the `start_times` field to have one element \"22:00\" and the `days_of_week` field to have all seven days of the week.",
+"id": "WeeklySchedule",
+"properties": {
+"daysOfWeek": {
+"description": "The days of the week to perform a backup. If this field is left empty, the default of every day of the week is used.",
+"items": {
+"enum": [
+"DAY_OF_WEEK_UNSPECIFIED",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY",
+"SUNDAY"
+],
+"enumDescriptions": [
+"The day of the week is unspecified.",
+"Monday",
+"Tuesday",
+"Wednesday",
+"Thursday",
+"Friday",
+"Saturday",
+"Sunday"
+],
+"type": "string"
+},
+"type": "array"
+},
+"startTimes": {
+"description": "The times during the day to start a backup. The start times are assumed to be in UTC and to be an exact hour (e.g., 04:00:00). If no start times are provided, a single fixed start time is chosen arbitrarily.",
+"items": {
+"$ref": "GoogleTypeTimeOfDay"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "AlloyDB API",
+"version": "v1beta",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/analyticshub.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/analyticshub.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..47e77a6aad79d7e9b3bfb814f3f845dd51c6df9e
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/analyticshub.v1.json
@@ -0,0 +1,2491 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/bigquery": {
+"description": "View and manage your data in Google BigQuery and see the email address for your Google Account"
+},
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://analyticshub.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Analytics Hub",
+"description": "Exchange data and analytics assets securely and efficiently.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/bigquery/docs/analytics-hub-introduction",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "analyticshub:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://analyticshub.mtls.googleapis.com/",
+"name": "analyticshub",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"organizations": {
+"resources": {
+"locations": {
+"resources": {
+"dataExchanges": {
+"methods": {
+"list": {
+"description": "Lists all data exchanges from projects in a given organization and location.",
+"flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/dataExchanges",
+"httpMethod": "GET",
+"id": "analyticshub.organizations.locations.dataExchanges.list",
+"parameterOrder": [
+"organization"
+],
+"parameters": {
+"organization": {
+"description": "Required. The organization resource path of the projects containing DataExchanges. e.g. `organizations/myorg/locations/US`.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return in a single response page. Leverage the page tokens to iterate through the entire collection.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token, returned by a previous call, to request the next page of results.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+organization}/dataExchanges",
+"response": {
+"$ref": "ListOrgDataExchangesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+},
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"dataExchanges": {
+"methods": {
+"create": {
+"description": "Creates a new data exchange.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"dataExchangeId": {
+"description": "Required. The ID of the data exchange. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource path of the data exchange. e.g. `projects/myproject/locations/US`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/dataExchanges",
+"request": {
+"$ref": "DataExchange"
+},
+"response": {
+"$ref": "DataExchange"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an existing data exchange.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}",
+"httpMethod": "DELETE",
+"id": "analyticshub.projects.locations.dataExchanges.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The full name of the data exchange resource that you want to delete. For example, `projects/myproject/locations/US/dataExchanges/123`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the details of a data exchange.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}",
+"httpMethod": "GET",
+"id": "analyticshub.projects.locations.dataExchanges.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the data exchange. e.g. `projects/myproject/locations/US/dataExchanges/123`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "DataExchange"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the IAM policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all data exchanges in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges",
+"httpMethod": "GET",
+"id": "analyticshub.projects.locations.dataExchanges.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return in a single response page. Leverage the page tokens to iterate through the entire collection.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token, returned by a previous call, to request the next page of results.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource path of the data exchanges. e.g. `projects/myproject/locations/US`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/dataExchanges",
+"response": {
+"$ref": "ListDataExchangesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"listSubscriptions": {
+"description": "Lists all subscriptions on a given Data Exchange or Listing.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}:listSubscriptions",
+"httpMethod": "GET",
+"id": "analyticshub.projects.locations.dataExchanges.listSubscriptions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"includeDeletedSubscriptions": {
+"description": "If selected, includes deleted subscriptions in the response (up to 63 days after deletion).",
+"location": "query",
+"type": "boolean"
+},
+"pageSize": {
+"description": "The maximum number of results to return in a single response page.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token, returned by a previous call.",
+"location": "query",
+"type": "string"
+},
+"resource": {
+"description": "Required. Resource name of the requested target. This resource may be either a Listing or a DataExchange. e.g. projects/123/locations/US/dataExchanges/456 OR e.g. projects/123/locations/US/dataExchanges/456/listings/789",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:listSubscriptions",
+"response": {
+"$ref": "ListSharedResourceSubscriptionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an existing data exchange.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}",
+"httpMethod": "PATCH",
+"id": "analyticshub.projects.locations.dataExchanges.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The resource name of the data exchange. e.g. `projects/myproject/locations/US/dataExchanges/123`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask specifies the fields to update in the data exchange resource. The fields specified in the `updateMask` are relative to the resource and are not a full request.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "DataExchange"
+},
+"response": {
+"$ref": "DataExchange"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the IAM policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"subscribe": {
+"description": "Creates a Subscription to a Data Clean Room. This is a long-running operation as it will create one or more linked datasets.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}:subscribe",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.subscribe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Data Exchange. e.g. `projects/publisherproject/locations/US/dataExchanges/123`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:subscribe",
+"request": {
+"$ref": "SubscribeDataExchangeRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns the permissions that a caller has.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"listings": {
+"methods": {
+"create": {
+"description": "Creates a new listing.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.listings.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"listingId": {
+"description": "Required. The ID of the listing to create. Must contain only Unicode letters, numbers (0-9), underscores (_). Should not use characters that require URL-escaping, or characters outside of ASCII, spaces. Max length: 100 bytes.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource path of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/listings",
+"request": {
+"$ref": "Listing"
+},
+"response": {
+"$ref": "Listing"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a listing.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings/{listingsId}",
+"httpMethod": "DELETE",
+"id": "analyticshub.projects.locations.dataExchanges.listings.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the listing to delete. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+/listings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the details of a listing.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings/{listingsId}",
+"httpMethod": "GET",
+"id": "analyticshub.projects.locations.dataExchanges.listings.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+/listings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Listing"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the IAM policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings/{listingsId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.listings.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+/listings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all listings in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings",
+"httpMethod": "GET",
+"id": "analyticshub.projects.locations.dataExchanges.listings.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return in a single response page. Leverage the page tokens to iterate through the entire collection.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token, returned by a previous call, to request the next page of results.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource path of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/listings",
+"response": {
+"$ref": "ListListingsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"listSubscriptions": {
+"description": "Lists all subscriptions on a given Data Exchange or Listing.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings/{listingsId}:listSubscriptions",
+"httpMethod": "GET",
+"id": "analyticshub.projects.locations.dataExchanges.listings.listSubscriptions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"includeDeletedSubscriptions": {
+"description": "If selected, includes deleted subscriptions in the response (up to 63 days after deletion).",
+"location": "query",
+"type": "boolean"
+},
+"pageSize": {
+"description": "The maximum number of results to return in a single response page.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token, returned by a previous call.",
+"location": "query",
+"type": "string"
+},
+"resource": {
+"description": "Required. Resource name of the requested target. This resource may be either a Listing or a DataExchange. e.g. projects/123/locations/US/dataExchanges/456 OR e.g. projects/123/locations/US/dataExchanges/456/listings/789",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+/listings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:listSubscriptions",
+"response": {
+"$ref": "ListSharedResourceSubscriptionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an existing listing.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings/{listingsId}",
+"httpMethod": "PATCH",
+"id": "analyticshub.projects.locations.dataExchanges.listings.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The resource name of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+/listings/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask specifies the fields to update in the listing resource. The fields specified in the `updateMask` are relative to the resource and are not a full request.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Listing"
+},
+"response": {
+"$ref": "Listing"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the IAM policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings/{listingsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.listings.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+/listings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"subscribe": {
+"description": "Subscribes to a listing. Currently, with Analytics Hub, you can create listings that reference only BigQuery datasets. Upon subscription to a listing for a BigQuery dataset, Analytics Hub creates a linked dataset in the subscriber's project.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings/{listingsId}:subscribe",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.listings.subscribe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the listing that you want to subscribe to. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+/listings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:subscribe",
+"request": {
+"$ref": "SubscribeListingRequest"
+},
+"response": {
+"$ref": "SubscribeListingResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns the permissions that a caller has.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataExchanges/{dataExchangesId}/listings/{listingsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.dataExchanges.listings.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataExchanges/[^/]+/listings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"subscriptions": {
+"methods": {
+"delete": {
+"description": "Deletes a subscription.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}",
+"httpMethod": "DELETE",
+"id": "analyticshub.projects.locations.subscriptions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the subscription to delete. e.g. projects/123/locations/US/subscriptions/456",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the details of a Subscription.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}",
+"httpMethod": "GET",
+"id": "analyticshub.projects.locations.subscriptions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the subscription. e.g. projects/123/locations/US/subscriptions/456",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Subscription"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the IAM policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.subscriptions.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all subscriptions in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/subscriptions",
+"httpMethod": "GET",
+"id": "analyticshub.projects.locations.subscriptions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "An expression for filtering the results of the request. Eligible fields for filtering are: + `listing` + `data_exchange` Alternatively, a literal wrapped in double quotes may be provided. This will be checked for an exact match against both fields above. In all cases, the full Data Exchange or Listing resource name must be provided. Some example of using filters: + data_exchange=\"projects/myproject/locations/us/dataExchanges/123\" + listing=\"projects/123/locations/us/dataExchanges/456/listings/789\" + \"projects/myproject/locations/us/dataExchanges/123\"",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return in a single response page.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token, returned by a previous call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource path of the subscription. e.g. projects/myproject/locations/US",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/subscriptions",
+"response": {
+"$ref": "ListSubscriptionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"refresh": {
+"description": "Refreshes a Subscription to a Data Exchange. A Data Exchange can become stale when a publisher adds or removes data. This is a long-running operation as it may create many linked datasets.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}:refresh",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.subscriptions.refresh",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Subscription to refresh. e.g. `projects/subscriberproject/locations/US/subscriptions/123`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:refresh",
+"request": {
+"$ref": "RefreshSubscriptionRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"revoke": {
+"description": "Revokes a given subscription.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}:revoke",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.subscriptions.revoke",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the subscription to revoke. e.g. projects/123/locations/US/subscriptions/456",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:revoke",
+"request": {
+"$ref": "RevokeSubscriptionRequest"
+},
+"response": {
+"$ref": "RevokeSubscriptionResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the IAM policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "analyticshub.projects.locations.subscriptions.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241213",
+"rootUrl": "https://analyticshub.googleapis.com/",
+"schemas": {
+"AnalyticsHubSubscriptionInfo": {
+"description": "Information about an associated [Analytics Hub subscription](https://cloud.google.com/bigquery/docs/analytics-hub-manage-subscriptions).",
+"id": "AnalyticsHubSubscriptionInfo",
+"properties": {
+"listing": {
+"description": "Optional. The name of the associated Analytics Hub listing resource. Pattern: \"projects/{project}/locations/{location}/dataExchanges/{data_exchange}/listings/{listing}\"",
+"type": "string"
+},
+"subscription": {
+"description": "Optional. The name of the associated Analytics Hub subscription resource. Pattern: \"projects/{project}/locations/{location}/subscriptions/{subscription}\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AvroConfig": {
+"description": "Configuration for writing message data in Avro format. Message payloads and metadata will be written to files as an Avro binary.",
+"id": "AvroConfig",
+"properties": {
+"useTopicSchema": {
+"description": "Optional. When true, the output Cloud Storage file will be serialized using the topic schema, if it exists.",
+"type": "boolean"
+},
+"writeMetadata": {
+"description": "Optional. When true, write the subscription name, message_id, publish_time, attributes, and ordering_key as additional fields in the output. The subscription name, message_id, and publish_time fields are put in their own fields while all other message properties other than data (for example, an ordering_key, if present) are added as entries in the attributes map.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"BigQueryConfig": {
+"description": "Configuration for a BigQuery subscription.",
+"id": "BigQueryConfig",
+"properties": {
+"dropUnknownFields": {
+"description": "Optional. When true and use_topic_schema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog.",
+"type": "boolean"
+},
+"serviceAccountEmail": {
+"description": "Optional. The service account to use to write to BigQuery. The subscription creator or updater that specifies this field must have `iam.serviceAccounts.actAs` permission on the service account. If not specified, the Pub/Sub [service agent](https://cloud.google.com/iam/docs/service-agents), service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used.",
+"type": "string"
+},
+"state": {
+"description": "Output only. An output-only field that indicates whether or not the subscription can receive messages.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"PERMISSION_DENIED",
+"NOT_FOUND",
+"SCHEMA_MISMATCH",
+"IN_TRANSIT_LOCATION_RESTRICTION"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The subscription can actively send messages to BigQuery",
+"Cannot write to the BigQuery table because of permission denied errors. This can happen if - Pub/Sub SA has not been granted the [appropriate BigQuery IAM permissions](https://cloud.google.com/pubsub/docs/create-subscription#assign_bigquery_service_account) - bigquery.googleapis.com API is not enabled for the project ([instructions](https://cloud.google.com/service-usage/docs/enable-disable))",
+"Cannot write to the BigQuery table because it does not exist.",
+"Cannot write to the BigQuery table due to a schema mismatch.",
+"Cannot write to the destination because enforce_in_transit is set to true and the destination locations are not in the allowed regions."
+],
+"readOnly": true,
+"type": "string"
+},
+"table": {
+"description": "Optional. The name of the table to which to write data, of the form {projectId}.{datasetId}.{tableId}",
+"type": "string"
+},
+"useTableSchema": {
+"description": "Optional. When true, use the BigQuery table's schema as the columns to write to in BigQuery. `use_table_schema` and `use_topic_schema` cannot be enabled at the same time.",
+"type": "boolean"
+},
+"useTopicSchema": {
+"description": "Optional. When true, use the topic's schema as the columns to write to in BigQuery, if it exists. `use_topic_schema` and `use_table_schema` cannot be enabled at the same time.",
+"type": "boolean"
+},
+"writeMetadata": {
+"description": "Optional. When true, write the subscription name, message_id, publish_time, attributes, and ordering_key to additional columns in the table. The subscription name, message_id, and publish_time fields are put in their own columns while all other message properties (other than data) are written to a JSON object in the attributes column.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"BigQueryDatasetSource": {
+"description": "A reference to a shared dataset. It is an existing BigQuery dataset with a collection of objects such as tables and views that you want to share with subscribers. When subscriber's subscribe to a listing, Analytics Hub creates a linked dataset in the subscriber's project. A Linked dataset is an opaque, read-only BigQuery dataset that serves as a _symbolic link_ to a shared dataset.",
+"id": "BigQueryDatasetSource",
+"properties": {
+"dataset": {
+"description": "Resource name of the dataset source for this listing. e.g. `projects/myproject/datasets/123`",
+"type": "string"
+},
+"restrictedExportPolicy": {
+"$ref": "RestrictedExportPolicy",
+"description": "Optional. If set, restricted export policy will be propagated and enforced on the linked dataset."
+},
+"selectedResources": {
+"description": "Optional. Resource in this dataset that is selectively shared. This field is required for data clean room exchanges.",
+"items": {
+"$ref": "SelectedResource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudStorageConfig": {
+"description": "Configuration for a Cloud Storage subscription.",
+"id": "CloudStorageConfig",
+"properties": {
+"avroConfig": {
+"$ref": "AvroConfig",
+"description": "Optional. If set, message data will be written to Cloud Storage in Avro format."
+},
+"bucket": {
+"description": "Required. User-provided name for the Cloud Storage bucket. The bucket must be created by the user. The bucket name must be without any prefix like \"gs://\". See the [bucket naming requirements] (https://cloud.google.com/storage/docs/buckets#naming).",
+"type": "string"
+},
+"filenameDatetimeFormat": {
+"description": "Optional. User-provided format string specifying how to represent datetimes in Cloud Storage filenames. See the [datetime format guidance](https://cloud.google.com/pubsub/docs/create-cloudstorage-subscription#file_names).",
+"type": "string"
+},
+"filenamePrefix": {
+"description": "Optional. User-provided prefix for Cloud Storage filename. See the [object naming requirements](https://cloud.google.com/storage/docs/objects#naming).",
+"type": "string"
+},
+"filenameSuffix": {
+"description": "Optional. User-provided suffix for Cloud Storage filename. See the [object naming requirements](https://cloud.google.com/storage/docs/objects#naming). Must not end in \"/\".",
+"type": "string"
+},
+"maxBytes": {
+"description": "Optional. The maximum bytes that can be written to a Cloud Storage file before a new file is created. Min 1 KB, max 10 GiB. The max_bytes limit may be exceeded in cases where messages are larger than the limit.",
+"format": "int64",
+"type": "string"
+},
+"maxDuration": {
+"description": "Optional. The maximum duration that can elapse before a new Cloud Storage file is created. Min 1 minute, max 10 minutes, default 5 minutes. May not exceed the subscription's acknowledgement deadline.",
+"format": "google-duration",
+"type": "string"
+},
+"maxMessages": {
+"description": "Optional. The maximum number of messages that can be written to a Cloud Storage file before a new file is created. Min 1000 messages.",
+"format": "int64",
+"type": "string"
+},
+"serviceAccountEmail": {
+"description": "Optional. The service account to use to write to Cloud Storage. The subscription creator or updater that specifies this field must have `iam.serviceAccounts.actAs` permission on the service account. If not specified, the Pub/Sub [service agent](https://cloud.google.com/iam/docs/service-agents), service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com, is used.",
+"type": "string"
+},
+"state": {
+"description": "Output only. An output-only field that indicates whether or not the subscription can receive messages.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"PERMISSION_DENIED",
+"NOT_FOUND",
+"IN_TRANSIT_LOCATION_RESTRICTION",
+"SCHEMA_MISMATCH"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The subscription can actively send messages to Cloud Storage.",
+"Cannot write to the Cloud Storage bucket because of permission denied errors.",
+"Cannot write to the Cloud Storage bucket because it does not exist.",
+"Cannot write to the destination because enforce_in_transit is set to true and the destination locations are not in the allowed regions.",
+"Cannot write to the Cloud Storage bucket due to an incompatibility between the topic schema and subscription settings."
+],
+"readOnly": true,
+"type": "string"
+},
+"textConfig": {
+"$ref": "TextConfig",
+"description": "Optional. If set, message data will be written to Cloud Storage in text format."
+}
+},
+"type": "object"
+},
+"DataExchange": {
+"description": "A data exchange is a container that lets you share data. Along with the descriptive information about the data exchange, it contains listings that reference shared datasets.",
+"id": "DataExchange",
+"properties": {
+"description": {
+"description": "Optional. Description of the data exchange. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
+"type": "string"
+},
+"discoveryType": {
+"description": "Optional. Type of discovery on the discovery page for all the listings under this exchange. Updating this field also updates (overwrites) the discovery_type field for all the listings under this exchange.",
+"enum": [
+"DISCOVERY_TYPE_UNSPECIFIED",
+"DISCOVERY_TYPE_PRIVATE",
+"DISCOVERY_TYPE_PUBLIC"
+],
+"enumDescriptions": [
+"Unspecified. Defaults to DISCOVERY_TYPE_PRIVATE.",
+"The Data exchange/listing can be discovered in the 'Private' results list.",
+"The Data exchange/listing can be discovered in the 'Public' results list."
+],
+"type": "string"
+},
+"displayName": {
+"description": "Required. Human-readable display name of the data exchange. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and must not start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
+"type": "string"
+},
+"documentation": {
+"description": "Optional. Documentation describing the data exchange.",
+"type": "string"
+},
+"icon": {
+"description": "Optional. Base64 encoded image representing the data exchange. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the content of the fields are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire.",
+"format": "byte",
+"type": "string"
+},
+"listingCount": {
+"description": "Output only. Number of listings contained in the data exchange.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"name": {
+"description": "Output only. The resource name of the data exchange. e.g. `projects/myproject/locations/US/dataExchanges/123`.",
+"readOnly": true,
+"type": "string"
+},
+"primaryContact": {
+"description": "Optional. Email or URL of the primary point of contact of the data exchange. Max Length: 1000 bytes.",
+"type": "string"
+},
+"sharingEnvironmentConfig": {
+"$ref": "SharingEnvironmentConfig",
+"description": "Optional. Configurable data sharing environment option for a data exchange."
+}
+},
+"type": "object"
+},
+"DataProvider": {
+"description": "Contains details of the data provider.",
+"id": "DataProvider",
+"properties": {
+"name": {
+"description": "Optional. Name of the data provider.",
+"type": "string"
+},
+"primaryContact": {
+"description": "Optional. Email or URL of the data provider. Max Length: 1000 bytes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DcrExchangeConfig": {
+"description": "Data Clean Room (DCR), used for privacy-safe and secured data sharing.",
+"id": "DcrExchangeConfig",
+"properties": {
+"singleLinkedDatasetPerCleanroom": {
+"description": "Output only. If True, when subscribing to this DCR, it will create only one linked dataset containing all resources shared within the cleanroom. If False, when subscribing to this DCR, it will create 1 linked dataset per listing. This is not configurable, and by default, all new DCRs will have the restriction set to True.",
+"readOnly": true,
+"type": "boolean"
+},
+"singleSelectedResourceSharingRestriction": {
+"description": "Output only. If True, this DCR restricts the contributors to sharing only a single resource in a Listing. And no two resources should have the same IDs. So if a contributor adds a view with a conflicting name, the CreateListing API will reject the request. if False, the data contributor can publish an entire dataset (as before). This is not configurable, and by default, all new DCRs will have the restriction set to True.",
+"readOnly": true,
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"DeadLetterPolicy": {
+"description": "Dead lettering is done on a best effort basis. The same message might be dead lettered multiple times. If validation on any of the fields fails at subscription creation/updation, the create/update subscription request will fail.",
+"id": "DeadLetterPolicy",
+"properties": {
+"deadLetterTopic": {
+"description": "Optional. The name of the topic to which dead letter messages should be published. Format is `projects/{project}/topics/{topic}`.The Pub/Sub service account associated with the enclosing subscription's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Publish() to this topic. The operation will fail if the topic does not exist. Users should ensure that there is a subscription attached to this topic since messages published to a topic with no subscriptions are lost.",
+"type": "string"
+},
+"maxDeliveryAttempts": {
+"description": "Optional. The maximum number of delivery attempts for any message. The value must be between 5 and 100. The number of delivery attempts is defined as 1 + (the sum of number of NACKs and number of times the acknowledgement deadline has been exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0 deadline. Note that client libraries may automatically extend ack_deadlines. This field will be honored on a best effort basis. If this parameter is 0, a default value of 5 is used.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"DefaultExchangeConfig": {
+"description": "Default Analytics Hub data exchange, used for secured data sharing.",
+"id": "DefaultExchangeConfig",
+"properties": {},
+"type": "object"
+},
+"DestinationDataset": {
+"description": "Defines the destination bigquery dataset.",
+"id": "DestinationDataset",
+"properties": {
+"datasetReference": {
+"$ref": "DestinationDatasetReference",
+"description": "Required. A reference that identifies the destination dataset."
+},
+"description": {
+"description": "Optional. A user-friendly description of the dataset.",
+"type": "string"
+},
+"friendlyName": {
+"description": "Optional. A descriptive name for the dataset.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. The labels associated with this dataset. You can use these to organize and group your datasets. You can set this property when inserting or updating a dataset. See https://cloud.google.com/resource-manager/docs/creating-managing-labels for more information.",
+"type": "object"
+},
+"location": {
+"description": "Required. The geographic location where the dataset should reside. See https://cloud.google.com/bigquery/docs/locations for supported locations.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DestinationDatasetReference": {
+"description": "Contains the reference that identifies a destination bigquery dataset.",
+"id": "DestinationDatasetReference",
+"properties": {
+"datasetId": {
+"description": "Required. A unique ID for this dataset, without the project name. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 1,024 characters.",
+"type": "string"
+},
+"projectId": {
+"description": "Required. The ID of the project containing this dataset.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DestinationPubSubSubscription": {
+"description": "Defines the destination Pub/Sub subscription.",
+"id": "DestinationPubSubSubscription",
+"properties": {
+"pubsubSubscription": {
+"$ref": "GooglePubsubV1Subscription",
+"description": "Required. Destination Pub/Sub subscription resource."
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"ExpirationPolicy": {
+"description": "A policy that specifies the conditions for resource expiration (i.e., automatic resource deletion).",
+"id": "ExpirationPolicy",
+"properties": {
+"ttl": {
+"description": "Optional. Specifies the \"time-to-live\" duration for an associated resource. The resource expires if it is not active for a period of `ttl`. The definition of \"activity\" depends on the type of the associated resource. The minimum and maximum allowed values for `ttl` depend on the type of the associated resource, as well. If `ttl` is not set, the associated resource never expires.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetIamPolicyRequest": {
+"description": "Request message for `GetIamPolicy` method.",
+"id": "GetIamPolicyRequest",
+"properties": {
+"options": {
+"$ref": "GetPolicyOptions",
+"description": "OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`."
+}
+},
+"type": "object"
+},
+"GetPolicyOptions": {
+"description": "Encapsulates settings provided to GetIamPolicy.",
+"id": "GetPolicyOptions",
+"properties": {
+"requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudBigqueryAnalyticshubV1ListingCommercialInfo": {
+"description": "Commercial info contains the information about the commercial data products associated with the listing.",
+"id": "GoogleCloudBigqueryAnalyticshubV1ListingCommercialInfo",
+"properties": {
+"cloudMarketplace": {
+"$ref": "GoogleCloudBigqueryAnalyticshubV1ListingCommercialInfoGoogleCloudMarketplaceInfo",
+"description": "Output only. Details of the Marketplace Data Product associated with the Listing.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudBigqueryAnalyticshubV1ListingCommercialInfoGoogleCloudMarketplaceInfo": {
+"description": "Specifies the details of the Marketplace Data Product associated with the Listing.",
+"id": "GoogleCloudBigqueryAnalyticshubV1ListingCommercialInfoGoogleCloudMarketplaceInfo",
+"properties": {
+"commercialState": {
+"description": "Output only. Commercial state of the Marketplace Data Product.",
+"enum": [
+"COMMERCIAL_STATE_UNSPECIFIED",
+"ONBOARDING",
+"ACTIVE"
+],
+"enumDescriptions": [
+"Commercialization is incomplete and cannot be used.",
+"Commercialization has been initialized.",
+"Commercialization is complete and available for use."
+],
+"readOnly": true,
+"type": "string"
+},
+"service": {
+"description": "Output only. Resource name of the commercial service associated with the Marketplace Data Product. e.g. example.com",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudBigqueryAnalyticshubV1SubscriptionCommercialInfo": {
+"description": "Commercial info metadata for this subscription.",
+"id": "GoogleCloudBigqueryAnalyticshubV1SubscriptionCommercialInfo",
+"properties": {
+"cloudMarketplace": {
+"$ref": "GoogleCloudBigqueryAnalyticshubV1SubscriptionCommercialInfoGoogleCloudMarketplaceInfo",
+"description": "Output only. This is set when the subscription is commercialised via Cloud Marketplace.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudBigqueryAnalyticshubV1SubscriptionCommercialInfoGoogleCloudMarketplaceInfo": {
+"description": "Cloud Marketplace commercial metadata for this subscription.",
+"id": "GoogleCloudBigqueryAnalyticshubV1SubscriptionCommercialInfoGoogleCloudMarketplaceInfo",
+"properties": {
+"order": {
+"description": "Resource name of the Marketplace Order.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GooglePubsubV1Subscription": {
+"description": "A subscription resource. If none of `push_config`, `bigquery_config`, or `cloud_storage_config` is set, then the subscriber will pull and ack messages using API methods. At most one of these fields may be set.",
+"id": "GooglePubsubV1Subscription",
+"properties": {
+"ackDeadlineSeconds": {
+"description": "Optional. The approximate amount of time (on a best-effort basis) Pub/Sub waits for the subscriber to acknowledge receipt before resending the message. In the interval after the message is delivered and before it is acknowledged, it is considered to be _outstanding_. During that time period, the message will not be redelivered (on a best-effort basis). For pull subscriptions, this value is used as the initial value for the ack deadline. To override this value for a given message, call `ModifyAckDeadline` with the corresponding `ack_id` if using non-streaming pull or send the `ack_id` in a `StreamingModifyAckDeadlineRequest` if using streaming pull. The minimum custom deadline you can specify is 10 seconds. The maximum custom deadline you can specify is 600 seconds (10 minutes). If this parameter is 0, a default value of 10 seconds is used. For push delivery, this value is also used to set the request timeout for the call to the push endpoint. If the subscriber never acknowledges the message, the Pub/Sub system will eventually redeliver the message.",
+"format": "int32",
+"type": "integer"
+},
+"analyticsHubSubscriptionInfo": {
+"$ref": "AnalyticsHubSubscriptionInfo",
+"description": "Output only. Information about the associated Analytics Hub subscription. Only set if the subscritpion is created by Analytics Hub.",
+"readOnly": true
+},
+"bigqueryConfig": {
+"$ref": "BigQueryConfig",
+"description": "Optional. If delivery to BigQuery is used with this subscription, this field is used to configure it."
+},
+"cloudStorageConfig": {
+"$ref": "CloudStorageConfig",
+"description": "Optional. If delivery to Google Cloud Storage is used with this subscription, this field is used to configure it."
+},
+"deadLetterPolicy": {
+"$ref": "DeadLetterPolicy",
+"description": "Optional. A policy that specifies the conditions for dead lettering messages in this subscription. If dead_letter_policy is not set, dead lettering is disabled. The Pub/Sub service account associated with this subscriptions's parent project (i.e., service-{project_number}@gcp-sa-pubsub.iam.gserviceaccount.com) must have permission to Acknowledge() messages on this subscription."
+},
+"detached": {
+"description": "Optional. Indicates whether the subscription is detached from its topic. Detached subscriptions don't receive messages from their topic and don't retain any backlog. `Pull` and `StreamingPull` requests will return FAILED_PRECONDITION. If the subscription is a push subscription, pushes to the endpoint will not be made.",
+"type": "boolean"
+},
+"enableExactlyOnceDelivery": {
+"description": "Optional. If true, Pub/Sub provides the following guarantees for the delivery of a message with a given value of `message_id` on this subscription: * The message sent to a subscriber is guaranteed not to be resent before the message's acknowledgement deadline expires. * An acknowledged message will not be resent to a subscriber. Note that subscribers may still receive multiple copies of a message when `enable_exactly_once_delivery` is true if the message was published multiple times by a publisher client. These copies are considered distinct by Pub/Sub and have distinct `message_id` values.",
+"type": "boolean"
+},
+"enableMessageOrdering": {
+"description": "Optional. If true, messages published with the same `ordering_key` in `PubsubMessage` will be delivered to the subscribers in the order in which they are received by the Pub/Sub system. Otherwise, they may be delivered in any order.",
+"type": "boolean"
+},
+"expirationPolicy": {
+"$ref": "ExpirationPolicy",
+"description": "Optional. A policy that specifies the conditions for this subscription's expiration. A subscription is considered active as long as any connected subscriber is successfully consuming messages from the subscription or is issuing operations on the subscription. If `expiration_policy` is not set, a *default policy* with `ttl` of 31 days will be used. The minimum allowed value for `expiration_policy.ttl` is 1 day. If `expiration_policy` is set, but `expiration_policy.ttl` is not set, the subscription never expires."
+},
+"filter": {
+"description": "Optional. An expression written in the Pub/Sub [filter language](https://cloud.google.com/pubsub/docs/filtering). If non-empty, then only `PubsubMessage`s whose `attributes` field matches the filter are delivered on this subscription. If empty, then no messages are filtered out.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. See [Creating and managing labels](https://cloud.google.com/pubsub/docs/labels).",
+"type": "object"
+},
+"messageRetentionDuration": {
+"description": "Optional. How long to retain unacknowledged messages in the subscription's backlog, from the moment a message is published. If `retain_acked_messages` is true, then this also configures the retention of acknowledged messages, and thus configures how far back in time a `Seek` can be done. Defaults to 7 days. Cannot be more than 31 days or less than 10 minutes.",
+"format": "google-duration",
+"type": "string"
+},
+"name": {
+"description": "Required. Name of the subscription. Format is `projects/{project}/subscriptions/{sub}`.",
+"type": "string"
+},
+"pushConfig": {
+"$ref": "PushConfig",
+"description": "Optional. If push delivery is used with this subscription, this field is used to configure it."
+},
+"retainAckedMessages": {
+"description": "Optional. Indicates whether to retain acknowledged messages. If true, then messages are not expunged from the subscription's backlog, even if they are acknowledged, until they fall out of the `message_retention_duration` window. This must be true if you would like to [`Seek` to a timestamp] (https://cloud.google.com/pubsub/docs/replay-overview#seek_to_a_time) in the past to replay previously-acknowledged messages.",
+"type": "boolean"
+},
+"retryPolicy": {
+"$ref": "RetryPolicy",
+"description": "Optional. A policy that specifies how Pub/Sub retries message delivery for this subscription. If not set, the default retry policy is applied. This generally implies that messages will be retried as soon as possible for healthy subscribers. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message."
+},
+"state": {
+"description": "Output only. An output-only field indicating whether or not the subscription can receive messages.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"RESOURCE_ERROR"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The subscription can actively receive messages",
+"The subscription cannot receive messages because of an error with the resource to which it pushes messages. See the more detailed error state in the corresponding configuration."
+],
+"readOnly": true,
+"type": "string"
+},
+"topicMessageRetentionDuration": {
+"description": "Output only. Indicates the minimum duration for which a message is retained after it is published to the subscription's topic. If this field is set, messages published to the subscription's topic in the last `topic_message_retention_duration` are always available to subscribers. See the `message_retention_duration` field in `Topic`. This field is set only in responses from the server; it is ignored if it is set in any requests.",
+"format": "google-duration",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"LinkedResource": {
+"description": "Reference to a linked resource tracked by this Subscription.",
+"id": "LinkedResource",
+"properties": {
+"linkedDataset": {
+"description": "Output only. Name of the linked dataset, e.g. projects/subscriberproject/datasets/linked_dataset",
+"readOnly": true,
+"type": "string"
+},
+"linkedPubsubSubscription": {
+"description": "Output only. Name of the Pub/Sub subscription, e.g. projects/subscriberproject/subscriptions/subscriptions/sub_id",
+"readOnly": true,
+"type": "string"
+},
+"listing": {
+"description": "Output only. Listing for which linked resource is created.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListDataExchangesResponse": {
+"description": "Message for response to the list of data exchanges.",
+"id": "ListDataExchangesResponse",
+"properties": {
+"dataExchanges": {
+"description": "The list of data exchanges.",
+"items": {
+"$ref": "DataExchange"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to request the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListListingsResponse": {
+"description": "Message for response to the list of Listings.",
+"id": "ListListingsResponse",
+"properties": {
+"listings": {
+"description": "The list of Listing.",
+"items": {
+"$ref": "Listing"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to request the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOrgDataExchangesResponse": {
+"description": "Message for response to listing data exchanges in an organization and location.",
+"id": "ListOrgDataExchangesResponse",
+"properties": {
+"dataExchanges": {
+"description": "The list of data exchanges.",
+"items": {
+"$ref": "DataExchange"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to request the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListSharedResourceSubscriptionsResponse": {
+"description": "Message for response to the listing of shared resource subscriptions.",
+"id": "ListSharedResourceSubscriptionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"sharedResourceSubscriptions": {
+"description": "The list of subscriptions.",
+"items": {
+"$ref": "Subscription"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListSubscriptionsResponse": {
+"description": "Message for response to the listing of subscriptions.",
+"id": "ListSubscriptionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"subscriptions": {
+"description": "The list of subscriptions.",
+"items": {
+"$ref": "Subscription"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Listing": {
+"description": "A listing is what gets published into a data exchange that a subscriber can subscribe to. It contains a reference to the data source along with descriptive information that will help subscribers find and subscribe the data.",
+"id": "Listing",
+"properties": {
+"bigqueryDataset": {
+"$ref": "BigQueryDatasetSource",
+"description": "Required. Shared dataset i.e. BigQuery dataset source."
+},
+"categories": {
+"description": "Optional. Categories of the listing. Up to two categories are allowed.",
+"items": {
+"enum": [
+"CATEGORY_UNSPECIFIED",
+"CATEGORY_OTHERS",
+"CATEGORY_ADVERTISING_AND_MARKETING",
+"CATEGORY_COMMERCE",
+"CATEGORY_CLIMATE_AND_ENVIRONMENT",
+"CATEGORY_DEMOGRAPHICS",
+"CATEGORY_ECONOMICS",
+"CATEGORY_EDUCATION",
+"CATEGORY_ENERGY",
+"CATEGORY_FINANCIAL",
+"CATEGORY_GAMING",
+"CATEGORY_GEOSPATIAL",
+"CATEGORY_HEALTHCARE_AND_LIFE_SCIENCE",
+"CATEGORY_MEDIA",
+"CATEGORY_PUBLIC_SECTOR",
+"CATEGORY_RETAIL",
+"CATEGORY_SPORTS",
+"CATEGORY_SCIENCE_AND_RESEARCH",
+"CATEGORY_TRANSPORTATION_AND_LOGISTICS",
+"CATEGORY_TRAVEL_AND_TOURISM"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"commercialInfo": {
+"$ref": "GoogleCloudBigqueryAnalyticshubV1ListingCommercialInfo",
+"description": "Output only. Commercial info contains the information about the commercial data products associated with the listing.",
+"readOnly": true
+},
+"dataProvider": {
+"$ref": "DataProvider",
+"description": "Optional. Details of the data provider who owns the source data."
+},
+"description": {
+"description": "Optional. Short description of the listing. The description must not contain Unicode non-characters and C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
+"type": "string"
+},
+"discoveryType": {
+"description": "Optional. Type of discovery of the listing on the discovery page.",
+"enum": [
+"DISCOVERY_TYPE_UNSPECIFIED",
+"DISCOVERY_TYPE_PRIVATE",
+"DISCOVERY_TYPE_PUBLIC"
+],
+"enumDescriptions": [
+"Unspecified. Defaults to DISCOVERY_TYPE_PRIVATE.",
+"The Data exchange/listing can be discovered in the 'Private' results list.",
+"The Data exchange/listing can be discovered in the 'Public' results list."
+],
+"type": "string"
+},
+"displayName": {
+"description": "Required. Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
+"type": "string"
+},
+"documentation": {
+"description": "Optional. Documentation describing the listing.",
+"type": "string"
+},
+"icon": {
+"description": "Optional. Base64 encoded image representing the listing. Max Size: 3.0MiB Expected image dimensions are 512x512 pixels, however the API only performs validation on size of the encoded data. Note: For byte fields, the contents of the field are base64-encoded (which increases the size of the data by 33-36%) when using JSON on the wire.",
+"format": "byte",
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the listing. e.g. `projects/myproject/locations/US/dataExchanges/123/listings/456`",
+"readOnly": true,
+"type": "string"
+},
+"primaryContact": {
+"description": "Optional. Email or URL of the primary point of contact of the listing. Max Length: 1000 bytes.",
+"type": "string"
+},
+"publisher": {
+"$ref": "Publisher",
+"description": "Optional. Details of the publisher who owns the listing and who can share the source data."
+},
+"pubsubTopic": {
+"$ref": "PubSubTopicSource",
+"description": "Required. Pub/Sub topic source."
+},
+"requestAccess": {
+"description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes.",
+"type": "string"
+},
+"resourceType": {
+"description": "Output only. Listing shared asset type.",
+"enum": [
+"SHARED_RESOURCE_TYPE_UNSPECIFIED",
+"BIGQUERY_DATASET",
+"PUBSUB_TOPIC"
+],
+"enumDescriptions": [
+"Not specified.",
+"BigQuery Dataset Asset.",
+"Pub/Sub Topic Asset."
+],
+"readOnly": true,
+"type": "string"
+},
+"restrictedExportConfig": {
+"$ref": "RestrictedExportConfig",
+"description": "Optional. If set, restricted export configuration will be propagated and enforced on the linked dataset."
+},
+"state": {
+"description": "Output only. Current state of the listing.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"Subscribable state. Users with dataexchange.listings.subscribe permission can subscribe to this listing."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"NoWrapper": {
+"description": "Sets the `data` field as the HTTP body for delivery.",
+"id": "NoWrapper",
+"properties": {
+"writeMetadata": {
+"description": "Optional. When true, writes the Pub/Sub message metadata to `x-goog-pubsub-:` headers of the HTTP request. Writes the Pub/Sub message attributes to `:` headers of the HTTP request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"OidcToken": {
+"description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect).",
+"id": "OidcToken",
+"properties": {
+"audience": {
+"description": "Optional. Audience to be used when generating OIDC token. The audience claim identifies the recipients that the JWT is intended for. The audience value is a single case-sensitive string. Having multiple values (array) for the audience field is not supported. More info about the OIDC JWT token audience here: https://tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the Push endpoint URL will be used.",
+"type": "string"
+},
+"serviceAccountEmail": {
+"description": "Optional. [Service account email](https://cloud.google.com/iam/docs/service-accounts) used for generating the OIDC token. For more information on setting up authentication, see [Push subscriptions](https://cloud.google.com/pubsub/docs/push).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of a long-running operation in Analytics Hub.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"PubSubTopicSource": {
+"description": "Pub/Sub topic source.",
+"id": "PubSubTopicSource",
+"properties": {
+"dataAffinityRegions": {
+"description": "Optional. Region hint on where the data might be published. Data affinity regions are modifiable. See go/regions for full listing of possible Cloud regions.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"topic": {
+"description": "Required. Resource name of the Pub/Sub topic source for this listing. e.g. projects/myproject/topics/topicId",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Publisher": {
+"description": "Contains details of the listing publisher.",
+"id": "Publisher",
+"properties": {
+"name": {
+"description": "Optional. Name of the listing publisher.",
+"type": "string"
+},
+"primaryContact": {
+"description": "Optional. Email or URL of the listing publisher. Max Length: 1000 bytes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PubsubWrapper": {
+"description": "The payload to the push endpoint is in the form of the JSON representation of a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage).",
+"id": "PubsubWrapper",
+"properties": {},
+"type": "object"
+},
+"PushConfig": {
+"description": "Configuration for a push delivery endpoint.",
+"id": "PushConfig",
+"properties": {
+"attributes": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Endpoint configuration attributes that can be used to control different aspects of the message delivery. The only currently supported attribute is `x-goog-version`, which you can use to change the format of the pushed message. This attribute indicates the version of the data expected by the endpoint. This controls the shape of the pushed message (i.e., its fields and metadata). If not present during the `CreateSubscription` call, it will default to the version of the Pub/Sub API used to make such call. If not present in a `ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls will always return a valid version, even if the subscription was created without this attribute. The only supported values for the `x-goog-version` attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API. For example: `attributes { \"x-goog-version\": \"v1\" }`",
+"type": "object"
+},
+"noWrapper": {
+"$ref": "NoWrapper",
+"description": "Optional. When set, the payload to the push endpoint is not wrapped."
+},
+"oidcToken": {
+"$ref": "OidcToken",
+"description": "Optional. If specified, Pub/Sub will generate and attach an OIDC JWT token as an `Authorization` header in the HTTP request for every pushed message."
+},
+"pubsubWrapper": {
+"$ref": "PubsubWrapper",
+"description": "Optional. When set, the payload to the push endpoint is in the form of the JSON representation of a PubsubMessage (https://cloud.google.com/pubsub/docs/reference/rpc/google.pubsub.v1#pubsubmessage)."
+},
+"pushEndpoint": {
+"description": "Optional. A URL locating the endpoint to which messages should be pushed. For example, a Webhook endpoint might use `https://example.com/push`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RefreshSubscriptionRequest": {
+"description": "Message for refreshing a subscription.",
+"id": "RefreshSubscriptionRequest",
+"properties": {},
+"type": "object"
+},
+"RefreshSubscriptionResponse": {
+"description": "Message for response when you refresh a subscription.",
+"id": "RefreshSubscriptionResponse",
+"properties": {
+"subscription": {
+"$ref": "Subscription",
+"description": "The refreshed subscription resource."
+}
+},
+"type": "object"
+},
+"RestrictedExportConfig": {
+"description": "Restricted export config, used to configure restricted export on linked dataset.",
+"id": "RestrictedExportConfig",
+"properties": {
+"enabled": {
+"description": "Optional. If true, enable restricted export.",
+"type": "boolean"
+},
+"restrictDirectTableAccess": {
+"description": "Output only. If true, restrict direct table access(read api/tabledata.list) on linked table.",
+"readOnly": true,
+"type": "boolean"
+},
+"restrictQueryResult": {
+"description": "Optional. If true, restrict export of query result derived from restricted linked dataset table.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"RestrictedExportPolicy": {
+"description": "Restricted export policy used to configure restricted export on linked dataset.",
+"id": "RestrictedExportPolicy",
+"properties": {
+"enabled": {
+"description": "Optional. If true, enable restricted export.",
+"type": "boolean"
+},
+"restrictDirectTableAccess": {
+"description": "Optional. If true, restrict direct table access (read api/tabledata.list) on linked table.",
+"type": "boolean"
+},
+"restrictQueryResult": {
+"description": "Optional. If true, restrict export of query result derived from restricted linked dataset table.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"RetryPolicy": {
+"description": "A policy that specifies how Pub/Sub retries message delivery. Retry delay will be exponential based on provided minimum and maximum backoffs. https://en.wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be triggered on NACKs or acknowledgement deadline exceeded events for a given message. Retry Policy is implemented on a best effort basis. At times, the delay between consecutive deliveries may not match the configuration. That is, delay can be more or less than configured backoff.",
+"id": "RetryPolicy",
+"properties": {
+"maximumBackoff": {
+"description": "Optional. The maximum delay between consecutive deliveries of a given message. Value should be between 0 and 600 seconds. Defaults to 600 seconds.",
+"format": "google-duration",
+"type": "string"
+},
+"minimumBackoff": {
+"description": "Optional. The minimum delay between consecutive deliveries of a given message. Value should be between 0 and 600 seconds. Defaults to 10 seconds.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RevokeSubscriptionRequest": {
+"description": "Message for revoking a subscription.",
+"id": "RevokeSubscriptionRequest",
+"properties": {},
+"type": "object"
+},
+"RevokeSubscriptionResponse": {
+"description": "Message for response when you revoke a subscription. Empty for now.",
+"id": "RevokeSubscriptionResponse",
+"properties": {},
+"type": "object"
+},
+"SelectedResource": {
+"description": "Resource in this dataset that is selectively shared.",
+"id": "SelectedResource",
+"properties": {
+"table": {
+"description": "Optional. Format: For table: `projects/{projectId}/datasets/{datasetId}/tables/{tableId}` Example:\"projects/test_project/datasets/test_dataset/tables/test_table\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SharingEnvironmentConfig": {
+"description": "Sharing environment is a behavior model for sharing data within a data exchange. This option is configurable for a data exchange.",
+"id": "SharingEnvironmentConfig",
+"properties": {
+"dcrExchangeConfig": {
+"$ref": "DcrExchangeConfig",
+"description": "Data Clean Room (DCR), used for privacy-safe and secured data sharing."
+},
+"defaultExchangeConfig": {
+"$ref": "DefaultExchangeConfig",
+"description": "Default Analytics Hub data exchange, used for secured data sharing."
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SubscribeDataExchangeRequest": {
+"description": "Message for subscribing to a Data Exchange.",
+"id": "SubscribeDataExchangeRequest",
+"properties": {
+"destination": {
+"description": "Required. The parent resource path of the Subscription. e.g. `projects/subscriberproject/locations/US`",
+"type": "string"
+},
+"destinationDataset": {
+"$ref": "DestinationDataset",
+"description": "Optional. BigQuery destination dataset to create for the subscriber."
+},
+"subscriberContact": {
+"description": "Email of the subscriber.",
+"type": "string"
+},
+"subscription": {
+"description": "Required. Name of the subscription to create. e.g. `subscription1`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SubscribeDataExchangeResponse": {
+"description": "Message for response when you subscribe to a Data Exchange.",
+"id": "SubscribeDataExchangeResponse",
+"properties": {
+"subscription": {
+"$ref": "Subscription",
+"description": "Subscription object created from this subscribe action."
+}
+},
+"type": "object"
+},
+"SubscribeListingRequest": {
+"description": "Message for subscribing to a listing.",
+"id": "SubscribeListingRequest",
+"properties": {
+"destinationDataset": {
+"$ref": "DestinationDataset",
+"description": "Input only. BigQuery destination dataset to create for the subscriber."
+},
+"destinationPubsubSubscription": {
+"$ref": "DestinationPubSubSubscription",
+"description": "Required. Input only. Destination Pub/Sub subscription to create for the subscriber."
+}
+},
+"type": "object"
+},
+"SubscribeListingResponse": {
+"description": "Message for response when you subscribe to a listing.",
+"id": "SubscribeListingResponse",
+"properties": {
+"subscription": {
+"$ref": "Subscription",
+"description": "Subscription object created from this subscribe action."
+}
+},
+"type": "object"
+},
+"Subscription": {
+"description": "A subscription represents a subscribers' access to a particular set of published data. It contains references to associated listings, data exchanges, and linked datasets.",
+"id": "Subscription",
+"properties": {
+"commercialInfo": {
+"$ref": "GoogleCloudBigqueryAnalyticshubV1SubscriptionCommercialInfo",
+"description": "Output only. This is set if this is a commercial subscription i.e. if this subscription was created from subscribing to a commercial listing.",
+"readOnly": true
+},
+"creationTime": {
+"description": "Output only. Timestamp when the subscription was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"dataExchange": {
+"description": "Output only. Resource name of the source Data Exchange. e.g. projects/123/locations/US/dataExchanges/456",
+"readOnly": true,
+"type": "string"
+},
+"lastModifyTime": {
+"description": "Output only. Timestamp when the subscription was last modified.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"linkedDatasetMap": {
+"additionalProperties": {
+"$ref": "LinkedResource"
+},
+"description": "Output only. Map of listing resource names to associated linked resource, e.g. projects/123/locations/US/dataExchanges/456/listings/789 -> projects/123/datasets/my_dataset For listing-level subscriptions, this is a map of size 1. Only contains values if state == STATE_ACTIVE.",
+"readOnly": true,
+"type": "object"
+},
+"linkedResources": {
+"description": "Output only. Linked resources created in the subscription. Only contains values if state = STATE_ACTIVE.",
+"items": {
+"$ref": "LinkedResource"
+},
+"readOnly": true,
+"type": "array"
+},
+"listing": {
+"description": "Output only. Resource name of the source Listing. e.g. projects/123/locations/US/dataExchanges/456/listings/789",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the subscription. e.g. `projects/myproject/locations/US/subscriptions/123`.",
+"readOnly": true,
+"type": "string"
+},
+"organizationDisplayName": {
+"description": "Output only. Display name of the project of this subscription.",
+"readOnly": true,
+"type": "string"
+},
+"organizationId": {
+"description": "Output only. Organization of the project this subscription belongs to.",
+"readOnly": true,
+"type": "string"
+},
+"resourceType": {
+"description": "Output only. Listing shared asset type.",
+"enum": [
+"SHARED_RESOURCE_TYPE_UNSPECIFIED",
+"BIGQUERY_DATASET",
+"PUBSUB_TOPIC"
+],
+"enumDescriptions": [
+"Not specified.",
+"BigQuery Dataset Asset.",
+"Pub/Sub Topic Asset."
+],
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. Current state of the subscription.",
+"enum": [
+"STATE_UNSPECIFIED",
+"STATE_ACTIVE",
+"STATE_STALE",
+"STATE_INACTIVE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"This subscription is active and the data is accessible.",
+"The data referenced by this subscription is out of date and should be refreshed. This can happen when a data provider adds or removes datasets.",
+"This subscription has been cancelled or revoked and the data is no longer accessible."
+],
+"readOnly": true,
+"type": "string"
+},
+"subscriberContact": {
+"description": "Output only. Email of the subscriber.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TextConfig": {
+"description": "Configuration for writing message data in text format. Message payloads will be written to files as raw text, separated by a newline.",
+"id": "TextConfig",
+"properties": {},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Analytics Hub API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/apikeys.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/apikeys.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..55930eaf066d33a7dc83d848715ae64df3f576ff
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/apikeys.v2.json
@@ -0,0 +1,702 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/cloud-platform.read-only": {
+"description": "View your data across Google Cloud services and see the email address of your Google Account"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://apikeys.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Api Keys Service",
+"description": "Manages the API keys associated with developer projects.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/api-keys/docs",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "apikeys:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://apikeys.mtls.googleapis.com/",
+"name": "apikeys",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"keys": {
+"methods": {
+"lookupKey": {
+"description": "Find the parent project and resource name of the API key that matches the key string in the request. If the API key has been purged, resource name will not be set. The service account must have the `apikeys.keys.lookup` permission on the parent project.",
+"flatPath": "v2/keys:lookupKey",
+"httpMethod": "GET",
+"id": "apikeys.keys.lookupKey",
+"parameterOrder": [],
+"parameters": {
+"keyString": {
+"description": "Required. Finds the project that owns the key string value.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/keys:lookupKey",
+"response": {
+"$ref": "V2LookupKeyResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v2/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "apikeys.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+}
+}
+},
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"keys": {
+"methods": {
+"create": {
+"description": "Creates a new API key. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/keys",
+"httpMethod": "POST",
+"id": "apikeys.projects.locations.keys.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"keyId": {
+"description": "User specified key id (optional). If specified, it will become the final component of the key resource name. The id must be unique within the project, must conform with RFC-1034, is restricted to lower-cased letters, and has a maximum length of 63 characters. In another word, the id must match the regular expression: `[a-z]([a-z0-9-]{0,61}[a-z0-9])?`. The id must NOT be a UUID-like string.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project in which the API key is created.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/keys",
+"request": {
+"$ref": "V2Key"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an API key. Deleted key can be retrieved within 30 days of deletion. Afterward, key will be purged from the project. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/keys/{keysId}",
+"httpMethod": "DELETE",
+"id": "apikeys.projects.locations.keys.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The etag known to the client for the expected state of the key. This is to be used for optimistic concurrency.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The resource name of the API key to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/keys/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the metadata for an API key. The key string of the API key isn't included in the response. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/keys/{keysId}",
+"httpMethod": "GET",
+"id": "apikeys.projects.locations.keys.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the API key to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/keys/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "V2Key"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getKeyString": {
+"description": "Get the key string for an API key. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/keys/{keysId}/keyString",
+"httpMethod": "GET",
+"id": "apikeys.projects.locations.keys.getKeyString",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the API key to be retrieved.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/keys/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}/keyString",
+"response": {
+"$ref": "V2GetKeyStringResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"list": {
+"description": "Lists the API keys owned by a project. The key string of the API key isn't included in the response. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/keys",
+"httpMethod": "GET",
+"id": "apikeys.projects.locations.keys.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. Specifies the maximum number of results to be returned at a time.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. Requests a specific page of results.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Lists all API keys associated with this project.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"showDeleted": {
+"description": "Optional. Indicate that keys deleted in the past 30 days should also be returned.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v2/{+parent}/keys",
+"response": {
+"$ref": "V2ListKeysResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"patch": {
+"description": "Patches the modifiable fields of an API key. The key string of the API key isn't included in the response. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/keys/{keysId}",
+"httpMethod": "PATCH",
+"id": "apikeys.projects.locations.keys.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The resource name of the key. The `name` has the form: `projects//locations/global/keys/`. For example: `projects/123456867718/locations/global/keys/b7ff1f9f-8275-410a-94dd-3855ee9b5dd2` NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/keys/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The field mask specifies which fields to be updated as part of this request. All other fields are ignored. Mutable fields are: `display_name`, `restrictions`, and `annotations`. If an update mask is not provided, the service treats it as an implied mask equivalent to all allowed fields that are set on the wire. If the field mask has a special value \"*\", the service treats it equivalent to replace all allowed mutable fields.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "V2Key"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"undelete": {
+"description": "Undeletes an API key which was deleted within 30 days. NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/keys/{keysId}:undelete",
+"httpMethod": "POST",
+"id": "apikeys.projects.locations.keys.undelete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the API key to be undeleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/keys/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:undelete",
+"request": {
+"$ref": "V2UndeleteKeyRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241016",
+"rootUrl": "https://apikeys.googleapis.com/",
+"schemas": {
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"V2AndroidApplication": {
+"description": "Identifier of an Android application for key use.",
+"id": "V2AndroidApplication",
+"properties": {
+"packageName": {
+"description": "The package name of the application.",
+"type": "string"
+},
+"sha1Fingerprint": {
+"description": "The SHA1 fingerprint of the application. For example, both sha1 formats are acceptable : DA:39:A3:EE:5E:6B:4B:0D:32:55:BF:EF:95:60:18:90:AF:D8:07:09 or DA39A3EE5E6B4B0D3255BFEF95601890AFD80709. Output format is the latter.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"V2AndroidKeyRestrictions": {
+"description": "The Android apps that are allowed to use the key.",
+"id": "V2AndroidKeyRestrictions",
+"properties": {
+"allowedApplications": {
+"description": "A list of Android applications that are allowed to make API calls with this key.",
+"items": {
+"$ref": "V2AndroidApplication"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"V2ApiTarget": {
+"description": "A restriction for a specific service and optionally one or multiple specific methods. Both fields are case insensitive.",
+"id": "V2ApiTarget",
+"properties": {
+"methods": {
+"description": "Optional. List of one or more methods that can be called. If empty, all methods for the service are allowed. A wildcard (*) can be used as the last symbol. Valid examples: `google.cloud.translate.v2.TranslateService.GetSupportedLanguage` `TranslateText` `Get*` `translate.googleapis.com.Get*`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"service": {
+"description": "The service for this restriction. It should be the canonical service name, for example: `translate.googleapis.com`. You can use [`gcloud services list`](https://cloud.google.com/sdk/gcloud/reference/services/list) to get a list of services that are enabled in the project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"V2BrowserKeyRestrictions": {
+"description": "The HTTP referrers (websites) that are allowed to use the key.",
+"id": "V2BrowserKeyRestrictions",
+"properties": {
+"allowedReferrers": {
+"description": "A list of regular expressions for the referrer URLs that are allowed to make API calls with this key.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"V2GetKeyStringResponse": {
+"description": "Response message for `GetKeyString` method.",
+"id": "V2GetKeyStringResponse",
+"properties": {
+"keyString": {
+"description": "An encrypted and signed value of the key.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"V2IosKeyRestrictions": {
+"description": "The iOS apps that are allowed to use the key.",
+"id": "V2IosKeyRestrictions",
+"properties": {
+"allowedBundleIds": {
+"description": "A list of bundle IDs that are allowed when making API calls with this key.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"V2Key": {
+"description": "The representation of a key managed by the API Keys API.",
+"id": "V2Key",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Annotations is an unstructured key-value map stored with a policy that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects.",
+"type": "object"
+},
+"createTime": {
+"description": "Output only. A timestamp identifying the time this key was originally created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deleteTime": {
+"description": "Output only. A timestamp when this key was deleted. If the resource is not deleted, this must be empty.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Human-readable display name of this key that you can modify. The maximum length is 63 characters.",
+"type": "string"
+},
+"etag": {
+"description": "Output only. A checksum computed by the server based on the current value of the Key resource. This may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding. See https://google.aip.dev/154.",
+"readOnly": true,
+"type": "string"
+},
+"keyString": {
+"description": "Output only. An encrypted and signed value held by this key. This field can be accessed only through the `GetKeyString` method.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the key. The `name` has the form: `projects//locations/global/keys/`. For example: `projects/123456867718/locations/global/keys/b7ff1f9f-8275-410a-94dd-3855ee9b5dd2` NOTE: Key is a global resource; hence the only supported value for location is `global`.",
+"readOnly": true,
+"type": "string"
+},
+"restrictions": {
+"$ref": "V2Restrictions",
+"description": "Key restrictions."
+},
+"serviceAccountEmail": {
+"description": "Optional. The email address of [the service account](https://cloud.google.com/iam/docs/service-accounts) the key is bound to.",
+"type": "string"
+},
+"uid": {
+"description": "Output only. Unique id in UUID4 format.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. A timestamp identifying the time this key was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"V2ListKeysResponse": {
+"description": "Response message for `ListKeys` method.",
+"id": "V2ListKeysResponse",
+"properties": {
+"keys": {
+"description": "A list of API keys.",
+"items": {
+"$ref": "V2Key"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The pagination token for the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"V2LookupKeyResponse": {
+"description": "Response message for `LookupKey` method.",
+"id": "V2LookupKeyResponse",
+"properties": {
+"name": {
+"description": "The resource name of the API key. If the API key has been purged, resource name is empty.",
+"type": "string"
+},
+"parent": {
+"description": "The project that owns the key with the value specified in the request.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"V2Restrictions": {
+"description": "Describes the restrictions on the key.",
+"id": "V2Restrictions",
+"properties": {
+"androidKeyRestrictions": {
+"$ref": "V2AndroidKeyRestrictions",
+"description": "The Android apps that are allowed to use the key."
+},
+"apiTargets": {
+"description": "A restriction for a specific service and optionally one or more specific methods. Requests are allowed if they match any of these restrictions. If no restrictions are specified, all targets are allowed.",
+"items": {
+"$ref": "V2ApiTarget"
+},
+"type": "array"
+},
+"browserKeyRestrictions": {
+"$ref": "V2BrowserKeyRestrictions",
+"description": "The HTTP referrers (websites) that are allowed to use the key."
+},
+"iosKeyRestrictions": {
+"$ref": "V2IosKeyRestrictions",
+"description": "The iOS apps that are allowed to use the key."
+},
+"serverKeyRestrictions": {
+"$ref": "V2ServerKeyRestrictions",
+"description": "The IP addresses of callers that are allowed to use the key."
+}
+},
+"type": "object"
+},
+"V2ServerKeyRestrictions": {
+"description": "The IP addresses of callers that are allowed to use the key.",
+"id": "V2ServerKeyRestrictions",
+"properties": {
+"allowedIps": {
+"description": "A list of the caller IP addresses that are allowed to make API calls with this key.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"V2UndeleteKeyRequest": {
+"description": "Request message for `UndeleteKey` method.",
+"id": "V2UndeleteKeyRequest",
+"properties": {},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "API Keys API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/assuredworkloads.v1beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/assuredworkloads.v1beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..02c2b4a6bb4dca52f528b0d9e491172e8773876b
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/assuredworkloads.v1beta1.json
@@ -0,0 +1,2130 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://assuredworkloads.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Assuredworkloads",
+"description": "",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/learnmoreurl",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "assuredworkloads:v1beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://assuredworkloads.mtls.googleapis.com/",
+"name": "assuredworkloads",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"organizations": {
+"resources": {
+"locations": {
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "assuredworkloads.organizations.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "assuredworkloads.organizations.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/operations",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"workloads": {
+"methods": {
+"analyzeWorkloadMove": {
+"description": "Analyzes a hypothetical move of a source resource to a target workload to surface compliance risks. The analysis is best effort and is not guaranteed to be exhaustive.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}:analyzeWorkloadMove",
+"httpMethod": "GET",
+"id": "assuredworkloads.organizations.locations.workloads.analyzeWorkloadMove",
+"parameterOrder": [
+"target"
+],
+"parameters": {
+"assetTypes": {
+"description": "Optional. List of asset types to be analyzed, including and under the source resource. If empty, all assets are analyzed. The complete list of asset types is available [here](https://cloud.google.com/asset-inventory/docs/supported-asset-types).",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Page size. If a value is not specified, the default value of 10 is used.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The page token from the previous response. It needs to be passed in the second and following requests.",
+"location": "query",
+"type": "string"
+},
+"project": {
+"description": "The source type is a project. Specify the project's relative resource name, formatted as either a project number or a project ID: \"projects/{PROJECT_NUMBER}\" or \"projects/{PROJECT_ID}\" For example: \"projects/951040570662\" when specifying a project number, or \"projects/my-project-123\" when specifying a project ID.",
+"location": "query",
+"type": "string"
+},
+"target": {
+"description": "Required. The resource ID of the folder-based destination workload. This workload is where the source resource will hypothetically be moved to. Specify the workload's relative resource name, formatted as: \"organizations/{ORGANIZATION_ID}/locations/{LOCATION_ID}/workloads/{WORKLOAD_ID}\" For example: \"organizations/123/locations/us-east1/workloads/assured-workload-2\"",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+target}:analyzeWorkloadMove",
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1AnalyzeWorkloadMoveResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates Assured Workload.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads",
+"httpMethod": "POST",
+"id": "assuredworkloads.organizations.locations.workloads.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"externalId": {
+"description": "Optional. A identifier associated with the workload and underlying projects which allows for the break down of billing costs for a workload. The value provided for the identifier will add a label to the workload and contained projects with the identifier as the value.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The resource name of the new Workload's parent. Must be of the form `organizations/{org_id}/locations/{location_id}`.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/workloads",
+"request": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1Workload"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the workload. Make sure that workload's direct children are already in a deleted state, otherwise the request will fail with a FAILED_PRECONDITION error. In addition to assuredworkloads.workload.delete permission, the user should also have orgpolicy.policy.set permission on the deleted folder to remove Assured Workloads OrgPolicies.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}",
+"httpMethod": "DELETE",
+"id": "assuredworkloads.organizations.locations.workloads.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The etag of the workload. If this is provided, it must match the server's etag.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The `name` field is used to identify the workload. Format: organizations/{org_id}/locations/{location_id}/workloads/{workload_id}",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"enableComplianceUpdates": {
+"description": "This endpoint enables Assured Workloads service to offer compliance updates for the folder based assured workload. It sets up an Assured Workloads Service Agent, having permissions to read compliance controls (for example: Org Policies) applied on the workload. The caller must have `resourcemanager.folders.getIamPolicy` and `resourcemanager.folders.setIamPolicy` permissions on the assured workload folder.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}:enableComplianceUpdates",
+"httpMethod": "PUT",
+"id": "assuredworkloads.organizations.locations.workloads.enableComplianceUpdates",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The `name` field is used to identify the workload. Format: organizations/{org_id}/locations/{location_id}/workloads/{workload_id}",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:enableComplianceUpdates",
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1EnableComplianceUpdatesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"enableResourceMonitoring": {
+"description": "Enable resource violation monitoring for a workload.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}:enableResourceMonitoring",
+"httpMethod": "POST",
+"id": "assuredworkloads.organizations.locations.workloads.enableResourceMonitoring",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The `name` field is used to identify the workload. Format: organizations/{org_id}/locations/{location_id}/workloads/{workload_id}",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:enableResourceMonitoring",
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1EnableResourceMonitoringResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets Assured Workload associated with a CRM Node",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}",
+"httpMethod": "GET",
+"id": "assuredworkloads.organizations.locations.workloads.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Workload to fetch. This is the workloads's relative path in the API, formatted as \"organizations/{organization_id}/locations/{location_id}/workloads/{workload_id}\". For example, \"organizations/123/locations/us-east1/workloads/assured-workload-1\".",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1Workload"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Assured Workloads under a CRM Node.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads",
+"httpMethod": "GET",
+"id": "assuredworkloads.organizations.locations.workloads.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "A custom filter for filtering by properties of a workload. At this time, only filtering by labels is supported.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token returned from previous request. Page token contains context from previous request. Page token needs to be passed in the second and following requests.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent Resource to list workloads from. Must be of the form `organizations/{org_id}/locations/{location}`.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/workloads",
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ListWorkloadsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an existing workload. Currently allows updating of workload display_name and labels. For force updates don't set etag field in the Workload. Only one update operation per workload can be in progress.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}",
+"httpMethod": "PATCH",
+"id": "assuredworkloads.organizations.locations.workloads.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1Workload"
+},
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1Workload"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"restrictAllowedResources": {
+"description": "Restrict the list of resources allowed in the Workload environment. The current list of allowed products can be found at https://cloud.google.com/assured-workloads/docs/supported-products In addition to assuredworkloads.workload.update permission, the user should also have orgpolicy.policy.set permission on the folder resource to use this functionality.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}:restrictAllowedResources",
+"httpMethod": "POST",
+"id": "assuredworkloads.organizations.locations.workloads.restrictAllowedResources",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Workload. This is the workloads's relative path in the API, formatted as \"organizations/{organization_id}/locations/{location_id}/workloads/{workload_id}\". For example, \"organizations/123/locations/us-east1/workloads/assured-workload-1\".",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:restrictAllowedResources",
+"request": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1RestrictAllowedResourcesRequest"
+},
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1RestrictAllowedResourcesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"updates": {
+"methods": {
+"apply": {
+"description": "This endpoint creates a new operation to apply the given update.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}/updates/{updatesId}:apply",
+"httpMethod": "POST",
+"id": "assuredworkloads.organizations.locations.workloads.updates.apply",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the update. Format: organizations/{org_id}/locations/{location_id}/workloads/{workload_id}/updates/{update_id}",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+/updates/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:apply",
+"request": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ApplyWorkloadUpdateRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "This endpoint lists all updates for the given workload.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}/updates",
+"httpMethod": "GET",
+"id": "assuredworkloads.organizations.locations.workloads.updates.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Page size. The default value is 20 and the max allowed value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token returned from previous request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. organizations/{org_id}/locations/{location_id}/workloads/{workload_id}",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/updates",
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ListWorkloadUpdatesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"violations": {
+"methods": {
+"acknowledge": {
+"description": "Acknowledges an existing violation. By acknowledging a violation, users acknowledge the existence of a compliance violation in their workload and decide to ignore it due to a valid business justification. Acknowledgement is a permanent operation and it cannot be reverted.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}/violations/{violationsId}:acknowledge",
+"httpMethod": "POST",
+"id": "assuredworkloads.organizations.locations.workloads.violations.acknowledge",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Violation to acknowledge. Format: organizations/{organization}/locations/{location}/workloads/{workload}/violations/{violation}",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+/violations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:acknowledge",
+"request": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationRequest"
+},
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Retrieves Assured Workload Violation based on ID.",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}/violations/{violationsId}",
+"httpMethod": "GET",
+"id": "assuredworkloads.organizations.locations.workloads.violations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Violation to fetch (ie. Violation.name). Format: organizations/{organization}/locations/{location}/workloads/{workload}/violations/{violation}",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+/violations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1Violation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the Violations in the AssuredWorkload Environment. Callers may also choose to read across multiple Workloads as per [AIP-159](https://google.aip.dev/159) by using '-' (the hyphen or dash character) as a wildcard character instead of workload-id in the parent. Format `organizations/{org_id}/locations/{location}/workloads/-`",
+"flatPath": "v1beta1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}/violations",
+"httpMethod": "GET",
+"id": "assuredworkloads.organizations.locations.workloads.violations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. A custom filter for filtering by the Violations properties.",
+"location": "query",
+"type": "string"
+},
+"interval.endTime": {
+"description": "The end of the time window.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"interval.startTime": {
+"description": "The start of the time window.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. Page token returned from previous request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Workload name. Format `organizations/{org_id}/locations/{location}/workloads/{workload}`.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/violations",
+"response": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ListViolationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241206",
+"rootUrl": "https://assuredworkloads.googleapis.com/",
+"schemas": {
+"GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationRequest": {
+"description": "Request for acknowledging the violation",
+"id": "GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationRequest",
+"properties": {
+"acknowledgeType": {
+"description": "Optional. Acknowledge type of specified violation.",
+"enum": [
+"ACKNOWLEDGE_TYPE_UNSPECIFIED",
+"SINGLE_VIOLATION",
+"EXISTING_CHILD_RESOURCE_VIOLATIONS"
+],
+"enumDescriptions": [
+"Acknowledge type unspecified.",
+"Acknowledge only the specific violation.",
+"Acknowledge specified orgPolicy violation and also associated resource violations."
+],
+"type": "string"
+},
+"comment": {
+"description": "Required. Business justification explaining the need for violation acknowledgement",
+"type": "string"
+},
+"nonCompliantOrgPolicy": {
+"deprecated": true,
+"description": "Optional. This field is deprecated and will be removed in future version of the API. Name of the OrgPolicy which was modified with non-compliant change and resulted in this violation. Format: projects/{project_number}/policies/{constraint_name} folders/{folder_id}/policies/{constraint_name} organizations/{organization_id}/policies/{constraint_name}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationResponse": {
+"description": "Response for violation acknowledgement",
+"id": "GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1AnalyzeWorkloadMoveResponse": {
+"description": "Response containing the analysis results for the hypothetical resource move.",
+"id": "GoogleCloudAssuredworkloadsV1beta1AnalyzeWorkloadMoveResponse",
+"properties": {
+"assetMoveAnalyses": {
+"description": "List of analysis results for each asset in scope.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1AssetMoveAnalysis"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The next page token. Is empty if the last page is reached.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ApplyWorkloadUpdateOperationMetadata": {
+"description": "Operation metadata to give request details of ApplyWorkloadUpdate.",
+"id": "GoogleCloudAssuredworkloadsV1beta1ApplyWorkloadUpdateOperationMetadata",
+"properties": {
+"action": {
+"description": "Optional. The time the operation was created.",
+"enum": [
+"WORKLOAD_UPDATE_ACTION_UNSPECIFIED",
+"APPLY"
+],
+"enumDescriptions": [
+"Unspecified value.",
+"The update is applied."
+],
+"type": "string"
+},
+"createTime": {
+"description": "Optional. Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"updateName": {
+"description": "Required. The resource name of the update",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ApplyWorkloadUpdateRequest": {
+"description": "Request to apply update to a workload.",
+"id": "GoogleCloudAssuredworkloadsV1beta1ApplyWorkloadUpdateRequest",
+"properties": {
+"action": {
+"description": "The action to be performed on the update.",
+"enum": [
+"WORKLOAD_UPDATE_ACTION_UNSPECIFIED",
+"APPLY"
+],
+"enumDescriptions": [
+"Unspecified value.",
+"The update is applied."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ApplyWorkloadUpdateResponse": {
+"description": "Response for ApplyWorkloadUpdate endpoint.",
+"id": "GoogleCloudAssuredworkloadsV1beta1ApplyWorkloadUpdateResponse",
+"properties": {
+"appliedUpdate": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadUpdate",
+"description": "The update that was applied."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1AssetMoveAnalysis": {
+"description": "Represents move analysis results for an asset.",
+"id": "GoogleCloudAssuredworkloadsV1beta1AssetMoveAnalysis",
+"properties": {
+"analysisGroups": {
+"description": "List of eligible analyses performed for the asset.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1MoveAnalysisGroup"
+},
+"type": "array"
+},
+"asset": {
+"description": "The full resource name of the asset being analyzed. Example: //compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1",
+"type": "string"
+},
+"assetType": {
+"description": "Type of the asset being analyzed. Possible values will be among the ones listed [here](https://cloud.google.com/asset-inventory/docs/supported-asset-types).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1CreateWorkloadOperationMetadata": {
+"description": "Operation metadata to give request details of CreateWorkload.",
+"id": "GoogleCloudAssuredworkloadsV1beta1CreateWorkloadOperationMetadata",
+"properties": {
+"complianceRegime": {
+"description": "Optional. Compliance controls that should be applied to the resources managed by the workload.",
+"enum": [
+"COMPLIANCE_REGIME_UNSPECIFIED",
+"IL4",
+"CJIS",
+"FEDRAMP_HIGH",
+"FEDRAMP_MODERATE",
+"US_REGIONAL_ACCESS",
+"HIPAA",
+"HITRUST",
+"EU_REGIONS_AND_SUPPORT",
+"CA_REGIONS_AND_SUPPORT",
+"ITAR",
+"AU_REGIONS_AND_US_SUPPORT",
+"ASSURED_WORKLOADS_FOR_PARTNERS",
+"ISR_REGIONS",
+"ISR_REGIONS_AND_SUPPORT",
+"CA_PROTECTED_B",
+"IL5",
+"IL2",
+"JP_REGIONS_AND_SUPPORT",
+"KSA_REGIONS_AND_SUPPORT_WITH_SOVEREIGNTY_CONTROLS",
+"REGIONAL_CONTROLS",
+"HEALTHCARE_AND_LIFE_SCIENCES_CONTROLS",
+"HEALTHCARE_AND_LIFE_SCIENCES_CONTROLS_US_SUPPORT",
+"IRS_1075",
+"CANADA_CONTROLLED_GOODS"
+],
+"enumDeprecated": [
+false,
+false,
+false,
+false,
+false,
+false,
+true,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Unknown compliance regime.",
+"Information protection as per DoD IL4 requirements.",
+"Criminal Justice Information Services (CJIS) Security policies.",
+"FedRAMP High data protection controls",
+"FedRAMP Moderate data protection controls",
+"Assured Workloads For US Regions data protection controls",
+"[DEPRECATED] Health Insurance Portability and Accountability Act controls",
+"[DEPRECATED] Health Information Trust Alliance controls",
+"Assured Workloads For EU Regions and Support controls",
+"Assured Workloads For Canada Regions and Support controls",
+"International Traffic in Arms Regulations",
+"Assured Workloads for Australia Regions and Support controls",
+"Assured Workloads for Partners;",
+"Assured Workloads for Israel Regions",
+"Assured Workloads for Israel Regions",
+"Assured Workloads for Canada Protected B regime",
+"Information protection as per DoD IL5 requirements.",
+"Information protection as per DoD IL2 requirements.",
+"Assured Workloads for Japan Regions",
+"Assured Workloads Sovereign Controls KSA",
+"Assured Workloads for Regional Controls",
+"Healthcare and Life Science Controls",
+"Healthcare and Life Science Controls with US Support",
+"Internal Revenue Service 1075 controls",
+"Canada Controlled Goods"
+],
+"type": "string"
+},
+"createTime": {
+"description": "Optional. Time when the operation was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"displayName": {
+"description": "Optional. The display name of the workload.",
+"type": "string"
+},
+"parent": {
+"description": "Optional. The parent of the workload.",
+"type": "string"
+},
+"resourceSettings": {
+"description": "Optional. Resource properties in the input that are used for creating/customizing workload resources.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1EnableComplianceUpdatesResponse": {
+"description": "Response for EnableComplianceUpdates endpoint.",
+"id": "GoogleCloudAssuredworkloadsV1beta1EnableComplianceUpdatesResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1EnableResourceMonitoringResponse": {
+"description": "Response for EnableResourceMonitoring endpoint.",
+"id": "GoogleCloudAssuredworkloadsV1beta1EnableResourceMonitoringResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ListViolationsResponse": {
+"description": "Response of ListViolations endpoint.",
+"id": "GoogleCloudAssuredworkloadsV1beta1ListViolationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next page token. Returns empty if reached the last page.",
+"type": "string"
+},
+"violations": {
+"description": "List of Violations under a Workload.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1Violation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ListWorkloadUpdatesResponse": {
+"description": "Response of listing the compliance updates per workload with pagination.",
+"id": "GoogleCloudAssuredworkloadsV1beta1ListWorkloadUpdatesResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next page token. Return empty if reached the last page.",
+"type": "string"
+},
+"workloadUpdates": {
+"description": "The list of workload updates for a given workload.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadUpdate"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ListWorkloadsResponse": {
+"description": "Response of ListWorkloads endpoint.",
+"id": "GoogleCloudAssuredworkloadsV1beta1ListWorkloadsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next page token. Return empty if reached the last page.",
+"type": "string"
+},
+"workloads": {
+"description": "List of Workloads under a given parent.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1Workload"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1MoveAnalysisGroup": {
+"description": "Represents a logical group of checks performed for an asset. If successful, the group contains the analysis result, otherwise it contains an error with the failure reason.",
+"id": "GoogleCloudAssuredworkloadsV1beta1MoveAnalysisGroup",
+"properties": {
+"analysisResult": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1MoveAnalysisResult",
+"description": "Result of a successful analysis."
+},
+"displayName": {
+"description": "Name of the analysis group.",
+"type": "string"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "Error details for a failed analysis."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1MoveAnalysisResult": {
+"description": "Represents the successful move analysis results for a group.",
+"id": "GoogleCloudAssuredworkloadsV1beta1MoveAnalysisResult",
+"properties": {
+"blockers": {
+"description": "List of blockers. If not resolved, these will result in compliance violations in the target.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1MoveImpact"
+},
+"type": "array"
+},
+"warnings": {
+"description": "List of warnings. These are risks that may or may not result in compliance violations.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1MoveImpact"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1MoveImpact": {
+"description": "Represents the impact of moving the asset to the target.",
+"id": "GoogleCloudAssuredworkloadsV1beta1MoveImpact",
+"properties": {
+"detail": {
+"description": "Explanation of the impact.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1OrgPolicy": {
+"description": "This assured workload service object is used to represent the org policy attached to a resource. It servces the same purpose as the orgpolicy.v2.Policy object but with functionality that is limited to what is supported by Assured Workloads(e.g. only one rule under one OrgPolicy object, no conditions, etc).",
+"id": "GoogleCloudAssuredworkloadsV1beta1OrgPolicy",
+"properties": {
+"constraint": {
+"description": "The constraint name of the OrgPolicy. e.g. \"constraints/gcp.resourceLocations\".",
+"type": "string"
+},
+"inherit": {
+"description": "If `inherit` is true, policy rules of the lowest ancestor in the resource hierarchy chain are inherited. If it is false, policy rules are not inherited.",
+"type": "boolean"
+},
+"reset": {
+"description": "Ignores policies set above this resource and restores to the `constraint_default` value. `reset` can only be true when `rules` is empty and `inherit` is false.",
+"type": "boolean"
+},
+"resource": {
+"description": "Resource that the OrgPolicy attaches to. Format: folders/123\" projects/123\".",
+"type": "string"
+},
+"rule": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1OrgPolicyPolicyRule",
+"description": "The rule of the OrgPolicy."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1OrgPolicyPolicyRule": {
+"description": "A rule used to express this policy.",
+"id": "GoogleCloudAssuredworkloadsV1beta1OrgPolicyPolicyRule",
+"properties": {
+"allowAll": {
+"description": "ListPolicy only when all values are allowed.",
+"type": "boolean"
+},
+"denyAll": {
+"description": "ListPolicy only when all values are denied.",
+"type": "boolean"
+},
+"enforce": {
+"description": "BooleanPolicy only.",
+"type": "boolean"
+},
+"values": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1OrgPolicyPolicyRuleStringValues",
+"description": "ListPolicy only when custom values are specified."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1OrgPolicyPolicyRuleStringValues": {
+"description": "The values allowed for a ListPolicy.",
+"id": "GoogleCloudAssuredworkloadsV1beta1OrgPolicyPolicyRuleStringValues",
+"properties": {
+"allowedValues": {
+"description": "List of values allowed at this resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"deniedValues": {
+"description": "List of values denied at this resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1OrgPolicyUpdate": {
+"description": "Represents an update for an org policy control applied on an Assured Workload resource. The inherited org policy is not considered.",
+"id": "GoogleCloudAssuredworkloadsV1beta1OrgPolicyUpdate",
+"properties": {
+"appliedPolicy": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1OrgPolicy",
+"description": "The org policy currently applied on the assured workload resource."
+},
+"suggestedPolicy": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1OrgPolicy",
+"description": "The suggested org policy that replaces the applied policy."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1RestrictAllowedResourcesRequest": {
+"description": "Request for restricting list of available resources in Workload environment.",
+"id": "GoogleCloudAssuredworkloadsV1beta1RestrictAllowedResourcesRequest",
+"properties": {
+"restrictionType": {
+"description": "Required. The type of restriction for using gcp products in the Workload environment.",
+"enum": [
+"RESTRICTION_TYPE_UNSPECIFIED",
+"ALLOW_ALL_GCP_RESOURCES",
+"ALLOW_COMPLIANT_RESOURCES",
+"APPEND_COMPLIANT_RESOURCES"
+],
+"enumDescriptions": [
+"Unknown restriction type.",
+"Allow the use all of all gcp products, irrespective of the compliance posture. This effectively removes gcp.restrictServiceUsage OrgPolicy on the AssuredWorkloads Folder.",
+"Based on Workload's compliance regime, allowed list changes. See - https://cloud.google.com/assured-workloads/docs/supported-products for the list of supported resources.",
+"Similar to ALLOW_COMPLIANT_RESOURCES but adds the list of compliant resources to the existing list of compliant resources. Effective org-policy of the Folder is considered to ensure there is no disruption to the existing customer workflows."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1RestrictAllowedResourcesResponse": {
+"description": "Response for restricting the list of allowed resources.",
+"id": "GoogleCloudAssuredworkloadsV1beta1RestrictAllowedResourcesResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1UpdateDetails": {
+"description": "The details of the update.",
+"id": "GoogleCloudAssuredworkloadsV1beta1UpdateDetails",
+"properties": {
+"orgPolicyUpdate": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1OrgPolicyUpdate",
+"description": "Update to one org policy, e.g. gcp.resourceLocation."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1Violation": {
+"description": "Workload monitoring Violation.",
+"id": "GoogleCloudAssuredworkloadsV1beta1Violation",
+"properties": {
+"acknowledged": {
+"description": "A boolean that indicates if the violation is acknowledged",
+"type": "boolean"
+},
+"acknowledgementTime": {
+"description": "Optional. Timestamp when this violation was acknowledged first. Check exception_contexts to find the last time the violation was acknowledged when there are more than one violations. This field will be absent when acknowledged field is marked as false.",
+"format": "google-datetime",
+"type": "string"
+},
+"associatedOrgPolicyViolationId": {
+"description": "Optional. Output only. Violation Id of the org-policy violation due to which the resource violation is caused. Empty for org-policy violations.",
+"readOnly": true,
+"type": "string"
+},
+"auditLogLink": {
+"description": "Output only. Immutable. Audit Log Link for violated resource Format: https://console.cloud.google.com/logs/query;query={logName}{protoPayload.resourceName}{timeRange}{folder}",
+"readOnly": true,
+"type": "string"
+},
+"beginTime": {
+"description": "Output only. Time of the event which triggered the Violation.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"category": {
+"description": "Output only. Category under which this violation is mapped. e.g. Location, Service Usage, Access, Encryption, etc.",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Output only. Description for the Violation. e.g. OrgPolicy gcp.resourceLocations has non compliant value.",
+"readOnly": true,
+"type": "string"
+},
+"exceptionAuditLogLink": {
+"description": "Output only. Immutable. Audit Log link to find business justification provided for violation exception. Format: https://console.cloud.google.com/logs/query;query={logName}{protoPayload.resourceName}{protoPayload.methodName}{timeRange}{organization}",
+"readOnly": true,
+"type": "string"
+},
+"exceptionContexts": {
+"description": "Output only. List of all the exception detail added for the violation.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ViolationExceptionContext"
+},
+"readOnly": true,
+"type": "array"
+},
+"name": {
+"description": "Output only. Immutable. Name of the Violation. Format: organizations/{organization}/locations/{location}/workloads/{workload_id}/violations/{violations_id}",
+"readOnly": true,
+"type": "string"
+},
+"nonCompliantOrgPolicy": {
+"description": "Output only. Immutable. Name of the OrgPolicy which was modified with non-compliant change and resulted this violation. Format: projects/{project_number}/policies/{constraint_name} folders/{folder_id}/policies/{constraint_name} organizations/{organization_id}/policies/{constraint_name}",
+"readOnly": true,
+"type": "string"
+},
+"orgPolicyConstraint": {
+"deprecated": true,
+"description": "Output only. Immutable. The org-policy-constraint that was incorrectly changed, which resulted in this violation.",
+"readOnly": true,
+"type": "string"
+},
+"parentProjectNumber": {
+"description": "Optional. Output only. Parent project number where resource is present. Empty for org-policy violations.",
+"readOnly": true,
+"type": "string"
+},
+"remediation": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ViolationRemediation",
+"description": "Output only. Compliance violation remediation",
+"readOnly": true
+},
+"resolveTime": {
+"description": "Output only. Time of the event which fixed the Violation. If the violation is ACTIVE this will be empty.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"resourceName": {
+"description": "Optional. Output only. Name of the resource like //storage.googleapis.com/myprojectxyz-testbucket. Empty for org-policy violations.",
+"readOnly": true,
+"type": "string"
+},
+"resourceType": {
+"description": "Optional. Output only. Type of the resource like compute.googleapis.com/Disk, etc. Empty for org-policy violations.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the violation",
+"enum": [
+"STATE_UNSPECIFIED",
+"RESOLVED",
+"UNRESOLVED",
+"EXCEPTION"
+],
+"enumDescriptions": [
+"Unspecified state.",
+"Violation is resolved.",
+"Violation is Unresolved",
+"Violation is Exception"
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last time when the Violation record was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"violationType": {
+"description": "Output only. Type of the violation",
+"enum": [
+"VIOLATION_TYPE_UNSPECIFIED",
+"ORG_POLICY",
+"RESOURCE"
+],
+"enumDescriptions": [
+"Unspecified type.",
+"Org Policy Violation.",
+"Resource Violation."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ViolationExceptionContext": {
+"description": "Violation exception detail.",
+"id": "GoogleCloudAssuredworkloadsV1beta1ViolationExceptionContext",
+"properties": {
+"acknowledgementTime": {
+"description": "Timestamp when the violation was acknowledged.",
+"format": "google-datetime",
+"type": "string"
+},
+"comment": {
+"description": "Business justification provided towards the acknowledgement of the violation.",
+"type": "string"
+},
+"userName": {
+"description": "Name of the user (or service account) who acknowledged the violation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ViolationRemediation": {
+"description": "Represents remediation guidance to resolve compliance violation for AssuredWorkload",
+"id": "GoogleCloudAssuredworkloadsV1beta1ViolationRemediation",
+"properties": {
+"compliantValues": {
+"description": "Values that can resolve the violation For example: for list org policy violations, this will either be the list of allowed or denied values",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"instructions": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructions",
+"description": "Required. Remediation instructions to resolve violations"
+},
+"remediationType": {
+"description": "Output only. Reemediation type based on the type of org policy values violated",
+"enum": [
+"REMEDIATION_TYPE_UNSPECIFIED",
+"REMEDIATION_BOOLEAN_ORG_POLICY_VIOLATION",
+"REMEDIATION_LIST_ALLOWED_VALUES_ORG_POLICY_VIOLATION",
+"REMEDIATION_LIST_DENIED_VALUES_ORG_POLICY_VIOLATION",
+"REMEDIATION_RESTRICT_CMEK_CRYPTO_KEY_PROJECTS_ORG_POLICY_VIOLATION",
+"REMEDIATION_RESOURCE_VIOLATION",
+"REMEDIATION_RESOURCE_VIOLATION_NON_CMEK_SERVICES"
+],
+"enumDescriptions": [
+"Unspecified remediation type",
+"Remediation type for boolean org policy",
+"Remediation type for list org policy which have allowed values in the monitoring rule",
+"Remediation type for list org policy which have denied values in the monitoring rule",
+"Remediation type for gcp.restrictCmekCryptoKeyProjects",
+"Remediation type for resource violation.",
+"Remediation type for resource violation due to gcp.restrictNonCmekServices"
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructions": {
+"description": "Instructions to remediate violation",
+"id": "GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructions",
+"properties": {
+"consoleInstructions": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructionsConsole",
+"description": "Remediation instructions to resolve violation via cloud console"
+},
+"gcloudInstructions": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructionsGcloud",
+"description": "Remediation instructions to resolve violation via gcloud cli"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructionsConsole": {
+"description": "Remediation instructions to resolve violation via cloud console",
+"id": "GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructionsConsole",
+"properties": {
+"additionalLinks": {
+"description": "Additional urls for more information about steps",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"consoleUris": {
+"description": "Link to console page where violations can be resolved",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"steps": {
+"description": "Steps to resolve violation via cloud console",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructionsGcloud": {
+"description": "Remediation instructions to resolve violation via gcloud cli",
+"id": "GoogleCloudAssuredworkloadsV1beta1ViolationRemediationInstructionsGcloud",
+"properties": {
+"additionalLinks": {
+"description": "Additional urls for more information about steps",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"gcloudCommands": {
+"description": "Gcloud command to resolve violation",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"steps": {
+"description": "Steps to resolve violation via gcloud cli",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1Workload": {
+"description": "A Workload object for managing highly regulated workloads of cloud customers.",
+"id": "GoogleCloudAssuredworkloadsV1beta1Workload",
+"properties": {
+"availableUpdates": {
+"description": "Output only. The number of updates available for the workload.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"billingAccount": {
+"description": "Optional. The billing account used for the resources which are direct children of workload. This billing account is initially associated with the resources created as part of Workload creation. After the initial creation of these resources, the customer can change the assigned billing account. The resource name has the form `billingAccounts/{billing_account_id}`. For example, `billingAccounts/012345-567890-ABCDEF`.",
+"type": "string"
+},
+"cjisSettings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings",
+"deprecated": true,
+"description": "Input only. Immutable. Settings specific to resources needed for CJIS."
+},
+"complianceRegime": {
+"description": "Required. Immutable. Compliance Regime associated with this workload.",
+"enum": [
+"COMPLIANCE_REGIME_UNSPECIFIED",
+"IL4",
+"CJIS",
+"FEDRAMP_HIGH",
+"FEDRAMP_MODERATE",
+"US_REGIONAL_ACCESS",
+"HIPAA",
+"HITRUST",
+"EU_REGIONS_AND_SUPPORT",
+"CA_REGIONS_AND_SUPPORT",
+"ITAR",
+"AU_REGIONS_AND_US_SUPPORT",
+"ASSURED_WORKLOADS_FOR_PARTNERS",
+"ISR_REGIONS",
+"ISR_REGIONS_AND_SUPPORT",
+"CA_PROTECTED_B",
+"IL5",
+"IL2",
+"JP_REGIONS_AND_SUPPORT",
+"KSA_REGIONS_AND_SUPPORT_WITH_SOVEREIGNTY_CONTROLS",
+"REGIONAL_CONTROLS",
+"HEALTHCARE_AND_LIFE_SCIENCES_CONTROLS",
+"HEALTHCARE_AND_LIFE_SCIENCES_CONTROLS_US_SUPPORT",
+"IRS_1075",
+"CANADA_CONTROLLED_GOODS"
+],
+"enumDeprecated": [
+false,
+false,
+false,
+false,
+false,
+false,
+true,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Unknown compliance regime.",
+"Information protection as per DoD IL4 requirements.",
+"Criminal Justice Information Services (CJIS) Security policies.",
+"FedRAMP High data protection controls",
+"FedRAMP Moderate data protection controls",
+"Assured Workloads For US Regions data protection controls",
+"[DEPRECATED] Health Insurance Portability and Accountability Act controls",
+"[DEPRECATED] Health Information Trust Alliance controls",
+"Assured Workloads For EU Regions and Support controls",
+"Assured Workloads For Canada Regions and Support controls",
+"International Traffic in Arms Regulations",
+"Assured Workloads for Australia Regions and Support controls",
+"Assured Workloads for Partners;",
+"Assured Workloads for Israel Regions",
+"Assured Workloads for Israel Regions",
+"Assured Workloads for Canada Protected B regime",
+"Information protection as per DoD IL5 requirements.",
+"Information protection as per DoD IL2 requirements.",
+"Assured Workloads for Japan Regions",
+"Assured Workloads Sovereign Controls KSA",
+"Assured Workloads for Regional Controls",
+"Healthcare and Life Science Controls",
+"Healthcare and Life Science Controls with US Support",
+"Internal Revenue Service 1075 controls",
+"Canada Controlled Goods"
+],
+"type": "string"
+},
+"complianceStatus": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadComplianceStatus",
+"description": "Output only. Count of active Violations in the Workload.",
+"readOnly": true
+},
+"complianceUpdatesEnabled": {
+"description": "Output only. Indicates whether the compliance updates feature is enabled for a workload. The compliance updates feature can be enabled via the EnableComplianceUpdates endpoint.",
+"readOnly": true,
+"type": "boolean"
+},
+"compliantButDisallowedServices": {
+"description": "Output only. Urls for services which are compliant for this Assured Workload, but which are currently disallowed by the ResourceUsageRestriction org policy. Invoke RestrictAllowedResources endpoint to allow your project developers to use these services in their environment.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"createTime": {
+"description": "Output only. Immutable. The Workload creation timestamp.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Required. The user-assigned display name of the Workload. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, and spaces. Example: My Workload",
+"type": "string"
+},
+"ekmProvisioningResponse": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadEkmProvisioningResponse",
+"description": "Output only. Represents the Ekm Provisioning State of the given workload.",
+"readOnly": true
+},
+"enableSovereignControls": {
+"description": "Optional. Indicates the sovereignty status of the given workload. Currently meant to be used by Europe/Canada customers.",
+"type": "boolean"
+},
+"etag": {
+"description": "Optional. ETag of the workload, it is calculated on the basis of the Workload contents. It will be used in Update & Delete operations.",
+"type": "string"
+},
+"fedrampHighSettings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings",
+"deprecated": true,
+"description": "Input only. Immutable. Settings specific to resources needed for FedRAMP High."
+},
+"fedrampModerateSettings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings",
+"deprecated": true,
+"description": "Input only. Immutable. Settings specific to resources needed for FedRAMP Moderate."
+},
+"il4Settings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings",
+"deprecated": true,
+"description": "Input only. Immutable. Settings specific to resources needed for IL4."
+},
+"kajEnrollmentState": {
+"description": "Output only. Represents the KAJ enrollment state of the given workload.",
+"enum": [
+"KAJ_ENROLLMENT_STATE_UNSPECIFIED",
+"KAJ_ENROLLMENT_STATE_PENDING",
+"KAJ_ENROLLMENT_STATE_COMPLETE"
+],
+"enumDescriptions": [
+"Default State for KAJ Enrollment.",
+"Pending State for KAJ Enrollment.",
+"Complete State for KAJ Enrollment."
+],
+"readOnly": true,
+"type": "string"
+},
+"kmsSettings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
+"deprecated": true,
+"description": "Input only. Settings used to create a CMEK crypto key. When set, a project with a KMS CMEK key is provisioned. This field is deprecated as of Feb 28, 2022. In order to create a Keyring, callers should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in ResourceSettings.resource_type field."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Labels applied to the workload.",
+"type": "object"
+},
+"name": {
+"description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only.",
+"type": "string"
+},
+"partner": {
+"description": "Optional. Partner regime associated with this workload.",
+"enum": [
+"PARTNER_UNSPECIFIED",
+"LOCAL_CONTROLS_BY_S3NS",
+"SOVEREIGN_CONTROLS_BY_T_SYSTEMS",
+"SOVEREIGN_CONTROLS_BY_SIA_MINSAIT",
+"SOVEREIGN_CONTROLS_BY_PSN",
+"SOVEREIGN_CONTROLS_BY_CNTXT",
+"SOVEREIGN_CONTROLS_BY_CNTXT_NO_EKM"
+],
+"enumDescriptions": [
+"",
+"Enum representing S3NS (Thales) partner.",
+"Enum representing T_SYSTEM (TSI) partner.",
+"Enum representing SIA_MINSAIT (Indra) partner.",
+"Enum representing PSN (TIM) partner.",
+"Enum representing CNTXT (Kingdom of Saudi Arabia) partner.",
+"Enum representing CNTXT (Kingdom of Saudi Arabia) partner offering without EKM."
+],
+"type": "string"
+},
+"partnerPermissions": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissions",
+"description": "Optional. Permissions granted to the AW Partner SA account for the customer workload"
+},
+"partnerServicesBillingAccount": {
+"description": "Optional. Billing account necessary for purchasing services from Sovereign Partners. This field is required for creating SIA/PSN/CNTXT partner workloads. The caller should have 'billing.resourceAssociations.create' IAM permission on this billing-account. The format of this string is billingAccounts/AAAAAA-BBBBBB-CCCCCC",
+"type": "string"
+},
+"provisionedResourcesParent": {
+"description": "Input only. The parent resource for the resources managed by this Assured Workload. May be either empty or a folder resource which is a child of the Workload parent. If not specified all resources are created under the parent organization. Format: folders/{folder_id}",
+"type": "string"
+},
+"resourceMonitoringEnabled": {
+"description": "Output only. Indicates whether resource monitoring is enabled for workload or not. It is true when Resource feed is subscribed to AWM topic and AWM Service Agent Role is binded to AW Service Account for resource Assured workload.",
+"readOnly": true,
+"type": "boolean"
+},
+"resourceSettings": {
+"description": "Input only. Resource properties that are used to customize workload resources. These properties (such as custom project id) will be used to create workload resources if possible. This field is optional.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings"
+},
+"type": "array"
+},
+"resources": {
+"description": "Output only. The resources associated with this workload. These resources will be created when creating the workload. If any of the projects already exist, the workload creation will fail. Always read only.",
+"items": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfo"
+},
+"readOnly": true,
+"type": "array"
+},
+"saaEnrollmentResponse": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponse",
+"description": "Output only. Represents the SAA enrollment response of the given workload. SAA enrollment response is queried during GetWorkload call. In failure cases, user friendly error message is shown in SAA details page.",
+"readOnly": true
+},
+"violationNotificationsEnabled": {
+"description": "Optional. Indicates whether the e-mail notification for a violation is enabled for a workload. This value will be by default True, and if not present will be considered as true. This should only be updated via updateWorkload call. Any Changes to this field during the createWorkload call will not be honored. This will always be true while creating the workload.",
+"type": "boolean"
+},
+"workloadOptions": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadWorkloadOptions",
+"description": "Optional. Options to be set for the given created workload."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings": {
+"deprecated": true,
+"description": "Settings specific to resources needed for CJIS.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings",
+"properties": {
+"kmsSettings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
+"description": "Input only. Immutable. Settings used to create a CMEK crypto key."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadComplianceStatus": {
+"description": "Represents the Compliance Status of this workload",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadComplianceStatus",
+"properties": {
+"acknowledgedResourceViolationCount": {
+"description": "Number of current resource violations which are not acknowledged.",
+"format": "int32",
+"type": "integer"
+},
+"acknowledgedViolationCount": {
+"description": "Number of current orgPolicy violations which are acknowledged.",
+"format": "int32",
+"type": "integer"
+},
+"activeResourceViolationCount": {
+"description": "Number of current resource violations which are acknowledged.",
+"format": "int32",
+"type": "integer"
+},
+"activeViolationCount": {
+"description": "Number of current orgPolicy violations which are not acknowledged.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadEkmProvisioningResponse": {
+"description": "External key management systems(EKM) Provisioning response",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadEkmProvisioningResponse",
+"properties": {
+"ekmProvisioningErrorDomain": {
+"description": "Indicates Ekm provisioning error if any.",
+"enum": [
+"EKM_PROVISIONING_ERROR_DOMAIN_UNSPECIFIED",
+"UNSPECIFIED_ERROR",
+"GOOGLE_SERVER_ERROR",
+"EXTERNAL_USER_ERROR",
+"EXTERNAL_PARTNER_ERROR",
+"TIMEOUT_ERROR"
+],
+"enumDescriptions": [
+"No error domain",
+"Error but domain is unspecified.",
+"Internal logic breaks within provisioning code.",
+"Error occurred with the customer not granting permission/creating resource.",
+"Error occurred within the partner's provisioning cluster.",
+"Resource wasn't provisioned in the required 7 day time period"
+],
+"type": "string"
+},
+"ekmProvisioningErrorMapping": {
+"description": "Detailed error message if Ekm provisioning fails",
+"enum": [
+"EKM_PROVISIONING_ERROR_MAPPING_UNSPECIFIED",
+"INVALID_SERVICE_ACCOUNT",
+"MISSING_METRICS_SCOPE_ADMIN_PERMISSION",
+"MISSING_EKM_CONNECTION_ADMIN_PERMISSION"
+],
+"enumDescriptions": [
+"Error is unspecified.",
+"Service account is used is invalid.",
+"Iam permission monitoring.MetricsScopeAdmin wasn't applied.",
+"Iam permission cloudkms.ekmConnectionsAdmin wasn't applied."
+],
+"type": "string"
+},
+"ekmProvisioningState": {
+"description": "Output only. Indicates Ekm enrollment Provisioning of a given workload.",
+"enum": [
+"EKM_PROVISIONING_STATE_UNSPECIFIED",
+"EKM_PROVISIONING_STATE_PENDING",
+"EKM_PROVISIONING_STATE_FAILED",
+"EKM_PROVISIONING_STATE_COMPLETED"
+],
+"enumDescriptions": [
+"Default State for Ekm Provisioning",
+"Pending State for Ekm Provisioning",
+"Failed State for Ekm Provisioning",
+"Completed State for Ekm Provisioning"
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings": {
+"deprecated": true,
+"description": "Settings specific to resources needed for FedRAMP High.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings",
+"properties": {
+"kmsSettings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
+"description": "Input only. Immutable. Settings used to create a CMEK crypto key."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings": {
+"deprecated": true,
+"description": "Settings specific to resources needed for FedRAMP Moderate.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings",
+"properties": {
+"kmsSettings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
+"description": "Input only. Immutable. Settings used to create a CMEK crypto key."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings": {
+"deprecated": true,
+"description": "Settings specific to resources needed for IL4.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings",
+"properties": {
+"kmsSettings": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
+"description": "Input only. Immutable. Settings used to create a CMEK crypto key."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings": {
+"deprecated": true,
+"description": "Settings specific to the Key Management Service.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings",
+"properties": {
+"nextRotationTime": {
+"description": "Required. Input only. Immutable. The time at which the Key Management Service will automatically create a new version of the crypto key and mark it as the primary.",
+"format": "google-datetime",
+"type": "string"
+},
+"rotationPeriod": {
+"description": "Required. Input only. Immutable. [next_rotation_time] will be advanced by this period when the Key Management Service automatically rotates a key. Must be at least 24 hours and at most 876,000 hours.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissions": {
+"description": "Permissions granted to the AW Partner SA account for the customer workload",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadPartnerPermissions",
+"properties": {
+"accessTransparencyLogsSupportCaseViewer": {
+"description": "Optional. Allow partner to view support case details for an AXT log",
+"type": "boolean"
+},
+"assuredWorkloadsMonitoring": {
+"description": "Optional. Allow partner to view violation alerts.",
+"type": "boolean"
+},
+"dataLogsViewer": {
+"description": "Optional. Allow the partner to view inspectability logs and monitoring violations.",
+"type": "boolean"
+},
+"serviceAccessApprover": {
+"description": "Optional. Allow partner to view access approval logs.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfo": {
+"description": "Represent the resources that are children of this Workload.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfo",
+"properties": {
+"resourceId": {
+"description": "Output only. Resource identifier. For a project this represents project_number.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"resourceType": {
+"description": "Indicates the type of resource.",
+"enum": [
+"RESOURCE_TYPE_UNSPECIFIED",
+"CONSUMER_PROJECT",
+"CONSUMER_FOLDER",
+"ENCRYPTION_KEYS_PROJECT",
+"KEYRING"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Unknown resource type.",
+"Deprecated. Existing workloads will continue to support this, but new CreateWorkloadRequests should not specify this as an input value.",
+"Consumer Folder.",
+"Consumer project containing encryption keys.",
+"Keyring resource that hosts encryption keys."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings": {
+"description": "Represent the custom settings for the resources to be created.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings",
+"properties": {
+"displayName": {
+"description": "User-assigned resource display name. If not empty it will be used to create a resource with the specified name.",
+"type": "string"
+},
+"resourceId": {
+"description": "Resource identifier. For a project this represents project_id. If the project is already taken, the workload creation will fail. For KeyRing, this represents the keyring_id. For a folder, don't set this value as folder_id is assigned by Google.",
+"type": "string"
+},
+"resourceType": {
+"description": "Indicates the type of resource. This field should be specified to correspond the id to the right project type (CONSUMER_PROJECT or ENCRYPTION_KEYS_PROJECT)",
+"enum": [
+"RESOURCE_TYPE_UNSPECIFIED",
+"CONSUMER_PROJECT",
+"CONSUMER_FOLDER",
+"ENCRYPTION_KEYS_PROJECT",
+"KEYRING"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Unknown resource type.",
+"Deprecated. Existing workloads will continue to support this, but new CreateWorkloadRequests should not specify this as an input value.",
+"Consumer Folder.",
+"Consumer project containing encryption keys.",
+"Keyring resource that hosts encryption keys."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponse": {
+"description": "Signed Access Approvals (SAA) enrollment response.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponse",
+"properties": {
+"setupErrors": {
+"description": "Indicates SAA enrollment setup error if any.",
+"items": {
+"enum": [
+"SETUP_ERROR_UNSPECIFIED",
+"ERROR_INVALID_BASE_SETUP",
+"ERROR_MISSING_EXTERNAL_SIGNING_KEY",
+"ERROR_NOT_ALL_SERVICES_ENROLLED",
+"ERROR_SETUP_CHECK_FAILED"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Invalid states for all customers, to be redirected to AA UI for additional details.",
+"Returned when there is not an EKM key configured.",
+"Returned when there are no enrolled services or the customer is enrolled in CAA only for a subset of services.",
+"Returned when exception was encountered during evaluation of other criteria."
+],
+"type": "string"
+},
+"type": "array"
+},
+"setupStatus": {
+"description": "Output only. Indicates SAA enrollment status of a given workload.",
+"enum": [
+"SETUP_STATE_UNSPECIFIED",
+"STATUS_PENDING",
+"STATUS_COMPLETE"
+],
+"enumDescriptions": [
+"Unspecified.",
+"SAA enrollment pending.",
+"SAA enrollment comopleted."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadUpdate": {
+"description": "A workload update is a change to the workload's compliance configuration.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadUpdate",
+"properties": {
+"createTime": {
+"description": "The time the update was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"details": {
+"$ref": "GoogleCloudAssuredworkloadsV1beta1UpdateDetails",
+"description": "The details of the update."
+},
+"name": {
+"description": "Output only. Immutable. Identifier. Resource name of the WorkloadUpdate. Format: organizations/{organization}/locations/{location}/workloads/{workload}/updates/{update}",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of the update.",
+"enum": [
+"STATE_UNSPECIFIED",
+"AVAILABLE",
+"APPLIED",
+"WITHDRAWN"
+],
+"enumDescriptions": [
+"Unspecified.",
+"The update is available to be applied.",
+"The update has been applied.",
+"The update has been withdrawn by the service."
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "The time the update was last updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssuredworkloadsV1beta1WorkloadWorkloadOptions": {
+"description": "Options to be set for the given created workload.",
+"id": "GoogleCloudAssuredworkloadsV1beta1WorkloadWorkloadOptions",
+"properties": {
+"kajEnrollmentType": {
+"description": "Optional. Specifies type of KAJ Enrollment if provided.",
+"enum": [
+"KAJ_ENROLLMENT_TYPE_UNSPECIFIED",
+"KEY_ACCESS_TRANSPARENCY_OFF"
+],
+"enumDescriptions": [
+"KAJ Enrollment type is unspecified",
+"KAT sets External, Hardware, and Software key feature logging only to TRUE. (no enforcement)"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "GoogleLongrunningListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "GoogleLongrunningOperation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningOperation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunningOperation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Assured Workloads API",
+"version": "v1beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/authorizedbuyersmarketplace.v1alpha.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/authorizedbuyersmarketplace.v1alpha.json
new file mode 100644
index 0000000000000000000000000000000000000000..35e0578363f3d5d5ecf6ee18914c12774b8536a2
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/authorizedbuyersmarketplace.v1alpha.json
@@ -0,0 +1,3518 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/authorized-buyers-marketplace": {
+"description": "See, create, edit, and delete your Authorized Buyers Marketplace entities."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://authorizedbuyersmarketplace.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Authorized Buyers Marketplace",
+"description": "The Authorized Buyers Marketplace API lets buyers programmatically discover inventory; propose, retrieve and negotiate deals with publishers.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/authorized-buyers/apis/marketplace/reference/rest/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "authorizedbuyersmarketplace:v1alpha",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://authorizedbuyersmarketplace.mtls.googleapis.com/",
+"name": "authorizedbuyersmarketplace",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"bidders": {
+"resources": {
+"auctionPackages": {
+"methods": {
+"list": {
+"description": "List the auction packages. Buyers can use the URL path \"/v1alpha/buyers/{accountId}/auctionPackages\" to list auction packages for the current buyer and its clients. Bidders can use the URL path \"/v1alpha/bidders/{accountId}/auctionPackages\" to list auction packages for the bidder, its media planners, its buyers, and all their clients.",
+"flatPath": "v1alpha/bidders/{biddersId}/auctionPackages",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.bidders.auctionPackages.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Optional query string using the [Cloud API list filtering syntax](/authorized-buyers/apis/guides/list-filters). Only supported when parent is bidder. Supported columns for filtering are: * displayName * createTime * updateTime * eligibleSeatIds",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. An optional query string to sort auction packages using the [Cloud API sorting syntax](https://cloud.google.com/apis/design/design_patterns#sorting_order). If no sort order is specified, results will be returned in an arbitrary order. Only supported when parent is bidder. Supported columns for sorting are: * displayName * createTime * updateTime",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. Max allowed page size is 500.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token as returned. ListAuctionPackagesResponse.nextPageToken",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Name of the parent buyer that can access the auction package. Format: `buyers/{accountId}`. When used with a bidder account, the auction packages that the bidder, its media planners, its buyers and clients are subscribed to will be listed, in the format `bidders/{accountId}`.",
+"location": "path",
+"pattern": "^bidders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/auctionPackages",
+"response": {
+"$ref": "ListAuctionPackagesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+}
+},
+"finalizedDeals": {
+"methods": {
+"list": {
+"description": "Lists finalized deals. Use the URL path \"/v1alpha/buyers/{accountId}/finalizedDeals\" to list finalized deals for the current buyer and its clients. Bidders can use the URL path \"/v1alpha/bidders/{accountId}/finalizedDeals\" to list finalized deals for the bidder, its buyers and all their clients.",
+"flatPath": "v1alpha/bidders/{biddersId}/finalizedDeals",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.bidders.finalizedDeals.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) Supported columns for filtering are: * deal.displayName * deal.dealType * deal.createTime * deal.updateTime * deal.flightStartTime * deal.flightEndTime * deal.eligibleSeatIds * dealServingStatus",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "An optional query string to sort finalized deals using the [Cloud API sorting syntax](https://cloud.google.com/apis/design/design_patterns#sorting_order). If no sort order is specified, results will be returned in an arbitrary order. Supported columns for sorting are: * deal.displayName * deal.createTime * deal.updateTime * deal.flightStartTime * deal.flightEndTime * rtbMetrics.bidRequests7Days * rtbMetrics.bids7Days * rtbMetrics.adImpressions7Days * rtbMetrics.bidRate7Days * rtbMetrics.filteredBidRate7Days * rtbMetrics.mustBidRateCurrentMonth",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. If requested more than 500, the server will return 500 results per page. If unspecified, the server will pick a default page size of 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token as returned from ListFinalizedDealsResponse.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The buyer to list the finalized deals for, in the format: `buyers/{accountId}`. When used to list finalized deals for a bidder, its buyers and clients, in the format `bidders/{accountId}`.",
+"location": "path",
+"pattern": "^bidders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/finalizedDeals",
+"response": {
+"$ref": "ListFinalizedDealsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+}
+}
+}
+},
+"buyers": {
+"resources": {
+"auctionPackages": {
+"methods": {
+"get": {
+"description": "Gets an auction package given its name.",
+"flatPath": "v1alpha/buyers/{buyersId}/auctionPackages/{auctionPackagesId}",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.auctionPackages.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of auction package to get. Format: `buyers/{accountId}/auctionPackages/{auctionPackageId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/auctionPackages/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "AuctionPackage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"list": {
+"description": "List the auction packages. Buyers can use the URL path \"/v1alpha/buyers/{accountId}/auctionPackages\" to list auction packages for the current buyer and its clients. Bidders can use the URL path \"/v1alpha/bidders/{accountId}/auctionPackages\" to list auction packages for the bidder, its media planners, its buyers, and all their clients.",
+"flatPath": "v1alpha/buyers/{buyersId}/auctionPackages",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.auctionPackages.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Optional query string using the [Cloud API list filtering syntax](/authorized-buyers/apis/guides/list-filters). Only supported when parent is bidder. Supported columns for filtering are: * displayName * createTime * updateTime * eligibleSeatIds",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. An optional query string to sort auction packages using the [Cloud API sorting syntax](https://cloud.google.com/apis/design/design_patterns#sorting_order). If no sort order is specified, results will be returned in an arbitrary order. Only supported when parent is bidder. Supported columns for sorting are: * displayName * createTime * updateTime",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. Max allowed page size is 500.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token as returned. ListAuctionPackagesResponse.nextPageToken",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Name of the parent buyer that can access the auction package. Format: `buyers/{accountId}`. When used with a bidder account, the auction packages that the bidder, its media planners, its buyers and clients are subscribed to will be listed, in the format `bidders/{accountId}`.",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/auctionPackages",
+"response": {
+"$ref": "ListAuctionPackagesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"subscribe": {
+"description": "Subscribe to the auction package for the specified buyer. Once subscribed, the bidder will receive a call out for inventory matching the auction package targeting criteria with the auction package deal ID and the specified buyer.",
+"flatPath": "v1alpha/buyers/{buyersId}/auctionPackages/{auctionPackagesId}:subscribe",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.auctionPackages.subscribe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the auction package. Format: `buyers/{accountId}/auctionPackages/{auctionPackageId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/auctionPackages/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:subscribe",
+"request": {
+"$ref": "SubscribeAuctionPackageRequest"
+},
+"response": {
+"$ref": "AuctionPackage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"subscribeClients": {
+"description": "Subscribe the specified clients of the buyer to the auction package. If a client in the list does not belong to the buyer, an error response will be returned, and all of the following clients in the list will not be subscribed. Subscribing an already subscribed client will have no effect.",
+"flatPath": "v1alpha/buyers/{buyersId}/auctionPackages/{auctionPackagesId}:subscribeClients",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.auctionPackages.subscribeClients",
+"parameterOrder": [
+"auctionPackage"
+],
+"parameters": {
+"auctionPackage": {
+"description": "Required. Name of the auction package. Format: `buyers/{accountId}/auctionPackages/{auctionPackageId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/auctionPackages/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+auctionPackage}:subscribeClients",
+"request": {
+"$ref": "SubscribeClientsRequest"
+},
+"response": {
+"$ref": "AuctionPackage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"unsubscribe": {
+"description": "Unsubscribe from the auction package for the specified buyer. Once unsubscribed, the bidder will no longer receive a call out for the auction package deal ID and the specified buyer.",
+"flatPath": "v1alpha/buyers/{buyersId}/auctionPackages/{auctionPackagesId}:unsubscribe",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.auctionPackages.unsubscribe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the auction package. Format: `buyers/{accountId}/auctionPackages/{auctionPackageId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/auctionPackages/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:unsubscribe",
+"request": {
+"$ref": "UnsubscribeAuctionPackageRequest"
+},
+"response": {
+"$ref": "AuctionPackage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"unsubscribeClients": {
+"description": "Unsubscribe from the auction package for the specified clients of the buyer. Unsubscribing a client that is not subscribed will have no effect.",
+"flatPath": "v1alpha/buyers/{buyersId}/auctionPackages/{auctionPackagesId}:unsubscribeClients",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.auctionPackages.unsubscribeClients",
+"parameterOrder": [
+"auctionPackage"
+],
+"parameters": {
+"auctionPackage": {
+"description": "Required. Name of the auction package. Format: `buyers/{accountId}/auctionPackages/{auctionPackageId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/auctionPackages/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+auctionPackage}:unsubscribeClients",
+"request": {
+"$ref": "UnsubscribeClientsRequest"
+},
+"response": {
+"$ref": "AuctionPackage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+}
+},
+"clients": {
+"methods": {
+"activate": {
+"description": "Activates an existing client. The state of the client will be updated to \"ACTIVE\". This method has no effect if the client is already in \"ACTIVE\" state.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}:activate",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.clients.activate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:activate",
+"request": {
+"$ref": "ActivateClientRequest"
+},
+"response": {
+"$ref": "Client"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"create": {
+"description": "Creates a new client.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.clients.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the buyer. Format: `buyers/{accountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/clients",
+"request": {
+"$ref": "Client"
+},
+"response": {
+"$ref": "Client"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"deactivate": {
+"description": "Deactivates an existing client. The state of the client will be updated to \"INACTIVE\". This method has no effect if the client is already in \"INACTIVE\" state.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}:deactivate",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.clients.deactivate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:deactivate",
+"request": {
+"$ref": "DeactivateClientRequest"
+},
+"response": {
+"$ref": "Client"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"get": {
+"description": "Gets a client with a given resource name.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.clients.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{accountId}/clients/{clientAccountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "Client"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"list": {
+"description": "Lists all the clients for the current buyer.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.clients.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Query string using the [Filtering Syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) Supported fields for filtering are: * partnerClientId Use this field to filter the clients by the partnerClientId. For example, if the partnerClientId of the client is \"1234\", the value of this field should be `partnerClientId = \"1234\"`, in order to get only the client whose partnerClientId is \"1234\" in the response.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. If left blank, a default page size of 500 will be applied.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return. Typically, this is the value of ListClientsResponse.nextPageToken returned from the previous call to the list method.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the buyer. Format: `buyers/{accountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/clients",
+"response": {
+"$ref": "ListClientsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"patch": {
+"description": "Updates an existing client.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}",
+"httpMethod": "PATCH",
+"id": "authorizedbuyersmarketplace.buyers.clients.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "List of fields to be updated. If empty or unspecified, the service will update all fields populated in the update request excluding the output only fields and primitive fields with default value. Note that explicit field mask is required in order to reset a primitive field back to its default value, for example, false for boolean fields, 0 for integer fields. A special field mask consisting of a single path \"*\" can be used to indicate full replacement(the equivalent of PUT method), updatable fields unset or unspecified in the input will be cleared or set to default value. Output only fields will be ignored regardless of the value of updateMask.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"request": {
+"$ref": "Client"
+},
+"response": {
+"$ref": "Client"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+},
+"resources": {
+"users": {
+"methods": {
+"activate": {
+"description": "Activates an existing client user. The state of the client user will be updated from \"INACTIVE\" to \"ACTIVE\". This method has no effect if the client user is already in \"ACTIVE\" state. An error will be returned if the client user to activate is still in \"INVITED\" state.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}/users/{usersId}:activate",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.clients.users.activate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}/clientUsers/{userId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+/users/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:activate",
+"request": {
+"$ref": "ActivateClientUserRequest"
+},
+"response": {
+"$ref": "ClientUser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"create": {
+"description": "Creates a new client user in \"INVITED\" state. An email invitation will be sent to the new user, once accepted the user will become active.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}/users",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.clients.users.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/users",
+"request": {
+"$ref": "ClientUser"
+},
+"response": {
+"$ref": "ClientUser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"deactivate": {
+"description": "Deactivates an existing client user. The state of the client user will be updated from \"ACTIVE\" to \"INACTIVE\". This method has no effect if the client user is already in \"INACTIVE\" state. An error will be returned if the client user to deactivate is still in \"INVITED\" state.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}/users/{usersId}:deactivate",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.clients.users.deactivate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}/clientUsers/{userId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+/users/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:deactivate",
+"request": {
+"$ref": "DeactivateClientUserRequest"
+},
+"response": {
+"$ref": "ClientUser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"delete": {
+"description": "Deletes an existing client user. The client user will lose access to the Authorized Buyers UI. Note that if a client user is deleted, the user's access to the UI can't be restored unless a new client user is created and activated.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}/users/{usersId}",
+"httpMethod": "DELETE",
+"id": "authorizedbuyersmarketplace.buyers.clients.users.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}/clientUsers/{userId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+/users/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"get": {
+"description": "Retrieves an existing client user.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}/users/{usersId}",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.clients.users.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}/clientUsers/{userId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+/users/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "ClientUser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"list": {
+"description": "Lists all client users for a specified client.",
+"flatPath": "v1alpha/buyers/{buyersId}/clients/{clientsId}/users",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.clients.users.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Requested page size. If left blank, a default page size of 500 will be applied.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return. Typically, this is the value of ListClientUsersResponse.nextPageToken returned from the previous call to the list method.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the client. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/clients/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/users",
+"response": {
+"$ref": "ListClientUsersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+}
+}
+}
+},
+"dataSegments": {
+"methods": {
+"activate": {
+"description": "Activates a data segment.",
+"flatPath": "v1alpha/buyers/{buyersId}/dataSegments/{dataSegmentsId}:activate",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.dataSegments.activate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of data segment to activate. Format: `buyers/{accountId}/dataSegments/{curatorDataSegmentId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/dataSegments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:activate",
+"request": {
+"$ref": "ActivateDataSegmentRequest"
+},
+"response": {
+"$ref": "DataSegment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"create": {
+"description": "Creates a data segment owned by the listed curator. The data segment will be created in the `ACTIVE` state, meaning it will be immediately available for buyers to use in preferred deals, private auction deals, and auction packages.",
+"flatPath": "v1alpha/buyers/{buyersId}/dataSegments",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.dataSegments.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource where this data segment will be created. Format: `buyers/{accountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/dataSegments",
+"request": {
+"$ref": "DataSegment"
+},
+"response": {
+"$ref": "DataSegment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"deactivate": {
+"description": "Deactivates a data segment.",
+"flatPath": "v1alpha/buyers/{buyersId}/dataSegments/{dataSegmentsId}:deactivate",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.dataSegments.deactivate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of data segment to deactivate. Format: `buyers/{accountId}/dataSegments/{curatorDataSegmentId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/dataSegments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:deactivate",
+"request": {
+"$ref": "DeactivateDataSegmentRequest"
+},
+"response": {
+"$ref": "DataSegment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"get": {
+"description": "Gets a data segment given its name.",
+"flatPath": "v1alpha/buyers/{buyersId}/dataSegments/{dataSegmentsId}",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.dataSegments.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of data segment to get. Format: `buyers/{accountId}/dataSegments/{curatorDataSegmentId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/dataSegments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "DataSegment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"list": {
+"description": "List the data segments owned by a curator.",
+"flatPath": "v1alpha/buyers/{buyersId}/dataSegments",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.dataSegments.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. Requested page size. The server may return fewer results than requested. Max allowed page size is 500. If unspecified, the server will default to 500.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The page token as returned. ListDataSegmentsResponse.nextPageToken",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Name of the parent buyer that can access the data segment. Format: `buyers/{accountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/dataSegments",
+"response": {
+"$ref": "ListDataSegmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"patch": {
+"description": "Updates a data segment.",
+"flatPath": "v1alpha/buyers/{buyersId}/dataSegments/{dataSegmentsId}",
+"httpMethod": "PATCH",
+"id": "authorizedbuyersmarketplace.buyers.dataSegments.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. Identifier. The unique identifier for the data segment. Account ID corresponds to the account ID that created the segment. Format: `buyers/{accountId}/dataSegments/{curatorDataSegmentId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/dataSegments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. List of fields to be updated. If empty or unspecified, the service will update all fields populated in the update request excluding the output only fields and primitive fields with default value. Note that explicit field mask is required in order to reset a primitive field back to its default value, for example, false for boolean fields, 0 for integer fields. A special field mask consisting of a single path \"*\" can be used to indicate full replacement(the equivalent of PUT method), updatable fields unset or unspecified in the input will be cleared or set to default value. Output only fields will be ignored regardless of the value of updateMask.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"request": {
+"$ref": "DataSegment"
+},
+"response": {
+"$ref": "DataSegment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+}
+},
+"finalizedDeals": {
+"methods": {
+"addCreative": {
+"description": "Add creative to be used in the bidding process for a finalized deal. For programmatic guaranteed deals, it's recommended that you associate at least one approved creative with the deal before calling SetReadyToServe, to help reduce the number of bid responses filtered because they don't contain approved creatives. Creatives successfully added to a deal can be found in the Realtime-bidding Creatives API creative.deal_ids. This method only applies to programmatic guaranteed deals. Maximum number of 1000 creatives can be added to a finalized deal.",
+"flatPath": "v1alpha/buyers/{buyersId}/finalizedDeals/{finalizedDealsId}:addCreative",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.finalizedDeals.addCreative",
+"parameterOrder": [
+"deal"
+],
+"parameters": {
+"deal": {
+"description": "Required. Name of the finalized deal in the format of: `buyers/{accountId}/finalizedDeals/{dealId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/finalizedDeals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+deal}:addCreative",
+"request": {
+"$ref": "AddCreativeRequest"
+},
+"response": {
+"$ref": "FinalizedDeal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"get": {
+"description": "Gets a finalized deal given its name.",
+"flatPath": "v1alpha/buyers/{buyersId}/finalizedDeals/{finalizedDealsId}",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.finalizedDeals.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{accountId}/finalizedDeals/{dealId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/finalizedDeals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "FinalizedDeal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"list": {
+"description": "Lists finalized deals. Use the URL path \"/v1alpha/buyers/{accountId}/finalizedDeals\" to list finalized deals for the current buyer and its clients. Bidders can use the URL path \"/v1alpha/bidders/{accountId}/finalizedDeals\" to list finalized deals for the bidder, its buyers and all their clients.",
+"flatPath": "v1alpha/buyers/{buyersId}/finalizedDeals",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.finalizedDeals.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) Supported columns for filtering are: * deal.displayName * deal.dealType * deal.createTime * deal.updateTime * deal.flightStartTime * deal.flightEndTime * deal.eligibleSeatIds * dealServingStatus",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "An optional query string to sort finalized deals using the [Cloud API sorting syntax](https://cloud.google.com/apis/design/design_patterns#sorting_order). If no sort order is specified, results will be returned in an arbitrary order. Supported columns for sorting are: * deal.displayName * deal.createTime * deal.updateTime * deal.flightStartTime * deal.flightEndTime * rtbMetrics.bidRequests7Days * rtbMetrics.bids7Days * rtbMetrics.adImpressions7Days * rtbMetrics.bidRate7Days * rtbMetrics.filteredBidRate7Days * rtbMetrics.mustBidRateCurrentMonth",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. If requested more than 500, the server will return 500 results per page. If unspecified, the server will pick a default page size of 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token as returned from ListFinalizedDealsResponse.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The buyer to list the finalized deals for, in the format: `buyers/{accountId}`. When used to list finalized deals for a bidder, its buyers and clients, in the format `bidders/{accountId}`.",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/finalizedDeals",
+"response": {
+"$ref": "ListFinalizedDealsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"pause": {
+"description": "Pauses serving of the given finalized deal. This call only pauses the serving status, and does not affect other fields of the finalized deal. Calling this method for an already paused deal has no effect. This method only applies to programmatic guaranteed deals and preferred deals.",
+"flatPath": "v1alpha/buyers/{buyersId}/finalizedDeals/{finalizedDealsId}:pause",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.finalizedDeals.pause",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{accountId}/finalizedDeals/{dealId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/finalizedDeals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:pause",
+"request": {
+"$ref": "PauseFinalizedDealRequest"
+},
+"response": {
+"$ref": "FinalizedDeal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"resume": {
+"description": "Resumes serving of the given finalized deal. Calling this method for an running deal has no effect. If a deal is initially paused by the seller, calling this method will not resume serving of the deal until the seller also resumes the deal. This method only applies to programmatic guaranteed deals and preferred deals.",
+"flatPath": "v1alpha/buyers/{buyersId}/finalizedDeals/{finalizedDealsId}:resume",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.finalizedDeals.resume",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: `buyers/{accountId}/finalizedDeals/{dealId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/finalizedDeals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:resume",
+"request": {
+"$ref": "ResumeFinalizedDealRequest"
+},
+"response": {
+"$ref": "FinalizedDeal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"setReadyToServe": {
+"description": "Sets the given finalized deal as ready to serve. By default, deals are set as ready to serve as soon as they're finalized. If you want to opt out of the default behavior, and manually indicate that deals are ready to serve, ask your Technical Account Manager to add you to the allowlist. If you choose to use this method, finalized deals belonging to the bidder and its child seats don't start serving until after you call `setReadyToServe`, and after the deals become active. For example, you can use this method to delay receiving bid requests until your creative is ready. This method only applies to programmatic guaranteed deals.",
+"flatPath": "v1alpha/buyers/{buyersId}/finalizedDeals/{finalizedDealsId}:setReadyToServe",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.finalizedDeals.setReadyToServe",
+"parameterOrder": [
+"deal"
+],
+"parameters": {
+"deal": {
+"description": "Required. Format: `buyers/{accountId}/finalizedDeals/{dealId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/finalizedDeals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+deal}:setReadyToServe",
+"request": {
+"$ref": "SetReadyToServeRequest"
+},
+"response": {
+"$ref": "FinalizedDeal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+}
+},
+"proposals": {
+"methods": {
+"accept": {
+"description": "Accepts the proposal at the given revision number. If the revision number in the request is behind the latest from the server, an error message will be returned. This call updates the Proposal.state from `BUYER_ACCEPTANCE_REQUESTED` to `FINALIZED`; it has no side effect if the Proposal.state is already `FINALIZED` and throws exception if the Proposal.state is not either `BUYER_ACCEPTANCE_REQUESTED` or `FINALIZED`. Accepting a proposal means the buyer understands and accepts the Proposal.terms_and_conditions proposed by the seller.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}:accept",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.proposals.accept",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Name of the proposal. Format: `buyers/{accountId}/proposals/{proposalId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}:accept",
+"request": {
+"$ref": "AcceptProposalRequest"
+},
+"response": {
+"$ref": "Proposal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"addNote": {
+"description": "Creates a note for this proposal and sends to the seller. This method is not supported for proposals with DealType set to 'PRIVATE_AUCTION'.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}:addNote",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.proposals.addNote",
+"parameterOrder": [
+"proposal"
+],
+"parameters": {
+"proposal": {
+"description": "Name of the proposal. Format: `buyers/{accountId}/proposals/{proposalId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+proposal}:addNote",
+"request": {
+"$ref": "AddNoteRequest"
+},
+"response": {
+"$ref": "Proposal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"cancelNegotiation": {
+"description": "Cancels an ongoing negotiation on a proposal. This does not cancel or end serving for the deals if the proposal has been finalized. If the proposal has not been finalized before, calling this method will set the Proposal.state to `TERMINATED` and increment the Proposal.proposal_revision. If the proposal has been finalized before and is under renegotiation now, calling this method will reset the Proposal.state to `FINALIZED` and increment the Proposal.proposal_revision. This method does not support private auction proposals whose Proposal.deal_type is 'PRIVATE_AUCTION'.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}:cancelNegotiation",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.proposals.cancelNegotiation",
+"parameterOrder": [
+"proposal"
+],
+"parameters": {
+"proposal": {
+"description": "Name of the proposal. Format: `buyers/{accountId}/proposals/{proposalId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+proposal}:cancelNegotiation",
+"request": {
+"$ref": "CancelNegotiationRequest"
+},
+"response": {
+"$ref": "Proposal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"get": {
+"description": "Gets a proposal using its resource name. The proposal is returned at the latest revision.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.proposals.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the proposal. Format: `buyers/{accountId}/proposals/{proposalId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "Proposal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"list": {
+"description": "Lists proposals. A filter expression using [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) may be specified to filter the results.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.proposals.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional query string using the [Cloud API list filtering syntax](https://developers.google.com/authorized-buyers/apis/guides/list-filters) Supported columns for filtering are: * displayName * dealType * updateTime * state",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. If unspecified, the server will put a size of 500.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token as returned from ListProposalsResponse.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent that owns the collection of proposals Format: `buyers/{accountId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/proposals",
+"response": {
+"$ref": "ListProposalsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"patch": {
+"description": "Updates the proposal at the given revision number. If the revision number in the request is behind the latest one kept in the server, an error message will be returned. See FieldMask for how to use FieldMask. Only fields specified in the UpdateProposalRequest.update_mask will be updated; Fields noted as 'Immutable' or 'Output only' yet specified in the UpdateProposalRequest.update_mask will be ignored and left unchanged. Updating a private auction proposal is not allowed and will result in an error.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}",
+"httpMethod": "PATCH",
+"id": "authorizedbuyersmarketplace.buyers.proposals.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The name of the proposal serving as a unique identifier. Format: buyers/{accountId}/proposals/{proposalId}",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "List of fields to be updated. If empty or unspecified, the service will update all fields populated in the update request excluding the output only fields and primitive fields with default value. Note that explicit field mask is required in order to reset a primitive field back to its default value, for example, false for boolean fields, 0 for integer fields. A special field mask consisting of a single path \"*\" can be used to indicate full replacement(the equivalent of PUT method), updatable fields unset or unspecified in the input will be cleared or set to default value. Output only fields will be ignored regardless of the value of updateMask.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"request": {
+"$ref": "Proposal"
+},
+"response": {
+"$ref": "Proposal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"sendRfp": {
+"description": "Sends a request for proposal (RFP) to a publisher to initiate the negotiation regarding certain inventory. In the RFP, buyers can specify the deal type, deal terms, start and end dates, targeting, and a message to the publisher. Once the RFP is sent, a proposal in `SELLER_REVIEW_REQUESTED` state will be created and returned in the response. The publisher may review your request and respond with detailed deals in the proposal.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals:sendRfp",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.proposals.sendRfp",
+"parameterOrder": [
+"buyer"
+],
+"parameters": {
+"buyer": {
+"description": "Required. The current buyer who is sending the RFP in the format: `buyers/{accountId}`.",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+buyer}/proposals:sendRfp",
+"request": {
+"$ref": "SendRfpRequest"
+},
+"response": {
+"$ref": "Proposal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+},
+"resources": {
+"deals": {
+"methods": {
+"batchUpdate": {
+"description": "Batch updates multiple deals in the same proposal.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}/deals:batchUpdate",
+"httpMethod": "POST",
+"id": "authorizedbuyersmarketplace.buyers.proposals.deals.batchUpdate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the proposal containing the deals to batch update. Format: buyers/{accountId}/proposals/{proposalId}",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/deals:batchUpdate",
+"request": {
+"$ref": "BatchUpdateDealsRequest"
+},
+"response": {
+"$ref": "BatchUpdateDealsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"get": {
+"description": "Gets a deal given its name. The deal is returned at its head revision.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}/deals/{dealsId}",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.proposals.deals.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Format: buyers/{accountId}/proposals/{proposalId}/deals/{dealId}",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+/deals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "Deal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"list": {
+"description": "Lists all deals in a proposal. To retrieve only the finalized revision deals regardless if a deal is being renegotiated, see the FinalizedDeals resource.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}/deals",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.proposals.deals.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. If requested more than 500, the server will return 500 results per page. If unspecified, the server will pick a default page size of 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token as returned from ListDealsResponse.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the proposal containing the deals to retrieve. Format: buyers/{accountId}/proposals/{proposalId}",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/deals",
+"response": {
+"$ref": "ListDealsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"patch": {
+"description": "Updates the given deal at the buyer known revision number. If the server revision has advanced since the passed-in proposal.proposal_revision an ABORTED error message will be returned. The revision number is incremented by the server whenever the proposal or its constituent deals are updated. Note: The revision number is kept at a proposal level. The buyer of the API is expected to keep track of the revision number after the last update operation and send it in as part of the next update request. This way, if there are further changes on the server (for example, seller making new updates), then the server can detect conflicts and reject the proposed changes.",
+"flatPath": "v1alpha/buyers/{buyersId}/proposals/{proposalsId}/deals/{dealsId}",
+"httpMethod": "PATCH",
+"id": "authorizedbuyersmarketplace.buyers.proposals.deals.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The unique identifier of the deal. Auto-generated by the server when a deal is created. Format: buyers/{accountId}/proposals/{proposalId}/deals/{dealId}",
+"location": "path",
+"pattern": "^buyers/[^/]+/proposals/[^/]+/deals/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "List of fields to be updated. If empty or unspecified, the service will update all fields populated in the update request excluding the output only fields and primitive fields with default value. Note that explicit field mask is required in order to reset a primitive field back to its default value, for example, false for boolean fields, 0 for integer fields. A special field mask consisting of a single path \"*\" can be used to indicate full replacement(the equivalent of PUT method), updatable fields unset or unspecified in the input will be cleared or set to default value. Output only fields will be ignored regardless of the value of updateMask.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"request": {
+"$ref": "Deal"
+},
+"response": {
+"$ref": "Deal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+}
+}
+}
+},
+"publisherProfiles": {
+"methods": {
+"get": {
+"description": "Gets the requested publisher profile by name.",
+"flatPath": "v1alpha/buyers/{buyersId}/publisherProfiles/{publisherProfilesId}",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.publisherProfiles.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the publisher profile. Format: `buyers/{buyerId}/publisherProfiles/{publisherProfileId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+/publisherProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+name}",
+"response": {
+"$ref": "PublisherProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+},
+"list": {
+"description": "Lists publisher profiles. The returned publisher profiles aren't in any defined order. The order of the results might change. A new publisher profile can appear in any place in the list of returned results.",
+"flatPath": "v1alpha/buyers/{buyersId}/publisherProfiles",
+"httpMethod": "GET",
+"id": "authorizedbuyersmarketplace.buyers.publisherProfiles.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional query string using the [Cloud API list filtering] (https://developers.google.com/authorized-buyers/apis/guides/list-filters) syntax.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. If requested more than 500, the server will return 500 results per page. If unspecified, the server will pick a default page size of 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token as returned from a previous ListPublisherProfilesResponse.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent that owns the collection of publisher profiles Format: `buyers/{buyerId}`",
+"location": "path",
+"pattern": "^buyers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha/{+parent}/publisherProfiles",
+"response": {
+"$ref": "ListPublisherProfilesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/authorized-buyers-marketplace"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20250107",
+"rootUrl": "https://authorizedbuyersmarketplace.googleapis.com/",
+"schemas": {
+"AcceptProposalRequest": {
+"description": "Request to accept a proposal. Accepting a proposal implies acceptance of the publisher terms_and_conditions, if any.",
+"id": "AcceptProposalRequest",
+"properties": {
+"proposalRevision": {
+"description": "The last known client revision number of the proposal.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ActivateClientRequest": {
+"description": "Request message for activating a client.",
+"id": "ActivateClientRequest",
+"properties": {},
+"type": "object"
+},
+"ActivateClientUserRequest": {
+"description": "Request message for activating a client user.",
+"id": "ActivateClientUserRequest",
+"properties": {},
+"type": "object"
+},
+"ActivateDataSegmentRequest": {
+"description": "Request message for activating a data segment",
+"id": "ActivateDataSegmentRequest",
+"properties": {},
+"type": "object"
+},
+"AdSize": {
+"description": "Represents size of a single ad slot, or a creative.",
+"id": "AdSize",
+"properties": {
+"height": {
+"description": "The height of the ad slot in pixels. This field will be present only when size type is `PIXEL`.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "The type of the ad slot size.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"PIXEL",
+"INTERSTITIAL",
+"NATIVE",
+"FLUID"
+],
+"enumDescriptions": [
+"A placeholder for an undefined size type.",
+"Ad slot with size specified by height and width in pixels.",
+"Special size to describe an interstitial ad slot.",
+"Native (mobile) ads rendered by the publisher.",
+"Fluid size (responsive size) can be resized automatically with the change of outside environment."
+],
+"type": "string"
+},
+"width": {
+"description": "The width of the ad slot in pixels. This field will be present only when size type is `PIXEL`.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AddCreativeRequest": {
+"description": "Request message for adding creative to be used in the bidding process for the finalized deal.",
+"id": "AddCreativeRequest",
+"properties": {
+"creative": {
+"description": "Name of the creative to add to the finalized deal, in the format `buyers/{buyerAccountId}/creatives/{creativeId}`. See creative.name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AddNoteRequest": {
+"description": "Request to add a note.",
+"id": "AddNoteRequest",
+"properties": {
+"note": {
+"$ref": "Note",
+"description": "The note to add."
+}
+},
+"type": "object"
+},
+"AuctionPackage": {
+"description": "Defines a segment of inventory that buyer wants to buy. It's created by buyer and could be shared with multiple buyers.",
+"id": "AuctionPackage",
+"properties": {
+"createTime": {
+"description": "Output only. Time the auction package was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"creator": {
+"description": "Output only. The buyer that created this auction package. Format: `buyers/{buyerAccountId}`",
+"readOnly": true,
+"type": "string"
+},
+"dealOwnerSeatId": {
+"description": "Output only. If set, this field contains the DSP specific seat id set by the media planner account that is considered the owner of this deal. The seat ID is in the calling DSP's namespace.",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Output only. A description of the auction package.",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "The display_name assigned to the auction package.",
+"type": "string"
+},
+"eligibleSeatIds": {
+"description": "Output only. If set, this field identifies a seat that the media planner selected as the owner of this auction package. This is a seat ID in the DSP's namespace that was provided to the media planner.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"name": {
+"description": "Immutable. The unique identifier for the auction package. Format: `buyers/{accountId}/auctionPackages/{auctionPackageId}` The auction_package_id part of name is sent in the BidRequest to all RTB bidders and is returned as deal_id by the bidder in the BidResponse.",
+"type": "string"
+},
+"subscribedBuyers": {
+"description": "Output only. The list of buyers that are subscribed to the AuctionPackage. This field is only populated when calling as a bidder. Format: `buyers/{buyerAccountId}`",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"subscribedClients": {
+"description": "Output only. When calling as a buyer, the list of clients of the current buyer that are subscribed to the AuctionPackage. When calling as a bidder, the list of clients that are subscribed to the AuctionPackage owned by the bidder or its buyers. Format: `buyers/{buyerAccountId}/clients/{clientAccountId}`",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"subscribedMediaPlanners": {
+"description": "Output only. The list of media planners that are subscribed to the AuctionPackage. This field is only populated when calling as a bidder.",
+"items": {
+"$ref": "MediaPlanner"
+},
+"readOnly": true,
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. Time the auction package was last updated. This value is only increased when this auction package is updated but never when a buyer subscribed.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"BatchUpdateDealsRequest": {
+"description": "Request message for batch updating deals.",
+"id": "BatchUpdateDealsRequest",
+"properties": {
+"requests": {
+"description": "Required. List of request messages to update deals.",
+"items": {
+"$ref": "UpdateDealRequest"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BatchUpdateDealsResponse": {
+"description": "Response message for batch updating deals.",
+"id": "BatchUpdateDealsResponse",
+"properties": {
+"deals": {
+"description": "Deals updated.",
+"items": {
+"$ref": "Deal"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CancelNegotiationRequest": {
+"description": "Request to cancel an ongoing negotiation.",
+"id": "CancelNegotiationRequest",
+"properties": {},
+"type": "object"
+},
+"Client": {
+"description": "A client represents an agency, a brand, or an advertiser customer of the buyer. Based on the client's role, its client users will have varying levels of restricted access to the Marketplace and certain other sections of the Authorized Buyers UI.",
+"id": "Client",
+"properties": {
+"displayName": {
+"description": "Required. Display name shown to publishers. Must be unique for clients without partnerClientId specified. Maximum length of 255 characters is allowed.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the client. Format: `buyers/{accountId}/clients/{clientAccountId}`",
+"readOnly": true,
+"type": "string"
+},
+"partnerClientId": {
+"description": "Arbitrary unique identifier provided by the buyer. This field can be used to associate a client with an identifier in the namespace of the buyer, lookup clients by that identifier and verify whether an Authorized Buyers account of the client already exists. If present, must be unique across all the clients.",
+"type": "string"
+},
+"role": {
+"description": "Required. The role assigned to the client. Each role implies a set of permissions granted to the client.",
+"enum": [
+"CLIENT_ROLE_UNSPECIFIED",
+"CLIENT_DEAL_VIEWER",
+"CLIENT_DEAL_NEGOTIATOR",
+"CLIENT_DEAL_APPROVER"
+],
+"enumDescriptions": [
+"A placeholder for an undefined client role. This value should never be specified in user input for create or update method, otherwise an error will be returned.",
+"Users associated with this client role can only view proposals and deals in the Marketplace UI. They cannot negotiate or approve proposals and deals sent from publishers or send RFP to publishers.",
+"Users associated with this client role can view and negotiate on the proposals and deals in the Marketplace UI sent from publishers and send RFP to publishers, but cannot approve the proposals and deals by themselves. The buyer can approve the proposals and deals on behalf of the client.",
+"Users associated with this client role can view, negotiate and approve proposals and deals in the Marketplace UI and send RFP to publishers."
+],
+"type": "string"
+},
+"sellerVisible": {
+"description": "Whether the client will be visible to sellers.",
+"type": "boolean"
+},
+"state": {
+"description": "Output only. The state of the client.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"INACTIVE"
+],
+"enumDescriptions": [
+"A placeholder for an undefined client state. Should not be used.",
+"A client that is currently active and allowed to access the Authorized Buyers UI.",
+"A client that is currently inactive and not allowed to access the Authorized Buyers UI."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClientUser": {
+"description": "A user of a client who has restricted access to the Marketplace and certain other sections of the Authorized Buyers UI based on the role granted to the associated client.",
+"id": "ClientUser",
+"properties": {
+"email": {
+"description": "Required. The client user's email address that has to be unique across all users for the same client.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the client user. Format: `buyers/{accountId}/clients/{clientAccountId}/users/{userId}`",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of the client user.",
+"enum": [
+"STATE_UNSPECIFIED",
+"INVITED",
+"ACTIVE",
+"INACTIVE"
+],
+"enumDescriptions": [
+"A placeholder for an undefined user state.",
+"A user who was created but hasn't accepted the invitation yet, not allowed to access the Authorized Buyers UI.",
+"A user that is currently active and allowed to access the Authorized Buyers UI.",
+"A user that is currently inactive and not allowed to access the Authorized Buyers UI."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Contact": {
+"description": "Contains information on how a buyer or seller can be reached.",
+"id": "Contact",
+"properties": {
+"displayName": {
+"description": "The display_name of the contact.",
+"type": "string"
+},
+"email": {
+"description": "Email address for the contact.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeRequirements": {
+"description": "Message captures data about the creatives in the deal.",
+"id": "CreativeRequirements",
+"properties": {
+"creativeFormat": {
+"description": "Output only. The format of the creative, only applicable for programmatic guaranteed and preferred deals.",
+"enum": [
+"CREATIVE_FORMAT_UNSPECIFIED",
+"DISPLAY",
+"VIDEO",
+"AUDIO"
+],
+"enumDescriptions": [
+"A placeholder for an unspecified creative format.",
+"Banner creatives such as image or HTML5 assets.",
+"Video creatives that can be played in a video player.",
+"Audio creatives that can play during audio content or point to a third party ad server."
+],
+"readOnly": true,
+"type": "string"
+},
+"creativePreApprovalPolicy": {
+"description": "Output only. Specifies the creative pre-approval policy.",
+"enum": [
+"CREATIVE_PRE_APPROVAL_POLICY_UNSPECIFIED",
+"SELLER_PRE_APPROVAL_REQUIRED",
+"SELLER_PRE_APPROVAL_NOT_REQUIRED"
+],
+"enumDescriptions": [
+"A placeholder for an undefined creative pre-approval policy.",
+"The seller needs to approve each creative before it can serve.",
+"The seller does not need to approve each creative before it can serve."
+],
+"readOnly": true,
+"type": "string"
+},
+"creativeSafeFrameCompatibility": {
+"description": "Output only. Specifies whether the creative is safeFrame compatible.",
+"enum": [
+"CREATIVE_SAFE_FRAME_COMPATIBILITY_UNSPECIFIED",
+"COMPATIBLE",
+"INCOMPATIBLE"
+],
+"enumDescriptions": [
+"A placeholder for an undefined creative safe-frame compatibility.",
+"The creatives need to be compatible with the safe frame option.",
+"The creatives can be incompatible with the safe frame option."
+],
+"readOnly": true,
+"type": "string"
+},
+"maxAdDurationMs": {
+"description": "Output only. The max duration of the video creative in milliseconds. only applicable for deals with video creatives.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"programmaticCreativeSource": {
+"description": "Output only. Specifies the creative source for programmatic deals. PUBLISHER means creative is provided by seller and ADVERTISER means creative is provided by the buyer.",
+"enum": [
+"PROGRAMMATIC_CREATIVE_SOURCE_UNSPECIFIED",
+"ADVERTISER",
+"PUBLISHER"
+],
+"enumDescriptions": [
+"A placeholder for an undefined programmatic creative source.",
+"The advertiser provides the creatives.",
+"The publisher provides the creatives to be served."
+],
+"readOnly": true,
+"type": "string"
+},
+"skippableAdType": {
+"description": "Output only. Skippable video ads allow viewers to skip ads after 5 seconds. Only applicable for deals with video creatives.",
+"enum": [
+"SKIPPABLE_AD_TYPE_UNSPECIFIED",
+"SKIPPABLE",
+"INSTREAM_SELECT",
+"NOT_SKIPPABLE",
+"ANY"
+],
+"enumDescriptions": [
+"A placeholder for an unspecified skippable ad type.",
+"Video ad that can be skipped after 5 seconds. This value will appear in RTB bid requests as SkippableBidRequestType::REQUIRE_SKIPPABLE.",
+"Video ad that can be skipped after 5 seconds, and is counted as engaged view after 30 seconds. The creative is hosted on YouTube only, and viewcount of the YouTube video increments after the engaged view. This value will appear in RTB bid requests as SkippableBidRequestType::REQUIRE_SKIPPABLE.",
+"This video ad is not skippable. This value will appear in RTB bid requests as SkippableBidRequestType::BLOCK_SKIPPABLE.",
+"This video ad can be skipped after 5 seconds or not-skippable. This value will appear in RTB bid requests as SkippableBidRequestType::ALLOW_SKIPPABLE."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CriteriaTargeting": {
+"description": "Generic targeting used for targeting dimensions that contains a list of included and excluded numeric IDs. This cannot be filtered using list filter syntax.",
+"id": "CriteriaTargeting",
+"properties": {
+"excludedCriteriaIds": {
+"description": "A list of numeric IDs to be excluded.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"targetedCriteriaIds": {
+"description": "A list of numeric IDs to be included.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"DataSegment": {
+"description": "Defines an identifier for a segment of inventory that can be targeted by curators or media planners in the deals or auction packages UI. Curation of inventory is done by curators on external platforms.",
+"id": "DataSegment",
+"properties": {
+"cpmFee": {
+"$ref": "Money",
+"description": "Optional. This will be charged when other accounts use this data segment. For example, when other accounts add this data segment to a deal or auction package. Once set, the currency code cannot be changed."
+},
+"createTime": {
+"description": "Output only. Time the data segment was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Immutable. Identifier. The unique identifier for the data segment. Account ID corresponds to the account ID that created the segment. Format: `buyers/{accountId}/dataSegments/{curatorDataSegmentId}`",
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of the data segment.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"INACTIVE"
+],
+"enumDescriptions": [
+"Default value.",
+"The data segment is active.",
+"The data segment is inactive."
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Time the data segment was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"DayPart": {
+"description": "Defines targeting for a period of time on a specific week day.",
+"id": "DayPart",
+"properties": {
+"dayOfWeek": {
+"description": "Day of week for the period.",
+"enum": [
+"DAY_OF_WEEK_UNSPECIFIED",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY",
+"SUNDAY"
+],
+"enumDescriptions": [
+"The day of the week is unspecified.",
+"Monday",
+"Tuesday",
+"Wednesday",
+"Thursday",
+"Friday",
+"Saturday",
+"Sunday"
+],
+"type": "string"
+},
+"endTime": {
+"$ref": "TimeOfDay",
+"description": "Hours in 24 hour time between 0 and 24, inclusive. Note: 24 is logically equivalent to 0, but is supported since in some cases there may need to be differentiation made between midnight on one day and midnight on the next day. Accepted values for minutes are [0, 15, 30, 45]. 0 is the only acceptable minute value for hour 24. Seconds and nanos are ignored."
+},
+"startTime": {
+"$ref": "TimeOfDay",
+"description": "Hours in 24 hour time between 0 and 24, inclusive. Note: 24 is logically equivalent to 0, but is supported since in some cases there may need to be differentiation made between midnight on one day and midnight on the next day. Accepted values for minutes are [0, 15, 30, 45]. 0 is the only acceptable minute value for hour 24. Seconds and nanos are ignored."
+}
+},
+"type": "object"
+},
+"DayPartTargeting": {
+"description": "Represents Daypart targeting.",
+"id": "DayPartTargeting",
+"properties": {
+"dayParts": {
+"description": "The targeted weekdays and times",
+"items": {
+"$ref": "DayPart"
+},
+"type": "array"
+},
+"timeZoneType": {
+"description": "The time zone type of the day parts",
+"enum": [
+"TIME_ZONE_TYPE_UNSPECIFIED",
+"SELLER",
+"USER"
+],
+"enumDescriptions": [
+"Default value. This field is unused.",
+"The publisher's time zone",
+"The user's time zone"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"DeactivateClientRequest": {
+"description": "Request message for disabling a client.",
+"id": "DeactivateClientRequest",
+"properties": {},
+"type": "object"
+},
+"DeactivateClientUserRequest": {
+"description": "Request message for deactivating a client user.",
+"id": "DeactivateClientUserRequest",
+"properties": {},
+"type": "object"
+},
+"DeactivateDataSegmentRequest": {
+"description": "Request message for deactivating a data segment",
+"id": "DeactivateDataSegmentRequest",
+"properties": {},
+"type": "object"
+},
+"Deal": {
+"description": "A deal represents a segment of inventory for displaying ads that contains the terms and targeting information that is used for serving as well as the deal stats and status. Note: A proposal may contain multiple deals.",
+"id": "Deal",
+"properties": {
+"billedBuyer": {
+"description": "Output only. When the client field is populated, this field refers to the buyer who creates and manages the client buyer and gets billed on behalf of the client buyer; when the buyer field is populated, this field is the same value as buyer; when the deal belongs to a media planner account, this field will be empty. Format : `buyers/{buyerAccountId}`",
+"readOnly": true,
+"type": "string"
+},
+"buyer": {
+"description": "Output only. Refers to a buyer in Real-time Bidding API's Buyer resource. Format: `buyers/{buyerAccountId}`",
+"readOnly": true,
+"type": "string"
+},
+"client": {
+"description": "Output only. Refers to a Client. Format: `buyers/{buyerAccountId}/clients/{clientAccountid}`",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time of the deal creation.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"creativeRequirements": {
+"$ref": "CreativeRequirements",
+"description": "Output only. Metadata about the creatives of this deal.",
+"readOnly": true
+},
+"dealType": {
+"description": "Output only. Type of deal.",
+"enum": [
+"DEAL_TYPE_UNSPECIFIED",
+"PREFERRED_DEAL",
+"PRIVATE_AUCTION",
+"PROGRAMMATIC_GUARANTEED"
+],
+"enumDescriptions": [
+"Default, unspecified deal type.",
+"Preferred deals.",
+"Private auction deals.",
+"Programmatic guaranteed deals."
+],
+"readOnly": true,
+"type": "string"
+},
+"deliveryControl": {
+"$ref": "DeliveryControl",
+"description": "Output only. Specifies the pacing set by the publisher.",
+"readOnly": true
+},
+"description": {
+"description": "Output only. Free text description for the deal terms.",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Output only. The name of the deal. Maximum length of 255 unicode characters is allowed. Control characters are not allowed. Buyers cannot update this field. Note: Not to be confused with name, which is a unique identifier of the deal.",
+"readOnly": true,
+"type": "string"
+},
+"eligibleSeatIds": {
+"description": "Output only. If set, this field contains the list of DSP specific seat ids set by media planners that are eligible to transact on this deal. The seat ID is in the calling DSP's namespace.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"estimatedGrossSpend": {
+"$ref": "Money",
+"description": "Specified by buyers in request for proposal (RFP) to notify publisher the total estimated spend for the proposal. Publishers will receive this information and send back proposed deals accordingly."
+},
+"flightEndTime": {
+"description": "Proposed flight end time of the deal. This will generally be stored in a granularity of a second. A value is not necessary for Private Auction deals.",
+"format": "google-datetime",
+"type": "string"
+},
+"flightStartTime": {
+"description": "Proposed flight start time of the deal. This will generally be stored in the granularity of one second since deal serving starts at seconds boundary. Any time specified with more granularity (for example, in milliseconds) will be truncated towards the start of time in seconds.",
+"format": "google-datetime",
+"type": "string"
+},
+"mediaPlanner": {
+"$ref": "MediaPlanner",
+"description": "Output only. Refers to a buyer in Real-time Bidding API's Buyer resource. This field represents a media planner (For example, agency or big advertiser).",
+"readOnly": true
+},
+"name": {
+"description": "Immutable. The unique identifier of the deal. Auto-generated by the server when a deal is created. Format: buyers/{accountId}/proposals/{proposalId}/deals/{dealId}",
+"type": "string"
+},
+"preferredDealTerms": {
+"$ref": "PreferredDealTerms",
+"description": "The terms for preferred deals."
+},
+"privateAuctionTerms": {
+"$ref": "PrivateAuctionTerms",
+"description": "The terms for private auction deals."
+},
+"programmaticGuaranteedTerms": {
+"$ref": "ProgrammaticGuaranteedTerms",
+"description": "The terms for programmatic guaranteed deals."
+},
+"proposalRevision": {
+"description": "Output only. The revision number for the proposal and is the same value as proposal.proposal_revision. Each update to deal causes the proposal revision number to auto-increment. The buyer keeps track of the last revision number they know of and pass it in when making an update. If the head revision number on the server has since incremented, then an ABORTED error is returned during the update operation to let the buyer know that a subsequent update was made.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"publisherProfile": {
+"description": "Immutable. Reference to the seller on the deal. Format: `buyers/{buyerAccountId}/publisherProfiles/{publisherProfileId}`",
+"type": "string"
+},
+"sellerTimeZone": {
+"$ref": "TimeZone",
+"description": "Output only. Time zone of the seller used to mark the boundaries of a day for daypart targeting and CPD billing.",
+"readOnly": true
+},
+"targeting": {
+"$ref": "MarketplaceTargeting",
+"description": "Specifies the subset of inventory targeted by the deal. Can be updated by the buyer before the deal is finalized."
+},
+"updateTime": {
+"description": "Output only. The time when the deal was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"DealPausingInfo": {
+"description": "Information related to deal pausing.",
+"id": "DealPausingInfo",
+"properties": {
+"pauseReason": {
+"description": "The reason for the pausing of the deal; empty for active deals.",
+"type": "string"
+},
+"pauseRole": {
+"description": "The party that first paused the deal; unspecified for active deals.",
+"enum": [
+"BUYER_SELLER_ROLE_UNSPECIFIED",
+"BUYER",
+"SELLER"
+],
+"enumDescriptions": [
+"A placeholder for an undefined buyer/seller role.",
+"Specifies the role as buyer.",
+"Specifies the role as seller."
+],
+"type": "string"
+},
+"pausingConsented": {
+"description": "Whether pausing is consented between buyer and seller for the deal.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"DeliveryControl": {
+"description": "Message contains details about how the deal will be paced.",
+"id": "DeliveryControl",
+"properties": {
+"companionDeliveryType": {
+"description": "Output only. Specifies roadblocking in a main companion lineitem.",
+"enum": [
+"COMPANION_DELIVERY_TYPE_UNSPECIFIED",
+"DELIVERY_OPTIONAL",
+"DELIVERY_AT_LEAST_ONE",
+"DELIVERY_ALL"
+],
+"enumDescriptions": [
+"A placeholder for an unspecified companion delivery type.",
+"Companions are not required to serve a creative set. The creative set can serve an inventory that has zero or more matching companions.",
+"At least one companion must be served in order for the creative set to be used.",
+"All companions in the set must be served in order for the creative set to be used. This can still serve to inventory that has more companions than can be filled."
+],
+"readOnly": true,
+"type": "string"
+},
+"creativeRotationType": {
+"description": "Output only. Specifies strategy to use for selecting a creative when multiple creatives of the same size are available.",
+"enum": [
+"CREATIVE_ROTATION_TYPE_UNSPECIFIED",
+"ROTATION_EVEN",
+"ROTATION_OPTIMIZED",
+"ROTATION_MANUAL",
+"ROTATION_SEQUENTIAL"
+],
+"enumDescriptions": [
+"Creatives are displayed roughly the same number of times over the duration of the deal.",
+"Creatives are displayed roughly the same number of times over the duration of the deal.",
+"Creatives are served roughly proportionally to their performance.",
+"Creatives are served roughly proportionally to their weights.",
+"Creatives are served exactly in sequential order, also known as Storyboarding."
+],
+"readOnly": true,
+"type": "string"
+},
+"deliveryRateType": {
+"description": "Output only. Specifies how the impression delivery will be paced.",
+"enum": [
+"DELIVERY_RATE_TYPE_UNSPECIFIED",
+"EVENLY",
+"FRONT_LOADED",
+"AS_FAST_AS_POSSIBLE"
+],
+"enumDescriptions": [
+"A placeholder for an undefined delivery rate type.",
+"Impressions are served uniformly over the life of the deal.",
+"Impressions are served front-loaded.",
+"Impressions are served as fast as possible."
+],
+"readOnly": true,
+"type": "string"
+},
+"frequencyCap": {
+"description": "Output only. Specifies any frequency caps. Cannot be filtered within ListDealsRequest.",
+"items": {
+"$ref": "FrequencyCap"
+},
+"readOnly": true,
+"type": "array"
+},
+"roadblockingType": {
+"description": "Output only. Specifies the roadblocking type in display creatives.",
+"enum": [
+"ROADBLOCKING_TYPE_UNSPECIFIED",
+"ONLY_ONE",
+"ONE_OR_MORE",
+"AS_MANY_AS_POSSIBLE",
+"ALL_ROADBLOCK",
+"CREATIVE_SET"
+],
+"enumDescriptions": [
+"A placeholder for an unspecified roadblocking type.",
+"Only one creative from a deal can serve per ad request. https://support.google.com/admanager/answer/177277.",
+"Any number of creatives from a deal can serve together per ad request.",
+"As many creatives from a deal as can fit on a page will serve. This could mean anywhere from one to all of a deal's creatives given the size constraints of ad slots on a page.",
+"All or none of the creatives from a deal will serve.",
+"A main/companion creative set roadblocking type."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"FinalizedDeal": {
+"description": "A finalized deal is a snapshot of the deal when both buyer and seller accept the deal. The buyer or seller can update the deal after it's been finalized and renegotiate on the deal targeting, terms and other fields, while at the same time the finalized snapshot of the deal can still be retrieved using this API. The finalized deal contains a copy of the deal as it existed when most recently finalized, as well as fields related to deal serving such as pause/resume status, RTB metrics, and more.",
+"id": "FinalizedDeal",
+"properties": {
+"deal": {
+"$ref": "Deal",
+"description": "A copy of the Deal made upon finalization. During renegotiation, this will reflect the last finalized deal before renegotiation was initiated."
+},
+"dealPausingInfo": {
+"$ref": "DealPausingInfo",
+"description": "Information related to deal pausing for the deal."
+},
+"dealServingStatus": {
+"description": "Serving status of the deal.",
+"enum": [
+"DEAL_SERVING_STATUS_UNSPECIFIED",
+"ACTIVE",
+"ENDED",
+"PAUSED_BY_BUYER",
+"PAUSED_BY_SELLER"
+],
+"enumDescriptions": [
+"Unspecified.",
+"The deal is actively serving or ready to serve when the start date is reached.",
+"The deal serving has ended.",
+"The deal serving is paused by buyer.",
+"The deal serving is paused by seller."
+],
+"type": "string"
+},
+"name": {
+"description": "The resource name of the finalized deal. Format: `buyers/{accountId}/finalizedDeals/{finalizedDealId}`",
+"type": "string"
+},
+"readyToServe": {
+"description": "Whether the Programmatic Guaranteed deal is ready for serving.",
+"type": "boolean"
+},
+"rtbMetrics": {
+"$ref": "RtbMetrics",
+"description": "Real-time bidding metrics for this deal."
+}
+},
+"type": "object"
+},
+"FirstPartyMobileApplicationTargeting": {
+"description": "Represents a list of targeted and excluded mobile application IDs that publishers own. Android App ID, for example, com.google.android.apps.maps, can be found in Google Play Store URL. iOS App ID (which is a number) can be found at the end of iTunes store URL. First party mobile applications is either included or excluded.",
+"id": "FirstPartyMobileApplicationTargeting",
+"properties": {
+"excludedAppIds": {
+"description": "A list of application IDs to be excluded.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"targetedAppIds": {
+"description": "A list of application IDs to be included.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"FrequencyCap": {
+"description": "Message contains details about publisher-set frequency caps of the delivery.",
+"id": "FrequencyCap",
+"properties": {
+"maxImpressions": {
+"description": "The maximum number of impressions that can be served to a user within the specified time period.",
+"format": "int32",
+"type": "integer"
+},
+"timeUnitType": {
+"description": "The time unit. Along with num_time_units defines the amount of time over which impressions per user are counted and capped.",
+"enum": [
+"TIME_UNIT_TYPE_UNSPECIFIED",
+"MINUTE",
+"HOUR",
+"DAY",
+"WEEK",
+"MONTH",
+"LIFETIME",
+"POD",
+"STREAM"
+],
+"enumDescriptions": [
+"A placeholder for an undefined time unit type. This just indicates the variable with this value hasn't been initialized.",
+"Minute unit.",
+"Hour unit.",
+"Day unit.",
+"Week unit.",
+"Month unit.",
+"Lifecycle/Lifetime unit.",
+"Pod unit.",
+"Stream unit."
+],
+"type": "string"
+},
+"timeUnitsCount": {
+"description": "The amount of time, in the units specified by time_unit_type. Defines the amount of time over which impressions per user are counted and capped.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"InventorySizeTargeting": {
+"description": "Represents the size of an ad unit that can be targeted on a bid request.",
+"id": "InventorySizeTargeting",
+"properties": {
+"excludedInventorySizes": {
+"description": "A list of inventory sizes to be excluded.",
+"items": {
+"$ref": "AdSize"
+},
+"type": "array"
+},
+"targetedInventorySizes": {
+"description": "A list of inventory sizes to be included.",
+"items": {
+"$ref": "AdSize"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"InventoryTypeTargeting": {
+"description": "Targeting of the inventory types a bid request can originate from.",
+"id": "InventoryTypeTargeting",
+"properties": {
+"inventoryTypes": {
+"description": "The list of targeted inventory types for the bid request.",
+"items": {
+"enum": [
+"INVENTORY_TYPE_UNSPECIFIED",
+"BROWSER",
+"MOBILE_APP",
+"VIDEO_PLAYER"
+],
+"enumDescriptions": [
+"Unspecified inventory type",
+"Desktop or mobile web browser excluding ads inside a video player",
+"Mobile apps other than video players and web browsers",
+"Instream video and audio"
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListAuctionPackagesResponse": {
+"description": "Response message for listing auction packages.",
+"id": "ListAuctionPackagesResponse",
+"properties": {
+"auctionPackages": {
+"description": "The list of auction packages.",
+"items": {
+"$ref": "AuctionPackage"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Continuation token for fetching the next page of results. Pass this value in the ListAuctionPackagesRequest.pageToken field in the subsequent call to the `ListAuctionPackages` method to retrieve the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListClientUsersResponse": {
+"description": "Response message for the list method.",
+"id": "ListClientUsersResponse",
+"properties": {
+"clientUsers": {
+"description": "The returned list of client users.",
+"items": {
+"$ref": "ClientUser"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Pass this value in the ListClientUsersRequest.pageToken field in the subsequent call to the list method to retrieve the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListClientsResponse": {
+"description": "Response message for the list method.",
+"id": "ListClientsResponse",
+"properties": {
+"clients": {
+"description": "The returned list of clients.",
+"items": {
+"$ref": "Client"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Pass this value in the ListClientsRequest.pageToken field in the subsequent call to the list method to retrieve the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListDataSegmentsResponse": {
+"description": "Response message for listing data segments.",
+"id": "ListDataSegmentsResponse",
+"properties": {
+"dataSegments": {
+"description": "The list of data segments.",
+"items": {
+"$ref": "DataSegment"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Continuation token for fetching the next page of results. Pass this value in the ListDataSegmentsRequest.pageToken field in the subsequent call to the `ListDataSegments` method to retrieve the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListDealsResponse": {
+"description": "Response message for listing deals in a proposal.",
+"id": "ListDealsResponse",
+"properties": {
+"deals": {
+"description": "The list of deals.",
+"items": {
+"$ref": "Deal"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to fetch the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListFinalizedDealsResponse": {
+"description": "Response message for listing finalized deals.",
+"id": "ListFinalizedDealsResponse",
+"properties": {
+"finalizedDeals": {
+"description": "The list of finalized deals.",
+"items": {
+"$ref": "FinalizedDeal"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to fetch the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListProposalsResponse": {
+"description": "Response message for listing proposals.",
+"id": "ListProposalsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Continuation token for fetching the next page of results.",
+"type": "string"
+},
+"proposals": {
+"description": "The list of proposals.",
+"items": {
+"$ref": "Proposal"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListPublisherProfilesResponse": {
+"description": "Response message for profiles visible to the buyer.",
+"id": "ListPublisherProfilesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to fetch the next page of results.",
+"type": "string"
+},
+"publisherProfiles": {
+"description": "The list of matching publisher profiles.",
+"items": {
+"$ref": "PublisherProfile"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MarketplaceTargeting": {
+"description": "Targeting represents different criteria that can be used to target deals or auction packages. For example, they can choose to target inventory only if the user is in the US. Multiple types of targeting are always applied as a logical AND, unless noted otherwise.",
+"id": "MarketplaceTargeting",
+"properties": {
+"daypartTargeting": {
+"$ref": "DayPartTargeting",
+"description": "Daypart targeting information."
+},
+"excludedSensitiveCategoryIds": {
+"description": "Output only. The sensitive content category label IDs excluded. Refer to this file https://storage.googleapis.com/adx-rtb-dictionaries/content-labels.txt for category IDs.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"geoTargeting": {
+"$ref": "CriteriaTargeting",
+"description": "Output only. Geo criteria IDs to be included/excluded.",
+"readOnly": true
+},
+"inventorySizeTargeting": {
+"$ref": "InventorySizeTargeting",
+"description": "Output only. Inventory sizes to be included/excluded.",
+"readOnly": true
+},
+"inventoryTypeTargeting": {
+"$ref": "InventoryTypeTargeting",
+"description": "Output only. Inventory type targeting information.",
+"readOnly": true
+},
+"placementTargeting": {
+"$ref": "PlacementTargeting",
+"description": "Output only. Placement targeting information, for example, URL, mobile applications.",
+"readOnly": true
+},
+"technologyTargeting": {
+"$ref": "TechnologyTargeting",
+"description": "Output only. Technology targeting information, for example, operating system, device category.",
+"readOnly": true
+},
+"userListTargeting": {
+"$ref": "CriteriaTargeting",
+"description": "Buyer user list targeting information. User lists can be uploaded using https://developers.google.com/authorized-buyers/rtb/bulk-uploader."
+},
+"verticalTargeting": {
+"$ref": "CriteriaTargeting",
+"description": "Output only. The verticals included or excluded as defined in https://developers.google.com/authorized-buyers/rtb/downloads/publisher-verticals",
+"readOnly": true
+},
+"videoTargeting": {
+"$ref": "VideoTargeting",
+"description": "Output only. Video targeting information.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"MediaPlanner": {
+"description": "Describes a single Media Planner account.",
+"id": "MediaPlanner",
+"properties": {
+"accountId": {
+"description": "Output only. Account ID of the media planner.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"MobileApplicationTargeting": {
+"description": "Mobile application targeting settings.",
+"id": "MobileApplicationTargeting",
+"properties": {
+"firstPartyTargeting": {
+"$ref": "FirstPartyMobileApplicationTargeting",
+"description": "Publisher owned apps to be targeted or excluded by the publisher to display the ads in."
+}
+},
+"type": "object"
+},
+"Money": {
+"description": "Represents an amount of money with its currency type.",
+"id": "Money",
+"properties": {
+"currencyCode": {
+"description": "The three-letter currency code defined in ISO 4217.",
+"type": "string"
+},
+"nanos": {
+"description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+"format": "int32",
+"type": "integer"
+},
+"units": {
+"description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Note": {
+"description": "A text note attached to the proposal to facilitate the communication between buyers and sellers.",
+"id": "Note",
+"properties": {
+"createTime": {
+"description": "Output only. When this note was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"creatorRole": {
+"description": "Output only. The role who created the note.",
+"enum": [
+"BUYER_SELLER_ROLE_UNSPECIFIED",
+"BUYER",
+"SELLER"
+],
+"enumDescriptions": [
+"A placeholder for an undefined buyer/seller role.",
+"Specifies the role as buyer.",
+"Specifies the role as seller."
+],
+"readOnly": true,
+"type": "string"
+},
+"note": {
+"description": "The text of the note. Maximum length is 1024 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OperatingSystemTargeting": {
+"description": "Represents targeting information for operating systems.",
+"id": "OperatingSystemTargeting",
+"properties": {
+"operatingSystemCriteria": {
+"$ref": "CriteriaTargeting",
+"description": "IDs of operating systems to be included/excluded."
+},
+"operatingSystemVersionCriteria": {
+"$ref": "CriteriaTargeting",
+"description": "IDs of operating system versions to be included/excluded."
+}
+},
+"type": "object"
+},
+"PauseFinalizedDealRequest": {
+"description": "Request message for pausing a finalized deal.",
+"id": "PauseFinalizedDealRequest",
+"properties": {
+"reason": {
+"description": "The reason to pause the finalized deal, will be displayed to the seller. Maximum length is 1000 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PlacementTargeting": {
+"description": "Represents targeting about where the ads can appear, for example, certain sites or mobile applications. Different placement targeting types will be logically OR'ed.",
+"id": "PlacementTargeting",
+"properties": {
+"mobileApplicationTargeting": {
+"$ref": "MobileApplicationTargeting",
+"description": "Mobile application targeting information in a deal. This doesn't apply to Auction Packages."
+},
+"uriTargeting": {
+"$ref": "UriTargeting",
+"description": "URLs to be included/excluded."
+}
+},
+"type": "object"
+},
+"PreferredDealTerms": {
+"description": "Pricing terms for Preferred Deals.",
+"id": "PreferredDealTerms",
+"properties": {
+"fixedPrice": {
+"$ref": "Price",
+"description": "Fixed price for the deal."
+}
+},
+"type": "object"
+},
+"Price": {
+"description": "Represents a price and a pricing type for a deal.",
+"id": "Price",
+"properties": {
+"amount": {
+"$ref": "Money",
+"description": "The actual price with currency specified."
+},
+"type": {
+"description": "The pricing type for the deal.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"CPM",
+"CPD"
+],
+"enumDescriptions": [
+"A placeholder for an undefined pricing type. If the pricing type is unspecified, CPM will be used instead.",
+"Cost per thousand impressions.",
+"Cost per day."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"PrivateAuctionTerms": {
+"description": "Pricing terms for Private Auctions.",
+"id": "PrivateAuctionTerms",
+"properties": {
+"floorPrice": {
+"$ref": "Price",
+"description": "The minimum price buyer has to bid to compete in the private auction."
+},
+"openAuctionAllowed": {
+"description": "Output only. True if open auction buyers are allowed to compete with invited buyers in this private auction.",
+"readOnly": true,
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"PrivateData": {
+"description": "Buyers are allowed to store certain types of private data in a proposal or deal.",
+"id": "PrivateData",
+"properties": {
+"referenceId": {
+"description": "A buyer specified reference ID. This can be queried in the list operations (max-length: 1024 unicode code units).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProgrammaticGuaranteedTerms": {
+"description": "Pricing terms for Programmatic Guaranteed Deals.",
+"id": "ProgrammaticGuaranteedTerms",
+"properties": {
+"fixedPrice": {
+"$ref": "Price",
+"description": "Fixed price for the deal."
+},
+"guaranteedLooks": {
+"description": "Count of guaranteed looks. For CPD deals, buyer changes to guaranteed_looks will be ignored.",
+"format": "int64",
+"type": "string"
+},
+"impressionCap": {
+"description": "The lifetime impression cap for CPM Sponsorship deals. Deal will stop serving when cap is reached.",
+"format": "int64",
+"type": "string"
+},
+"minimumDailyLooks": {
+"description": "Daily minimum looks for CPD deal types. For CPD deals, buyer should negotiate on this field instead of guaranteed_looks.",
+"format": "int64",
+"type": "string"
+},
+"percentShareOfVoice": {
+"description": "For sponsorship deals, this is the percentage of the seller's eligible impressions that the deal will serve until the cap is reached. Valid value is within range 0~100.",
+"format": "int64",
+"type": "string"
+},
+"reservationType": {
+"description": "The reservation type for a Programmatic Guaranteed deal. This indicates whether the number of impressions is fixed, or a percent of available impressions. If not specified, the default reservation type is STANDARD.",
+"enum": [
+"RESERVATION_TYPE_UNSPECIFIED",
+"STANDARD",
+"SPONSORSHIP"
+],
+"enumDescriptions": [
+"An unspecified reservation type.",
+"Non-sponsorship deal.",
+"Sponsorship deals don't have impression goal (guaranteed_looks) and they are served based on the flight dates. For CPM Sponsorship deals, impression_cap is the lifetime impression limit."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Proposal": {
+"description": "Represents a proposal in the Marketplace. A proposal is the unit of negotiation between a seller and a buyer.",
+"id": "Proposal",
+"properties": {
+"billedBuyer": {
+"description": "Output only. When the client field is populated, this field refers to the buyer who creates and manages the client buyer and gets billed on behalf of the client buyer; when the buyer field is populated, this field is the same value as buyer. Format : `buyers/{buyerAccountId}`",
+"readOnly": true,
+"type": "string"
+},
+"buyer": {
+"description": "Output only. Refers to a buyer in The Realtime-bidding API. Format: `buyers/{buyerAccountId}`",
+"readOnly": true,
+"type": "string"
+},
+"buyerContacts": {
+"description": "Contact information for the buyer.",
+"items": {
+"$ref": "Contact"
+},
+"type": "array"
+},
+"buyerPrivateData": {
+"$ref": "PrivateData",
+"description": "Buyer private data (hidden from seller)."
+},
+"client": {
+"description": "Output only. Refers to a Client. Format: `buyers/{buyerAccountId}/clients/{clientAccountid}`",
+"readOnly": true,
+"type": "string"
+},
+"dealType": {
+"description": "Output only. Type of deal the proposal contains.",
+"enum": [
+"DEAL_TYPE_UNSPECIFIED",
+"PREFERRED_DEAL",
+"PRIVATE_AUCTION",
+"PROGRAMMATIC_GUARANTEED"
+],
+"enumDescriptions": [
+"Default, unspecified deal type.",
+"Preferred deals.",
+"Private auction deals.",
+"Programmatic guaranteed deals."
+],
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Output only. The descriptive name for the proposal. Maximum length of 255 unicode characters is allowed. Control characters are not allowed. Buyers cannot update this field. Note: Not to be confused with name, which is a unique identifier of the proposal.",
+"readOnly": true,
+"type": "string"
+},
+"isRenegotiating": {
+"description": "Output only. True if the proposal was previously finalized and is now being renegotiated.",
+"readOnly": true,
+"type": "boolean"
+},
+"lastUpdaterOrCommentorRole": {
+"description": "Output only. The role of the last user that either updated the proposal or left a comment.",
+"enum": [
+"BUYER_SELLER_ROLE_UNSPECIFIED",
+"BUYER",
+"SELLER"
+],
+"enumDescriptions": [
+"A placeholder for an undefined buyer/seller role.",
+"Specifies the role as buyer.",
+"Specifies the role as seller."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Immutable. The name of the proposal serving as a unique identifier. Format: buyers/{accountId}/proposals/{proposalId}",
+"type": "string"
+},
+"notes": {
+"description": "A list of notes from the buyer and the seller attached to this proposal.",
+"items": {
+"$ref": "Note"
+},
+"type": "array"
+},
+"originatorRole": {
+"description": "Output only. Indicates whether the buyer/seller created the proposal.",
+"enum": [
+"BUYER_SELLER_ROLE_UNSPECIFIED",
+"BUYER",
+"SELLER"
+],
+"enumDescriptions": [
+"A placeholder for an undefined buyer/seller role.",
+"Specifies the role as buyer.",
+"Specifies the role as seller."
+],
+"readOnly": true,
+"type": "string"
+},
+"pausingConsented": {
+"description": "Whether pausing is allowed for the proposal. This is a negotiable term between buyers and publishers.",
+"type": "boolean"
+},
+"proposalRevision": {
+"description": "Output only. The revision number for the proposal. Each update to the proposal or deal causes the proposal revision number to auto-increment. The buyer keeps track of the last revision number they know of and pass it in when making an update. If the head revision number on the server has since incremented, then an ABORTED error is returned during the update operation to let the buyer know that a subsequent update was made.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"publisherProfile": {
+"description": "Immutable. Reference to the seller on the proposal. Format: `buyers/{buyerAccountId}/publisherProfiles/{publisherProfileId}` Note: This field may be set only when creating the resource. Modifying this field while updating the resource will result in an error.",
+"type": "string"
+},
+"sellerContacts": {
+"description": "Output only. Contact information for the seller.",
+"items": {
+"$ref": "Contact"
+},
+"readOnly": true,
+"type": "array"
+},
+"state": {
+"description": "Output only. Indicates the state of the proposal.",
+"enum": [
+"STATE_UNSPECIFIED",
+"BUYER_REVIEW_REQUESTED",
+"SELLER_REVIEW_REQUESTED",
+"BUYER_ACCEPTANCE_REQUESTED",
+"FINALIZED",
+"TERMINATED"
+],
+"enumDescriptions": [
+"Unspecified proposal state",
+"When a proposal is waiting for buyer to review.",
+"When the proposal is waiting for the seller to review.",
+"When the seller accepted the proposal and sent it to the buyer for review.",
+"When both buyer and seller has accepted the proposal",
+"When either buyer or seller has cancelled the proposal"
+],
+"readOnly": true,
+"type": "string"
+},
+"termsAndConditions": {
+"description": "Output only. The terms and conditions associated with this proposal. Accepting a proposal implies acceptance of this field. This is created by the seller, the buyer can only view it.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the proposal was last revised.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PublisherProfile": {
+"description": "The values in the publisher profile are supplied by the publisher. All fields are not filterable unless stated otherwise.",
+"id": "PublisherProfile",
+"properties": {
+"audienceDescription": {
+"description": "Description on the publisher's audience.",
+"type": "string"
+},
+"directDealsContact": {
+"description": "Contact information for direct reservation deals. This is free text entered by the publisher and may include information like names, phone numbers and email addresses.",
+"type": "string"
+},
+"displayName": {
+"description": "Display name of the publisher profile. Can be used to filter the response of the publisherProfiles.list method.",
+"type": "string"
+},
+"domains": {
+"description": "The list of domains represented in this publisher profile. Empty if this is a parent profile. These are top private domains, meaning that these will not contain a string like \"photos.google.co.uk/123\", but will instead contain \"google.co.uk\". Can be used to filter the response of the publisherProfiles.list method.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"isParent": {
+"description": "Indicates if this profile is the parent profile of the seller. A parent profile represents all the inventory from the seller, as opposed to child profile that is created to brand a portion of inventory. One seller has only one parent publisher profile, and can have multiple child profiles. See https://support.google.com/admanager/answer/6035806 for details. Can be used to filter the response of the publisherProfiles.list method by setting the filter to \"is_parent: true\".",
+"type": "boolean"
+},
+"logoUrl": {
+"description": "A Google public URL to the logo for this publisher profile. The logo is stored as a PNG, JPG, or GIF image.",
+"type": "string"
+},
+"mediaKitUrl": {
+"description": "URL to additional marketing and sales materials.",
+"type": "string"
+},
+"mobileApps": {
+"description": "The list of apps represented in this publisher profile. Empty if this is a parent profile.",
+"items": {
+"$ref": "PublisherProfileMobileApplication"
+},
+"type": "array"
+},
+"name": {
+"description": "Name of the publisher profile. Format: `buyers/{buyer}/publisherProfiles/{publisher_profile}`",
+"type": "string"
+},
+"overview": {
+"description": "Overview of the publisher.",
+"type": "string"
+},
+"pitchStatement": {
+"description": "Statement explaining what's unique about publisher's business, and why buyers should partner with the publisher.",
+"type": "string"
+},
+"programmaticDealsContact": {
+"description": "Contact information for programmatic deals. This is free text entered by the publisher and may include information like names, phone numbers and email addresses.",
+"type": "string"
+},
+"publisherCode": {
+"description": "A unique identifying code for the seller. This value is the same for all of the seller's parent and child publisher profiles. Can be used to filter the response of the publisherProfiles.list method.",
+"type": "string"
+},
+"samplePageUrl": {
+"description": "URL to a sample content page.",
+"type": "string"
+},
+"topHeadlines": {
+"description": "Up to three key metrics and rankings. For example, \"#1 Mobile News Site for 20 Straight Months\".",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PublisherProfileMobileApplication": {
+"description": "A mobile application that contains a external app ID, name, and app store.",
+"id": "PublisherProfileMobileApplication",
+"properties": {
+"appStore": {
+"description": "The app store the app belongs to. Can be used to filter the response of the publisherProfiles.list method.",
+"enum": [
+"APP_STORE_TYPE_UNSPECIFIED",
+"APPLE_ITUNES",
+"GOOGLE_PLAY",
+"ROKU",
+"AMAZON_FIRE_TV",
+"PLAYSTATION",
+"XBOX",
+"SAMSUNG_TV",
+"AMAZON",
+"OPPO",
+"SAMSUNG",
+"VIVO",
+"XIAOMI",
+"LG_TV"
+],
+"enumDescriptions": [
+"A placeholder for an unknown app store.",
+"Apple iTunes",
+"Google Play",
+"Roku",
+"Amazon Fire TV",
+"PlayStation",
+"Xbox",
+"Samsung TV",
+"Amazon Appstore",
+"OPPO App Market",
+"Samsung Galaxy Store",
+"VIVO App Store",
+"Xiaomi GetApps",
+"LG TV"
+],
+"type": "string"
+},
+"externalAppId": {
+"description": "The external ID for the app from its app store. Can be used to filter the response of the publisherProfiles.list method.",
+"type": "string"
+},
+"name": {
+"description": "The name of the app.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResumeFinalizedDealRequest": {
+"description": "Request message for resuming a finalized deal.",
+"id": "ResumeFinalizedDealRequest",
+"properties": {},
+"type": "object"
+},
+"RtbMetrics": {
+"description": "Real-time bidding metrics. For what each metric means refer to [Report metrics](https://support.google.com/adxbuyer/answer/6115195#report-metrics)",
+"id": "RtbMetrics",
+"properties": {
+"adImpressions7Days": {
+"description": "Ad impressions in last 7 days.",
+"format": "int64",
+"type": "string"
+},
+"bidRate7Days": {
+"description": "Bid rate in last 7 days, calculated by (bids / bid requests).",
+"format": "double",
+"type": "number"
+},
+"bidRequests7Days": {
+"description": "Bid requests in last 7 days.",
+"format": "int64",
+"type": "string"
+},
+"bids7Days": {
+"description": "Bids in last 7 days.",
+"format": "int64",
+"type": "string"
+},
+"filteredBidRate7Days": {
+"description": "Filtered bid rate in last 7 days, calculated by (filtered bids / bids).",
+"format": "double",
+"type": "number"
+},
+"mustBidRateCurrentMonth": {
+"description": "Must bid rate for current month.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"SendRfpRequest": {
+"description": "Request to send an RFP. All fields in this request are proposed to publisher and subject to changes by publisher during later negotiation.",
+"id": "SendRfpRequest",
+"properties": {
+"buyerContacts": {
+"description": "Contact information for the buyer.",
+"items": {
+"$ref": "Contact"
+},
+"type": "array"
+},
+"client": {
+"description": "If the current buyer is sending the RFP on behalf of its client, use this field to specify the name of the client in the format: `buyers/{accountId}/clients/{clientAccountid}`.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The display name of the proposal being created by this RFP.",
+"type": "string"
+},
+"estimatedGrossSpend": {
+"$ref": "Money",
+"description": "Specified by buyers in request for proposal (RFP) to notify publisher the total estimated spend for the proposal. Publishers will receive this information and send back proposed deals accordingly."
+},
+"flightEndTime": {
+"description": "Required. Proposed flight end time of the RFP. A timestamp in RFC3339 UTC \"Zulu\" format. Note that the specified value will be truncated to a granularity of one second.",
+"format": "google-datetime",
+"type": "string"
+},
+"flightStartTime": {
+"description": "Required. Proposed flight start time of the RFP. A timestamp in RFC3339 UTC \"Zulu\" format. Note that the specified value will be truncated to a granularity of one second.",
+"format": "google-datetime",
+"type": "string"
+},
+"geoTargeting": {
+"$ref": "CriteriaTargeting",
+"description": "Geo criteria IDs to be targeted. Refer to Geo tables."
+},
+"inventorySizeTargeting": {
+"$ref": "InventorySizeTargeting",
+"description": "Inventory sizes to be targeted."
+},
+"note": {
+"description": "A message that is sent to the publisher. Maximum length is 1024 characters.",
+"type": "string"
+},
+"preferredDealTerms": {
+"$ref": "PreferredDealTerms",
+"description": "The terms for preferred deals."
+},
+"programmaticGuaranteedTerms": {
+"$ref": "ProgrammaticGuaranteedTerms",
+"description": "The terms for programmatic guaranteed deals."
+},
+"publisherProfile": {
+"description": "Required. The profile of the publisher who will receive this RFP in the format: `buyers/{accountId}/publisherProfiles/{publisherProfileId}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetReadyToServeRequest": {
+"description": "Request message for setting ready to serve for a finalized deal.",
+"id": "SetReadyToServeRequest",
+"properties": {},
+"type": "object"
+},
+"SubscribeAuctionPackageRequest": {
+"description": "Request message for SubscribeAuctionPackage.",
+"id": "SubscribeAuctionPackageRequest",
+"properties": {},
+"type": "object"
+},
+"SubscribeClientsRequest": {
+"description": "Request message for SubscribeAuctionPackageClients.",
+"id": "SubscribeClientsRequest",
+"properties": {
+"clients": {
+"description": "Optional. A list of client buyers to subscribe to the auction package, with client buyer in the format `buyers/{accountId}/clients/{clientAccountId}`. The current buyer will be subscribed to the auction package regardless of the list contents if not already.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TechnologyTargeting": {
+"description": "Represents targeting about various types of technology.",
+"id": "TechnologyTargeting",
+"properties": {
+"deviceCapabilityTargeting": {
+"$ref": "CriteriaTargeting",
+"description": "IDs of device capabilities to be included/excluded."
+},
+"deviceCategoryTargeting": {
+"$ref": "CriteriaTargeting",
+"description": "IDs of device categories to be included/excluded."
+},
+"operatingSystemTargeting": {
+"$ref": "OperatingSystemTargeting",
+"description": "Operating system related targeting information."
+}
+},
+"type": "object"
+},
+"TimeOfDay": {
+"description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
+"id": "TimeOfDay",
+"properties": {
+"hours": {
+"description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
+"format": "int32",
+"type": "integer"
+},
+"minutes": {
+"description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.",
+"format": "int32",
+"type": "integer"
+},
+"nanos": {
+"description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.",
+"format": "int32",
+"type": "integer"
+},
+"seconds": {
+"description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"TimeZone": {
+"description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
+"id": "TimeZone",
+"properties": {
+"id": {
+"description": "IANA Time Zone Database time zone. For example \"America/New_York\".",
+"type": "string"
+},
+"version": {
+"description": "Optional. IANA Time Zone Database version number. For example \"2019a\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UnsubscribeAuctionPackageRequest": {
+"description": "Request message for UnsubscribeAuctionPackage.",
+"id": "UnsubscribeAuctionPackageRequest",
+"properties": {},
+"type": "object"
+},
+"UnsubscribeClientsRequest": {
+"description": "Request message for UnsubscribeAuctionPackage.",
+"id": "UnsubscribeClientsRequest",
+"properties": {
+"clients": {
+"description": "Optional. A list of client buyers to unsubscribe from the auction package, with client buyer in the format `buyers/{accountId}/clients/{clientAccountId}`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"UpdateDealRequest": {
+"description": "Request message for updating the deal at the given revision number.",
+"id": "UpdateDealRequest",
+"properties": {
+"deal": {
+"$ref": "Deal",
+"description": "Required. The deal to update. The deal's `name` field is used to identify the deal to be updated. Note: proposal_revision will have to be provided within the resource or else an error will be thrown. Format: buyers/{accountId}/proposals/{proposalId}/deals/{dealId}"
+},
+"updateMask": {
+"description": "List of fields to be updated. If empty or unspecified, the service will update all fields populated in the update request excluding the output only fields and primitive fields with default value. Note that explicit field mask is required in order to reset a primitive field back to its default value, for example, false for boolean fields, 0 for integer fields. A special field mask consisting of a single path \"*\" can be used to indicate full replacement(the equivalent of PUT method), updatable fields unset or unspecified in the input will be cleared or set to default value. Output only fields will be ignored regardless of the value of updateMask.",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UriTargeting": {
+"description": "Represents a list of targeted and excluded URLs (for example, google.com). For Private Auction Deals, URLs are either included or excluded. For Programmatic Guaranteed and Preferred Deals, this doesn't apply.",
+"id": "UriTargeting",
+"properties": {
+"excludedUris": {
+"description": "A list of URLs to be excluded.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"targetedUris": {
+"description": "A list of URLs to be included.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"VideoTargeting": {
+"description": "Represents targeting information about video.",
+"id": "VideoTargeting",
+"properties": {
+"excludedPositionTypes": {
+"description": "A list of video positions to be excluded. When this field is populated, the targeted_position_types field must be empty.",
+"items": {
+"enum": [
+"POSITION_TYPE_UNSPECIFIED",
+"PREROLL",
+"MIDROLL",
+"POSTROLL"
+],
+"enumDescriptions": [
+"A placeholder for an undefined video position.",
+"Ad is played before the video.",
+"Ad is played during the video.",
+"Ad is played after the video."
+],
+"type": "string"
+},
+"type": "array"
+},
+"targetedPositionTypes": {
+"description": "A list of video positions to be included. When this field is populated, the excluded_position_types field must be empty.",
+"items": {
+"enum": [
+"POSITION_TYPE_UNSPECIFIED",
+"PREROLL",
+"MIDROLL",
+"POSTROLL"
+],
+"enumDescriptions": [
+"A placeholder for an undefined video position.",
+"Ad is played before the video.",
+"Ad is played during the video.",
+"Ad is played after the video."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Authorized Buyers Marketplace API",
+"version": "v1alpha",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/baremetalsolution.v1alpha1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/baremetalsolution.v1alpha1.json
new file mode 100644
index 0000000000000000000000000000000000000000..59b02ef3b1aeb1a4cb60c7a29f08a73395c85a76
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/baremetalsolution.v1alpha1.json
@@ -0,0 +1,588 @@
+{
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/cloud-platform": {
+ "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+ }
+ }
+ }
+ },
+ "basePath": "",
+ "baseUrl": "https://baremetalsolution.googleapis.com/",
+ "batchPath": "batch",
+ "description": "Provides ways to manage Bare Metal Solution hardware installed in a regional extension located near a Google Cloud data center.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://cloud.google.com/bare-metal",
+ "fullyEncodeReservedExpansion": true,
+ "icons": {
+ "x16": "http://www.google.com/images/icons/product/search-16.gif",
+ "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "id": "baremetalsolution:v1alpha1",
+ "kind": "discovery#restDescription",
+ "mtlsRootUrl": "https://baremetalsolution.mtls.googleapis.com/",
+ "name": "baremetalsolution",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "$.xgafv": {
+ "description": "V1 error format.",
+ "enum": [
+ "1",
+ "2"
+ ],
+ "enumDescriptions": [
+ "v1 error format",
+ "v2 error format"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "access_token": {
+ "description": "OAuth access token.",
+ "location": "query",
+ "type": "string"
+ },
+ "alt": {
+ "default": "json",
+ "description": "Data format for response.",
+ "enum": [
+ "json",
+ "media",
+ "proto"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json",
+ "Media download with context-dependent Content-Type",
+ "Responses with Content-Type of application/x-protobuf"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "callback": {
+ "description": "JSONP",
+ "location": "query",
+ "type": "string"
+ },
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
+ "type": "string"
+ },
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
+ "type": "string"
+ },
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
+ "type": "string"
+ },
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+ "location": "query",
+ "type": "string"
+ },
+ "uploadType": {
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ },
+ "upload_protocol": {
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "protocol": "rest",
+ "resources": {
+ "projects": {
+ "resources": {
+ "locations": {
+ "methods": {
+ "submitProvisioningConfig": {
+ "description": "Submit a provisiong configuration for a given project.",
+ "flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}:submitProvisioningConfig",
+ "httpMethod": "POST",
+ "id": "baremetalsolution.projects.locations.submitProvisioningConfig",
+ "parameterOrder": [
+ "project",
+ "location"
+ ],
+ "parameters": {
+ "location": {
+ "description": "Required. The target location of the provisioning request.",
+ "location": "path",
+ "pattern": "^locations/[^/]+$",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Required. The target project of the provisioning request.",
+ "location": "path",
+ "pattern": "^projects/[^/]+$",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "v1alpha1/{+project}/{+location}:submitProvisioningConfig",
+ "request": {
+ "$ref": "SubmitProvisioningConfigRequest"
+ },
+ "response": {
+ "$ref": "ProvisioningConfig"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ }
+ }
+ },
+ "provisioningQuotas": {
+ "methods": {
+ "list": {
+ "description": "List the budget details to provision resources on a given project.",
+ "flatPath": "v1alpha1/projects/{projectsId}/provisioningQuotas",
+ "httpMethod": "GET",
+ "id": "baremetalsolution.projects.provisioningQuotas.list",
+ "parameterOrder": [
+ "parent"
+ ],
+ "parameters": {
+ "pageSize": {
+ "description": "The maximum number of items to return.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "pageToken": {
+ "description": "The next_page_token value returned from a previous List request, if any.",
+ "location": "query",
+ "type": "string"
+ },
+ "parent": {
+ "description": "Required. The parent project containing the provisioning quotas.",
+ "location": "path",
+ "pattern": "^projects/[^/]+$",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "v1alpha1/{+parent}/provisioningQuotas",
+ "response": {
+ "$ref": "ListProvisioningQuotasResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "revision": "20220829",
+ "rootUrl": "https://baremetalsolution.googleapis.com/",
+ "schemas": {
+ "InstanceConfig": {
+ "description": "Configuration parameters for a new instance.",
+ "id": "InstanceConfig",
+ "properties": {
+ "clientNetwork": {
+ "$ref": "NetworkAddress",
+ "description": "Client network address."
+ },
+ "hyperthreading": {
+ "description": "Whether the instance should be provisioned with Hyperthreading enabled.",
+ "type": "boolean"
+ },
+ "id": {
+ "description": "A transient unique identifier to idenfity an instance within an ProvisioningConfig request.",
+ "type": "string"
+ },
+ "instanceType": {
+ "description": "Instance type.",
+ "type": "string"
+ },
+ "location": {
+ "description": "Location where to deploy the instance.",
+ "type": "string"
+ },
+ "osImage": {
+ "description": "OS image to initialize the instance.",
+ "type": "string"
+ },
+ "privateNetwork": {
+ "$ref": "NetworkAddress",
+ "description": "Private network address, if any."
+ },
+ "userNote": {
+ "description": "User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceQuota": {
+ "description": "A resource budget.",
+ "id": "InstanceQuota",
+ "properties": {
+ "availableMachineCount": {
+ "description": "Number of machines than can be created for the given location and instance_type.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "instanceType": {
+ "description": "Instance type.",
+ "type": "string"
+ },
+ "location": {
+ "description": "Location where the quota applies.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ListProvisioningQuotasResponse": {
+ "description": "Response for ListProvisioningQuotas.",
+ "id": "ListProvisioningQuotasResponse",
+ "properties": {
+ "nextPageToken": {
+ "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+ "type": "string"
+ },
+ "provisioningQuotas": {
+ "description": "The provisioning quotas registered in this project.",
+ "items": {
+ "$ref": "ProvisioningQuota"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "LunRange": {
+ "description": "A LUN range.",
+ "id": "LunRange",
+ "properties": {
+ "quantity": {
+ "description": "Number of LUNs to create.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "sizeGb": {
+ "description": "The requested size of each LUN, in GB.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkAddress": {
+ "description": "A network.",
+ "id": "NetworkAddress",
+ "properties": {
+ "address": {
+ "description": "IP address to be assigned to the server.",
+ "type": "string"
+ },
+ "existingNetworkId": {
+ "description": "Name of the existing network to use. Will be of the format at--vlan for pre-intake UI networks like for eg, at-123456-vlan001 or any user-defined name like for eg, my-network-name for networks provisioned using intake UI. The field is exclusively filled only in case of an already existing network. Mutually exclusive with network_id.",
+ "type": "string"
+ },
+ "networkId": {
+ "description": "Name of the network to use, within the same ProvisioningConfig request. This represents a new network being provisioned in the same request. Can have any user-defined name like for eg, my-network-name. Mutually exclusive with existing_network_id.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkConfig": {
+ "description": "Configuration parameters for a new network.",
+ "id": "NetworkConfig",
+ "properties": {
+ "bandwidth": {
+ "description": "Interconnect bandwidth. Set only when type is CLIENT.",
+ "enum": [
+ "BANDWIDTH_UNSPECIFIED",
+ "BW_1_GBPS",
+ "BW_2_GBPS",
+ "BW_5_GBPS",
+ "BW_10_GBPS"
+ ],
+ "enumDescriptions": [
+ "Unspecified value.",
+ "1 Gbps.",
+ "2 Gbps.",
+ "5 Gbps.",
+ "10 Gbps."
+ ],
+ "type": "string"
+ },
+ "cidr": {
+ "description": "CIDR range of the network.",
+ "type": "string"
+ },
+ "id": {
+ "description": "A transient unique identifier to identify a volume within an ProvisioningConfig request.",
+ "type": "string"
+ },
+ "location": {
+ "description": "Location where to deploy the network.",
+ "type": "string"
+ },
+ "serviceCidr": {
+ "description": "Service CIDR, if any.",
+ "enum": [
+ "SERVICE_CIDR_UNSPECIFIED",
+ "DISABLED",
+ "HIGH_26",
+ "HIGH_27",
+ "HIGH_28"
+ ],
+ "enumDescriptions": [
+ "Unspecified value.",
+ "Services are disabled for the given network.",
+ "Use the highest /26 block of the network to host services.",
+ "Use the highest /27 block of the network to host services.",
+ "Use the highest /28 block of the network to host services."
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "The type of this network.",
+ "enum": [
+ "TYPE_UNSPECIFIED",
+ "CLIENT",
+ "PRIVATE"
+ ],
+ "enumDescriptions": [
+ "Unspecified value.",
+ "Client network, that is a network peered to a GCP VPC.",
+ "Private network, that is a network local to the BMS POD."
+ ],
+ "type": "string"
+ },
+ "userNote": {
+ "description": "User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).",
+ "type": "string"
+ },
+ "vlanAttachments": {
+ "description": "List of VLAN attachments. As of now there are always 2 attachments, but it is going to change in the future (multi vlan).",
+ "items": {
+ "$ref": "VlanAttachment"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NfsExport": {
+ "description": "A NFS export entry.",
+ "id": "NfsExport",
+ "properties": {
+ "allowDev": {
+ "description": "Allow dev.",
+ "type": "boolean"
+ },
+ "allowSuid": {
+ "description": "Allow the setuid flag.",
+ "type": "boolean"
+ },
+ "cidr": {
+ "description": "A CIDR range.",
+ "type": "string"
+ },
+ "machineId": {
+ "description": "Either a single machine, identified by an ID, or a comma-separated list of machine IDs.",
+ "type": "string"
+ },
+ "networkId": {
+ "description": "Network to use to publish the export.",
+ "type": "string"
+ },
+ "noRootSquash": {
+ "description": "Disable root squashing.",
+ "type": "boolean"
+ },
+ "permissions": {
+ "description": "Export permissions.",
+ "enum": [
+ "PERMISSIONS_UNSPECIFIED",
+ "READ_ONLY",
+ "READ_WRITE"
+ ],
+ "enumDescriptions": [
+ "Unspecified value.",
+ "Read-only permission.",
+ "Read-write permission."
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ProvisioningConfig": {
+ "description": "An provisioning configuration.",
+ "id": "ProvisioningConfig",
+ "properties": {
+ "instances": {
+ "description": "Instances to be created.",
+ "items": {
+ "$ref": "InstanceConfig"
+ },
+ "type": "array"
+ },
+ "networks": {
+ "description": "Networks to be created.",
+ "items": {
+ "$ref": "NetworkConfig"
+ },
+ "type": "array"
+ },
+ "ticketId": {
+ "description": "A reference to track the request.",
+ "type": "string"
+ },
+ "volumes": {
+ "description": "Volumes to be created.",
+ "items": {
+ "$ref": "VolumeConfig"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ProvisioningQuota": {
+ "description": "A provisioning quota for a given project.",
+ "id": "ProvisioningQuota",
+ "properties": {
+ "instanceQuota": {
+ "$ref": "InstanceQuota",
+ "description": "Instance quota."
+ }
+ },
+ "type": "object"
+ },
+ "SubmitProvisioningConfigRequest": {
+ "description": "Request for SubmitProvisioningConfig.",
+ "id": "SubmitProvisioningConfigRequest",
+ "properties": {
+ "email": {
+ "description": "Optional. Email provided to send a confirmation with provisioning config to.",
+ "type": "string"
+ },
+ "provisioningConfig": {
+ "$ref": "ProvisioningConfig",
+ "description": "Required. The ProvisioningConfig to submit."
+ }
+ },
+ "type": "object"
+ },
+ "VlanAttachment": {
+ "description": "A GCP vlan attachment.",
+ "id": "VlanAttachment",
+ "properties": {
+ "id": {
+ "description": "Identifier of the VLAN attachment.",
+ "type": "string"
+ },
+ "pairingKey": {
+ "description": "Attachment pairing key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "VolumeConfig": {
+ "description": "Configuration parameters for a new volume.",
+ "id": "VolumeConfig",
+ "properties": {
+ "id": {
+ "description": "A transient unique identifier to identify a volume within an ProvisioningConfig request.",
+ "type": "string"
+ },
+ "location": {
+ "description": "Location where to deploy the volume.",
+ "type": "string"
+ },
+ "lunRanges": {
+ "description": "LUN ranges to be configured. Set only when protocol is PROTOCOL_FC.",
+ "items": {
+ "$ref": "LunRange"
+ },
+ "type": "array"
+ },
+ "machineIds": {
+ "description": "Machine ids connected to this volume. Set only when protocol is PROTOCOL_FC.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nfsExports": {
+ "description": "NFS exports. Set only when protocol is PROTOCOL_NFS.",
+ "items": {
+ "$ref": "NfsExport"
+ },
+ "type": "array"
+ },
+ "protocol": {
+ "description": "Volume protocol.",
+ "enum": [
+ "PROTOCOL_UNSPECIFIED",
+ "PROTOCOL_FC",
+ "PROTOCOL_NFS"
+ ],
+ "enumDescriptions": [
+ "Unspecified value.",
+ "Fibre channel.",
+ "Network file system."
+ ],
+ "type": "string"
+ },
+ "sizeGb": {
+ "description": "The requested size of this volume, in GB. This will be updated in a later iteration with a generic size field.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "snapshotsEnabled": {
+ "description": "Whether snapshots should be enabled.",
+ "type": "boolean"
+ },
+ "type": {
+ "description": "The type of this Volume.",
+ "enum": [
+ "TYPE_UNSPECIFIED",
+ "FLASH",
+ "DISK"
+ ],
+ "enumDescriptions": [
+ "The unspecified type.",
+ "This Volume is on flash.",
+ "This Volume is on disk."
+ ],
+ "type": "string"
+ },
+ "userNote": {
+ "description": "User note field, it can be used by customers to add additional information for the BMS Ops team (b/194021617).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "servicePath": "",
+ "title": "Bare Metal Solution API",
+ "version": "v1alpha1",
+ "version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/bigquerydatapolicy.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/bigquerydatapolicy.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..5014e3df86cf7b23f84f66cb69976b99454949db
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/bigquerydatapolicy.v1.json
@@ -0,0 +1,715 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/bigquery": {
+"description": "View and manage your data in Google BigQuery and see the email address for your Google Account"
+},
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://bigquerydatapolicy.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "BigQuery DataPolicy Service",
+"description": "Allows users to manage BigQuery data policies.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/bigquery/docs/column-data-masking",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "bigquerydatapolicy:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://bigquerydatapolicy.mtls.googleapis.com/",
+"name": "bigquerydatapolicy",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"dataPolicies": {
+"methods": {
+"create": {
+"description": "Creates a new data policy under a project with the given `dataPolicyId` (used as the display name), policy tag, and data policy type.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies",
+"httpMethod": "POST",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource name of the project that the data policy will belong to. The format is `projects/{project_number}/locations/{location_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/dataPolicies",
+"request": {
+"$ref": "DataPolicy"
+},
+"response": {
+"$ref": "DataPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the data policy specified by its resource name.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies/{dataPoliciesId}",
+"httpMethod": "DELETE",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Optional. If true, the data policy will be deleted even when it is referenced by one or more table columns.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. Resource name of the data policy to delete. Format is `projects/{project_number}/locations/{location_id}/dataPolicies/{data_policy_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the data policy specified by its resource name.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies/{dataPoliciesId}",
+"httpMethod": "GET",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the requested data policy. Format is `projects/{project_number}/locations/{location_id}/dataPolicies/{data_policy_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "DataPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the IAM policy for the specified data policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies/{dataPoliciesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List all of the data policies in the specified parent project.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies",
+"httpMethod": "GET",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filters the data policies by policy tags that they are associated with. Currently filter only supports \"policy_tag\" based filtering and OR based predicates. Sample filter can be \"policy_tag: projects/1/locations/us/taxonomies/2/policyTags/3\". You may also use wildcard such as \"policy_tag: projects/1/locations/us/taxonomies/2*\". Please note that OR predicates cannot be used with wildcard filters.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of data policies to return. Must be a value between 1 and 1000. If not set, defaults to 50.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `nextPageToken` value returned from a previous list request, if any. If not set, defaults to an empty string.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource name of the project for which to list data policies. Format is `projects/{project_number}/locations/{location_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/dataPolicies",
+"response": {
+"$ref": "ListDataPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the metadata for an existing data policy. The target data policy can be specified by the resource name.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies/{dataPoliciesId}",
+"httpMethod": "PATCH",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the data policy is not found, a new data policy will be created. In this situation, update_mask is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. Resource name of this data policy, in the format of `projects/{project_number}/locations/{location_id}/dataPolicies/{data_policy_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataPolicies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask If not set, defaults to all of the fields that are allowed to update. Updates to the `name` and `dataPolicyId` fields are not allowed.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "DataPolicy"
+},
+"response": {
+"$ref": "DataPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"rename": {
+"description": "Renames the id (display name) of the specified data policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies/{dataPoliciesId}:rename",
+"httpMethod": "POST",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.rename",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the data policy to rename. The format is `projects/{project_number}/locations/{location_id}/dataPolicies/{data_policy_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:rename",
+"request": {
+"$ref": "RenameDataPolicyRequest"
+},
+"response": {
+"$ref": "DataPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the IAM policy for the specified data policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies/{dataPoliciesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns the caller's permission on the specified data policy resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataPolicies/{dataPoliciesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "bigquerydatapolicy.projects.locations.dataPolicies.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/dataPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/bigquery",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20240806",
+"rootUrl": "https://bigquerydatapolicy.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DataMaskingPolicy": {
+"description": "The data masking policy that is used to specify data masking rule.",
+"id": "DataMaskingPolicy",
+"properties": {
+"predefinedExpression": {
+"description": "A predefined masking expression.",
+"enum": [
+"PREDEFINED_EXPRESSION_UNSPECIFIED",
+"SHA256",
+"ALWAYS_NULL",
+"DEFAULT_MASKING_VALUE",
+"LAST_FOUR_CHARACTERS",
+"FIRST_FOUR_CHARACTERS",
+"EMAIL_MASK",
+"DATE_YEAR_MASK"
+],
+"enumDescriptions": [
+"Default, unspecified predefined expression. No masking will take place since no expression is specified.",
+"Masking expression to replace data with SHA-256 hash.",
+"Masking expression to replace data with NULLs.",
+"Masking expression to replace data with their default masking values. The default masking values for each type listed as below: * STRING: \"\" * BYTES: b'' * INTEGER: 0 * FLOAT: 0.0 * NUMERIC: 0 * BOOLEAN: FALSE * TIMESTAMP: 1970-01-01 00:00:00 UTC * DATE: 1970-01-01 * TIME: 00:00:00 * DATETIME: 1970-01-01T00:00:00 * GEOGRAPHY: POINT(0 0) * BIGNUMERIC: 0 * ARRAY: [] * STRUCT: NOT_APPLICABLE * JSON: NULL",
+"Masking expression shows the last four characters of text. The masking behavior is as follows: * If text length > 4 characters: Replace text with XXXXX, append last four characters of original text. * If text length <= 4 characters: Apply SHA-256 hash.",
+"Masking expression shows the first four characters of text. The masking behavior is as follows: * If text length > 4 characters: Replace text with XXXXX, prepend first four characters of original text. * If text length <= 4 characters: Apply SHA-256 hash.",
+"Masking expression for email addresses. The masking behavior is as follows: * Syntax-valid email address: Replace username with XXXXX. For example, cloudysanfrancisco@gmail.com becomes XXXXX@gmail.com. * Syntax-invalid email address: Apply SHA-256 hash. For more information, see Email mask.",
+"Masking expression to only show the *year* of `Date`, `DateTime` and `TimeStamp`. For example, with the year 2076: * DATE : 2076-01-01 * DATETIME : 2076-01-01T00:00:00 * TIMESTAMP : 2076-01-01 00:00:00 UTC Truncation occurs according to the UTC time zone. To change this, adjust the default time zone using the `time_zone` system variable. For more information, see the System variables reference."
+],
+"type": "string"
+},
+"routine": {
+"description": "The name of the BigQuery routine that contains the custom masking routine, in the format of `projects/{project_number}/datasets/{dataset_id}/routines/{routine_id}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DataPolicy": {
+"description": "Represents the label-policy binding.",
+"id": "DataPolicy",
+"properties": {
+"dataMaskingPolicy": {
+"$ref": "DataMaskingPolicy",
+"description": "The data masking policy that specifies the data masking rule to use."
+},
+"dataPolicyId": {
+"description": "User-assigned (human readable) ID of the data policy that needs to be unique within a project. Used as {data_policy_id} in part of the resource name.",
+"type": "string"
+},
+"dataPolicyType": {
+"description": "Type of data policy.",
+"enum": [
+"DATA_POLICY_TYPE_UNSPECIFIED",
+"COLUMN_LEVEL_SECURITY_POLICY",
+"DATA_MASKING_POLICY"
+],
+"enumDescriptions": [
+"Default value for the data policy type. This should not be used.",
+"Used to create a data policy for column-level security, without data masking.",
+"Used to create a data policy for data masking."
+],
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of this data policy, in the format of `projects/{project_number}/locations/{location_id}/dataPolicies/{data_policy_id}`.",
+"readOnly": true,
+"type": "string"
+},
+"policyTag": {
+"description": "Policy tag resource name, in the format of `projects/{project_number}/locations/{location_id}/taxonomies/{taxonomy_id}/policyTags/{policyTag_id}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetIamPolicyRequest": {
+"description": "Request message for `GetIamPolicy` method.",
+"id": "GetIamPolicyRequest",
+"properties": {
+"options": {
+"$ref": "GetPolicyOptions",
+"description": "OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`."
+}
+},
+"type": "object"
+},
+"GetPolicyOptions": {
+"description": "Encapsulates settings provided to GetIamPolicy.",
+"id": "GetPolicyOptions",
+"properties": {
+"requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ListDataPoliciesResponse": {
+"description": "Response message for the ListDataPolicies method.",
+"id": "ListDataPoliciesResponse",
+"properties": {
+"dataPolicies": {
+"description": "Data policies that belong to the requested project.",
+"items": {
+"$ref": "DataPolicy"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token used to retrieve the next page of results, or empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"RenameDataPolicyRequest": {
+"description": "Request message for the RenameDataPolicy method.",
+"id": "RenameDataPolicyRequest",
+"properties": {
+"newDataPolicyId": {
+"description": "Required. The new data policy id.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "BigQuery Data Policy API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/bigqueryreservation.v1alpha2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/bigqueryreservation.v1alpha2.json
new file mode 100644
index 0000000000000000000000000000000000000000..70c662846b24256695a231aa7c3a176ae82d64b1
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/bigqueryreservation.v1alpha2.json
@@ -0,0 +1,904 @@
+{
+ "description": "A service to modify your BigQuery flat-rate reservations.",
+ "documentationLink": "https://cloud.google.com/bigquery/",
+ "parameters": {
+ "$.xgafv": {
+ "enum": [
+ "1",
+ "2"
+ ],
+ "location": "query",
+ "enumDescriptions": [
+ "v1 error format",
+ "v2 error format"
+ ],
+ "description": "V1 error format.",
+ "type": "string"
+ },
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "type": "string",
+ "location": "query"
+ },
+ "callback": {
+ "location": "query",
+ "type": "string",
+ "description": "JSONP"
+ },
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+ "type": "string",
+ "location": "query"
+ },
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
+ "type": "string"
+ },
+ "uploadType": {
+ "location": "query",
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+ "type": "string"
+ },
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "type": "string",
+ "location": "query"
+ },
+ "alt": {
+ "location": "query",
+ "description": "Data format for response.",
+ "enum": [
+ "json",
+ "media",
+ "proto"
+ ],
+ "default": "json",
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json",
+ "Media download with context-dependent Content-Type",
+ "Responses with Content-Type of application/x-protobuf"
+ ],
+ "type": "string"
+ },
+ "upload_protocol": {
+ "location": "query",
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+ "type": "string"
+ },
+ "access_token": {
+ "description": "OAuth access token.",
+ "type": "string",
+ "location": "query"
+ },
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "type": "boolean",
+ "location": "query"
+ }
+ },
+ "ownerName": "Google",
+ "batchPath": "batch",
+ "revision": "20200801",
+ "title": "BigQuery Reservation API",
+ "schemas": {
+ "ListSlotPoolsResponse": {
+ "description": "The response for ReservationService.ListSlotPools.",
+ "type": "object",
+ "id": "ListSlotPoolsResponse",
+ "properties": {
+ "nextPageToken": {
+ "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+ "type": "string"
+ },
+ "slotPools": {
+ "items": {
+ "$ref": "SlotPool"
+ },
+ "type": "array",
+ "description": "List of slot pools visible to the user."
+ }
+ }
+ },
+ "ReservationGrant": {
+ "id": "ReservationGrant",
+ "type": "object",
+ "description": "A ReservationGrant allows a project to submit jobs of a certain type using slots from the specified reservation.",
+ "properties": {
+ "grantee": {
+ "description": "The resource which will use the reservation. E.g. projects/myproject, folders/123, organizations/456.",
+ "type": "string"
+ },
+ "name": {
+ "type": "string",
+ "description": "Output only. Name of the resource. E.g.: projects/myproject/locations/eu/reservationGrants/123."
+ },
+ "state": {
+ "enum": [
+ "STATE_UNSPECIFIED",
+ "PENDING",
+ "ACTIVE"
+ ],
+ "enumDescriptions": [
+ "Invalid state value.",
+ "Queries from grantee will be executed as on-demand, if related ReservationGrant is pending.",
+ "ReservationGrant is ready."
+ ],
+ "description": "Output only. State of the ReservationGrant.",
+ "type": "string",
+ "readOnly": true
+ },
+ "reservation": {
+ "description": "Resource name of the reservation. E.g., projects/myproject/locations/eu/reservations/my_reservation. This reservation must be in the same location as the grant. This reservation should belong to the same parent project.",
+ "type": "string"
+ },
+ "jobType": {
+ "type": "string",
+ "description": "Which type of jobs will use the reservation.",
+ "enum": [
+ "JOB_TYPE_UNSPECIFIED",
+ "PIPELINE",
+ "QUERY"
+ ],
+ "enumDescriptions": [
+ "Invalid type. Requests with this value will be rejected with error code `google.rpc.Code.INVALID_ARGUMENT`.",
+ "Pipeline (load/export) jobs from the project will use the reservation.",
+ "Query jobs from the project will use the reservation."
+ ]
+ }
+ }
+ },
+ "Operation": {
+ "description": "This resource represents a long-running operation that is the result of a network API call.",
+ "id": "Operation",
+ "type": "object",
+ "properties": {
+ "response": {
+ "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+ "type": "object",
+ "additionalProperties": {
+ "type": "any",
+ "description": "Properties of the object. Contains field @type with type URL."
+ }
+ },
+ "done": {
+ "type": "boolean",
+ "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available."
+ },
+ "error": {
+ "$ref": "Status",
+ "description": "The error result of the operation in case of failure or cancellation."
+ },
+ "metadata": {
+ "type": "object",
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any."
+ },
+ "name": {
+ "type": "string",
+ "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`."
+ }
+ }
+ },
+ "Status": {
+ "type": "object",
+ "properties": {
+ "message": {
+ "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+ "type": "string"
+ },
+ "code": {
+ "description": "The status code, which should be an enum value of google.rpc.Code.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "details": {
+ "type": "array",
+ "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+ "items": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "type": "object"
+ }
+ }
+ },
+ "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+ "id": "Status"
+ },
+ "ListReservationsResponse": {
+ "description": "The response for ReservationService.ListReservations.",
+ "properties": {
+ "nextPageToken": {
+ "type": "string",
+ "description": "Token to retrieve the next page of results, or empty if there are no more results in the list."
+ },
+ "reservations": {
+ "type": "array",
+ "items": {
+ "$ref": "Reservation"
+ },
+ "description": "List of reservations visible to the user."
+ }
+ },
+ "type": "object",
+ "id": "ListReservationsResponse"
+ },
+ "Reservation": {
+ "id": "Reservation",
+ "description": "A reservation is a mechanism used to guarantee slots to users.",
+ "type": "object",
+ "properties": {
+ "name": {
+ "description": "The resource name of the reservation, e.g., \"projects/*/locations/*/reservations/dev/team/product\". Reservation names (e.g., \"dev/team/product\") exceeding a depth of six will fail with `google.rpc.Code.INVALID_ARGUMENT`.",
+ "type": "string"
+ },
+ "useParentReservation": {
+ "description": "If true, any query using this reservation will also be submitted to the parent reservation. This allows the query to share the additional slot capacity of the parent with other queries in the parent reservation. If the parent also has this field set to true, then this process will continue until it encounters a reservation for which this is false. If false, a query using this reservation will execute with the maximum slot capacity as specified above. If not specified, default value is true. Ignored for top-level reservation.",
+ "type": "boolean"
+ },
+ "slotCapacity": {
+ "format": "int64",
+ "type": "string",
+ "description": "Maximum slots available to this reservation and its children. A slot is a unit of computational power in BigQuery, and serves as the unit of parallelism. In a scan of a multi-partitioned table, a single slot operates on a single partition of the table. If the new reservation's slot capacity exceed the parent's slot capacity or if total slot capacity of the new reservation and its siblings exceeds the parent's slot capacity, the request will fail with `google.rpc.Code.RESOURCE_EXHAUSTED`."
+ }
+ }
+ },
+ "SlotPool": {
+ "type": "object",
+ "id": "SlotPool",
+ "properties": {
+ "state": {
+ "type": "string",
+ "enumDescriptions": [
+ "Invalid state value.",
+ "Slot pool is pending provisioning. Pending slot pool does not contribute to the parent's slot_capacity.",
+ "Once slots are provisioned, slot pool becomes active. slot_count is added to the parent's slot_capacity.",
+ "Slot pool is failed to be activated by the backend."
+ ],
+ "description": "Output only.",
+ "enum": [
+ "STATE_UNSPECIFIED",
+ "PENDING",
+ "ACTIVE",
+ "FAILED"
+ ]
+ },
+ "plan": {
+ "description": "Slot pool commitment plan.",
+ "type": "string",
+ "enum": [
+ "COMMITMENT_PLAN_UNSPECIFIED",
+ "FLEX",
+ "TRIAL",
+ "MONTHLY",
+ "ANNUAL"
+ ],
+ "enumDescriptions": [
+ "Invalid plan value. Requests with this value will be rejected with error code `google.rpc.Code.INVALID_ARGUMENT`.",
+ "Slot pool can be removed at any point, even after becoming ACTIVE.",
+ "Trial commitments have a committed period of 182 days after becoming ACTIVE. After that, they are converted to a new commitment based on the renewal_plan. Default renewal_plan for Trial commitment is Flex so that it can be deleted right after committed period ends.",
+ "Slot pool cannot be removed for 30 days after becoming ACTIVE.",
+ "Slot pool cannot be removed for 365 days after becoming ACTIVE. Note: annual commitments are automatically downgraded to monthly after 365 days."
+ ]
+ },
+ "name": {
+ "type": "string",
+ "description": "Output only. The resource name of the slot pool, e.g., projects/myproject/locations/us-central1/reservations/myreservation/slotPools/123"
+ },
+ "slotCount": {
+ "format": "int64",
+ "description": "Number of slots in this pool.",
+ "type": "string"
+ },
+ "failureStatus": {
+ "description": "Output only. For FAILED slot pool, provides the reason of failure.",
+ "readOnly": true,
+ "$ref": "Status"
+ },
+ "commitmentEndTime": {
+ "description": "Output only. The end of the commitment period. Slot pool cannot be removed before commitment_end_time. It is applicable only for ACTIVE slot pools and is computed as a combination of the plan and the time when the slot pool became ACTIVE.",
+ "type": "string",
+ "format": "google-datetime"
+ }
+ },
+ "description": "Slot pool is a way to purchase slots with some minimum committed period of usage. Slot pool is immutable and cannot be deleted until the end of the commitment period. After the end of the commitment period, slots are still available but can be freely removed any time. Annual commitments will automatically be downgraded to monthly after the commitment ends. A slot pool resource exists as a child resource of a top-level reservation. Sum of all the ACTIVE pools slot_count is always equal to the reservation slot_capacity."
+ },
+ "CreateSlotPoolMetadata": {
+ "id": "CreateSlotPoolMetadata",
+ "properties": {
+ "slotPool": {
+ "description": "Resource name of the slot pool that is being created. E.g., projects/myproject/locations/us-central1/reservations/foo/slotPools/123",
+ "type": "string"
+ }
+ },
+ "type": "object",
+ "description": "The metadata for operation returned from ReservationService.CreateSlotPool."
+ },
+ "SearchReservationGrantsResponse": {
+ "type": "object",
+ "id": "SearchReservationGrantsResponse",
+ "properties": {
+ "nextPageToken": {
+ "type": "string",
+ "description": "Token to retrieve the next page of results, or empty if there are no more results in the list."
+ },
+ "reservationGrants": {
+ "description": "List of reservation grants visible to the user.",
+ "items": {
+ "$ref": "ReservationGrant"
+ },
+ "type": "array"
+ }
+ },
+ "description": "The response for ReservationService.SearchReservationGrants."
+ },
+ "Empty": {
+ "properties": {},
+ "type": "object",
+ "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.",
+ "id": "Empty"
+ },
+ "ListReservationGrantsResponse": {
+ "type": "object",
+ "properties": {
+ "nextPageToken": {
+ "description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+ "type": "string"
+ },
+ "reservationGrants": {
+ "type": "array",
+ "description": "List of reservation grants visible to the user.",
+ "items": {
+ "$ref": "ReservationGrant"
+ }
+ }
+ },
+ "id": "ListReservationGrantsResponse",
+ "description": "The response for ReservationService.ListReservationGrants."
+ }
+ },
+ "kind": "discovery#restDescription",
+ "canonicalName": "BigQuery Reservation",
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/bigquery": {
+ "description": "View and manage your data in Google BigQuery"
+ },
+ "https://www.googleapis.com/auth/cloud-platform": {
+ "description": "View and manage your data across Google Cloud Platform services"
+ }
+ }
+ }
+ },
+ "protocol": "rest",
+ "version_module": true,
+ "version": "v1alpha2",
+ "resources": {
+ "projects": {
+ "resources": {
+ "locations": {
+ "methods": {
+ "searchReservationGrants": {
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}:SearchReservationGrants",
+ "parameters": {
+ "pageSize": {
+ "description": "The maximum number of items to return.",
+ "type": "integer",
+ "location": "query",
+ "format": "int32"
+ },
+ "parent": {
+ "location": "path",
+ "pattern": "^projects/[^/]+/locations/[^/]+$",
+ "description": "The parent resource name (containing project and location), which owns the grants. e.g.: \"projects/myproject/locations/us-central1\".",
+ "required": true,
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "description": "The next_page_token value returned from a previous List request, if any.",
+ "type": "string"
+ },
+ "query": {
+ "location": "query",
+ "description": "Please specify resource name as grantee in the query. e.g., \"grantee=projects/myproject\" \"grantee=folders/123\" \"grantee=organizations/456\"",
+ "type": "string"
+ }
+ },
+ "id": "bigqueryreservation.projects.locations.searchReservationGrants",
+ "path": "v1alpha2/{+parent}:SearchReservationGrants",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "description": "Look up grants for a specified resource for a particular region. If the request is about a project: 1) Grants created on the project will be returned if they exist. 2) Otherwise grants created on the closest ancestor will be returned. 3) Grants for different JobTypes will all be returned. Same logic applies if the request is about a folder. If the request is about an organization, then grants created on the organization will be returned (organization doesn't have ancestors). Comparing to ListReservationGrants, there are two behavior differences: 1) permission on the grantee will be verified in this API. 2) Hierarchy lookup (project-\u003efolder-\u003eorganization) happens in this API.",
+ "parameterOrder": [
+ "parent"
+ ],
+ "response": {
+ "$ref": "SearchReservationGrantsResponse"
+ },
+ "httpMethod": "GET"
+ }
+ },
+ "resources": {
+ "reservations": {
+ "methods": {
+ "createReservation": {
+ "parameterOrder": [
+ "parent"
+ ],
+ "id": "bigqueryreservation.projects.locations.reservations.createReservation",
+ "httpMethod": "POST",
+ "description": "Creates a new reservation resource. Multiple reservations are created if the ancestor reservations do not exist.",
+ "request": {
+ "$ref": "Reservation"
+ },
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}",
+ "path": "v1alpha2/{+parent}",
+ "response": {
+ "$ref": "Reservation"
+ },
+ "parameters": {
+ "parent": {
+ "pattern": "^projects/[^/]+/locations/[^/]+/reservations/.*$",
+ "type": "string",
+ "description": "Project, location, and (optionally) reservation name. E.g., projects/myproject/locations/us-central1/reservations/parent",
+ "required": true,
+ "location": "path"
+ },
+ "reservationId": {
+ "type": "string",
+ "location": "query",
+ "description": "The reservation ID relative to the parent, e.g., \"dev\". This field must only contain alphanumeric characters."
+ }
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ },
+ "create": {
+ "httpMethod": "POST",
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "response": {
+ "$ref": "Reservation"
+ },
+ "request": {
+ "$ref": "Reservation"
+ },
+ "parameterOrder": [
+ "parent"
+ ],
+ "path": "v1alpha2/{+parent}/reservations",
+ "id": "bigqueryreservation.projects.locations.reservations.create",
+ "description": "Creates a new reservation resource. Multiple reservations are created if the ancestor reservations do not exist.",
+ "parameters": {
+ "reservationId": {
+ "description": "The reservation ID relative to the parent, e.g., \"dev\". This field must only contain alphanumeric characters.",
+ "location": "query",
+ "type": "string"
+ },
+ "parent": {
+ "type": "string",
+ "pattern": "^projects/[^/]+/locations/[^/]+$",
+ "description": "Project, location, and (optionally) reservation name. E.g., projects/myproject/locations/us-central1/reservations/parent",
+ "required": true,
+ "location": "path"
+ }
+ }
+ },
+ "delete": {
+ "response": {
+ "$ref": "Empty"
+ },
+ "parameterOrder": [
+ "name"
+ ],
+ "path": "v1alpha2/{+name}",
+ "parameters": {
+ "name": {
+ "location": "path",
+ "pattern": "^projects/[^/]+/locations/[^/]+/reservations/.*$",
+ "type": "string",
+ "required": true,
+ "description": "Resource name of the reservation to retrieve. E.g., projects/myproject/locations/us-central1/reservations/my_reservation"
+ },
+ "force": {
+ "type": "boolean",
+ "location": "query",
+ "description": "If true, deletes all the child reservations of the given reservation. Otherwise, attempting to delete a reservation that has child reservations will fail with error code `google.rpc.Code.FAILED_PRECONDITION`."
+ }
+ },
+ "httpMethod": "DELETE",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "id": "bigqueryreservation.projects.locations.reservations.delete",
+ "description": "Deletes a reservation. Returns `google.rpc.Code.FAILED_PRECONDITION` in the following cases: 1. When reservation has child reservations. This check can be bypassed by setting DeleteReservationRequest.force flag to true. 2. When top-level reservation with slot pools is being deleted.",
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}"
+ },
+ "patch": {
+ "request": {
+ "$ref": "Reservation"
+ },
+ "parameterOrder": [
+ "name"
+ ],
+ "id": "bigqueryreservation.projects.locations.reservations.patch",
+ "path": "v1alpha2/{+name}",
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}/{reservationsId1}",
+ "httpMethod": "PATCH",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "parameters": {
+ "updateMask": {
+ "location": "query",
+ "format": "google-fieldmask",
+ "description": "Standard field mask for the set of fields to be updated.",
+ "type": "string"
+ },
+ "name": {
+ "pattern": "^projects/[^/]+/locations/[^/]+/reservations/[^/]+/.*$",
+ "type": "string",
+ "location": "path",
+ "description": "The resource name of the reservation, e.g., \"projects/*/locations/*/reservations/dev/team/product\". Reservation names (e.g., \"dev/team/product\") exceeding a depth of six will fail with `google.rpc.Code.INVALID_ARGUMENT`.",
+ "required": true
+ }
+ },
+ "response": {
+ "$ref": "Reservation"
+ },
+ "description": "Updates an existing reservation resource. Applicable only for child reservations."
+ },
+ "list": {
+ "path": "v1alpha2/{+parent}/reservations",
+ "response": {
+ "$ref": "ListReservationsResponse"
+ },
+ "parameters": {
+ "parent": {
+ "description": "The parent resource name containing project and location, e.g.: \"projects/myproject/locations/us-central1\"",
+ "pattern": "^projects/[^/]+/locations/[^/]+$",
+ "required": true,
+ "location": "path",
+ "type": "string"
+ },
+ "filter": {
+ "type": "string",
+ "description": "Can be used to filter out reservations based on names, capacity, etc, e.g.: filter=\"reservation.slot_capacity \u003e 200\" filter=\"reservation.name = \\\"*dev/*\\\"\" Advanced filtering syntax can be [here](https://cloud.google.com/logging/docs/view/advanced-filters).",
+ "location": "query"
+ },
+ "pageToken": {
+ "type": "string",
+ "location": "query",
+ "description": "The next_page_token value returned from a previous List request, if any."
+ },
+ "pageSize": {
+ "location": "query",
+ "type": "integer",
+ "format": "int32",
+ "description": "The maximum number of items to return."
+ }
+ },
+ "parameterOrder": [
+ "parent"
+ ],
+ "description": "Lists all the reservations for the project in the specified location.",
+ "id": "bigqueryreservation.projects.locations.reservations.list",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "httpMethod": "GET",
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations"
+ },
+ "get": {
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "id": "bigqueryreservation.projects.locations.reservations.get",
+ "path": "v1alpha2/{+name}",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "name": {
+ "type": "string",
+ "pattern": "^projects/[^/]+/locations/[^/]+/reservations/.*$",
+ "description": "Resource name of the reservation to retrieve. E.g., projects/myproject/locations/us-central1/reservations/path/to/reserv",
+ "required": true,
+ "location": "path"
+ }
+ },
+ "description": "Returns information about the reservation.",
+ "httpMethod": "GET",
+ "response": {
+ "$ref": "Reservation"
+ },
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}"
+ }
+ },
+ "resources": {
+ "slotPools": {
+ "methods": {
+ "get": {
+ "path": "v1alpha2/{+name}",
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}/slotPools/{slotPoolsId}",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "response": {
+ "$ref": "SlotPool"
+ },
+ "parameters": {
+ "name": {
+ "location": "path",
+ "required": true,
+ "type": "string",
+ "pattern": "^projects/[^/]+/locations/[^/]+/reservations/[^/]+/slotPools/[^/]+$",
+ "description": "Resource name of the slot pool to retrieve. E.g., projects/myproject/locations/us-central1/reservations/my_reservation/slotPools/123"
+ }
+ },
+ "id": "bigqueryreservation.projects.locations.reservations.slotPools.get",
+ "httpMethod": "GET",
+ "description": "Returns information about the slot pool.",
+ "parameterOrder": [
+ "name"
+ ]
+ },
+ "list": {
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}/slotPools",
+ "parameters": {
+ "pageToken": {
+ "location": "query",
+ "type": "string",
+ "description": "The next_page_token value returned from a previous List request, if any."
+ },
+ "parent": {
+ "required": true,
+ "location": "path",
+ "pattern": "^projects/[^/]+/locations/[^/]+/reservations/[^/]+$",
+ "description": "Resource name of the parent reservation. Only top-level reservations can have slot pools. E.g., projects/myproject/locations/us-central1/reservations/my_reservation",
+ "type": "string"
+ },
+ "pageSize": {
+ "type": "integer",
+ "format": "int32",
+ "description": "The maximum number of items to return.",
+ "location": "query"
+ }
+ },
+ "description": "Lists all the slot pools for the reservation.",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "path": "v1alpha2/{+parent}/slotPools",
+ "id": "bigqueryreservation.projects.locations.reservations.slotPools.list",
+ "parameterOrder": [
+ "parent"
+ ],
+ "httpMethod": "GET",
+ "response": {
+ "$ref": "ListSlotPoolsResponse"
+ }
+ },
+ "delete": {
+ "httpMethod": "DELETE",
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}/slotPools/{slotPoolsId}",
+ "path": "v1alpha2/{+name}",
+ "description": "Deletes a slot pool. Attempting to delete slot pool before its commitment_end_time will fail with the error code `google.rpc.Code.FAILED_PRECONDITION`.",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "id": "bigqueryreservation.projects.locations.reservations.slotPools.delete",
+ "response": {
+ "$ref": "Empty"
+ },
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "name": {
+ "required": true,
+ "description": "Resource name of the slot pool to delete. E.g., projects/myproject/locations/us-central1/reservations/my_reservation/slotPools/123",
+ "type": "string",
+ "location": "path",
+ "pattern": "^projects/[^/]+/locations/[^/]+/reservations/[^/]+/slotPools/[^/]+$"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "operations": {
+ "methods": {
+ "cancel": {
+ "parameters": {
+ "name": {
+ "type": "string",
+ "required": true,
+ "location": "path",
+ "description": "The name of the operation resource to be cancelled.",
+ "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$"
+ }
+ },
+ "id": "bigqueryreservation.projects.locations.operations.cancel",
+ "response": {
+ "$ref": "Empty"
+ },
+ "httpMethod": "POST",
+ "parameterOrder": [
+ "name"
+ ],
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+ "path": "v1alpha2/{+name}:cancel",
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel"
+ },
+ "get": {
+ "id": "bigqueryreservation.projects.locations.operations.get",
+ "response": {
+ "$ref": "Operation"
+ },
+ "path": "v1alpha2/{+name}",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "parameters": {
+ "name": {
+ "description": "The name of the operation resource.",
+ "location": "path",
+ "required": true,
+ "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+ "type": "string"
+ }
+ },
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+ "httpMethod": "GET",
+ "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+ "parameterOrder": [
+ "name"
+ ]
+ }
+ }
+ },
+ "reservationGrants": {
+ "methods": {
+ "list": {
+ "response": {
+ "$ref": "ListReservationGrantsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "parameters": {
+ "pageToken": {
+ "type": "string",
+ "location": "query",
+ "description": "The next_page_token value returned from a previous List request, if any."
+ },
+ "parent": {
+ "pattern": "^projects/[^/]+/locations/[^/]+$",
+ "required": true,
+ "location": "path",
+ "type": "string",
+ "description": "The parent resource name e.g.: projects/myproject/location/eu."
+ },
+ "pageSize": {
+ "type": "integer",
+ "format": "int32",
+ "location": "query",
+ "description": "The maximum number of items to return."
+ }
+ },
+ "parameterOrder": [
+ "parent"
+ ],
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservationGrants",
+ "httpMethod": "GET",
+ "path": "v1alpha2/{+parent}/reservationGrants",
+ "description": "Lists reservation grants. Only explicitly created grants will be returned. E.g: organizationA contains project1 and project2. Reservation res1 exists. CreateReservationGrant was invoked previously and following grants were created explicitly: Then this API will just return the above two grants for reservation res1, and no expansion/merge will happen.",
+ "id": "bigqueryreservation.projects.locations.reservationGrants.list"
+ },
+ "create": {
+ "httpMethod": "POST",
+ "path": "v1alpha2/{+parent}/reservationGrants",
+ "id": "bigqueryreservation.projects.locations.reservationGrants.create",
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservationGrants",
+ "description": "Returns `google.rpc.Code.PERMISSION_DENIED` if user does not have 'bigquery.admin' permissions on the project using the reservation and the project that owns this reservation. Returns `google.rpc.Code.INVALID_ARGUMENT` when location of the grant does not match location of the reservation.",
+ "request": {
+ "$ref": "ReservationGrant"
+ },
+ "parameters": {
+ "parent": {
+ "description": "The parent resource name of the reservation grant E.g.: projects/myproject/location/eu.",
+ "required": true,
+ "location": "path",
+ "type": "string",
+ "pattern": "^projects/[^/]+/locations/[^/]+$"
+ }
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "parameterOrder": [
+ "parent"
+ ],
+ "response": {
+ "$ref": "ReservationGrant"
+ }
+ },
+ "delete": {
+ "response": {
+ "$ref": "Empty"
+ },
+ "description": "Deletes a reservation grant. No expansion will happen. E.g: organizationA contains project1 and project2. Reservation res1 exists. CreateReservationGrant was invoked previously and following grants were created explicitly: Then deletion of won't affect . After deletion of , queries from project1 will still use res1, while queries from project2 will use on-demand mode.",
+ "path": "v1alpha2/{+name}",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "name": {
+ "type": "string",
+ "description": "Name of the resource, e.g.: projects/myproject/locations/eu/reservationGrants/123",
+ "location": "path",
+ "required": true,
+ "pattern": "^projects/[^/]+/locations/[^/]+/reservationGrants/[^/]+$"
+ }
+ },
+ "httpMethod": "DELETE",
+ "scopes": [
+ "https://www.googleapis.com/auth/bigquery",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ],
+ "flatPath": "v1alpha2/projects/{projectsId}/locations/{locationsId}/reservationGrants/{reservationGrantsId}",
+ "id": "bigqueryreservation.projects.locations.reservationGrants.delete"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "name": "bigqueryreservation",
+ "servicePath": "",
+ "fullyEncodeReservedExpansion": true,
+ "baseUrl": "https://bigqueryreservation.googleapis.com/",
+ "basePath": "",
+ "id": "bigqueryreservation:v1alpha2",
+ "icons": {
+ "x16": "http://www.google.com/images/icons/product/search-16.gif",
+ "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "rootUrl": "https://bigqueryreservation.googleapis.com/",
+ "mtlsRootUrl": "https://bigqueryreservation.mtls.googleapis.com/",
+ "ownerDomain": "google.com",
+ "discoveryVersion": "v1"
+}
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/billingbudgets.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/billingbudgets.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..13cf687df903ad2a553319b7b09d112ef7a155ca
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/billingbudgets.v1.json
@@ -0,0 +1,585 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-billing": {
+"description": "View and manage your Google Cloud Platform billing accounts"
+},
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://billingbudgets.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "CloudBillingBudget",
+"description": "The Cloud Billing Budget API stores Cloud Billing budgets, which define a budget plan and the rules to execute as spend is tracked against that plan.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/billing/docs/how-to/budget-api-overview",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "billingbudgets:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://billingbudgets.mtls.googleapis.com/",
+"name": "billingbudgets",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"billingAccounts": {
+"resources": {
+"budgets": {
+"methods": {
+"create": {
+"description": "Creates a new budget. See [Quotas and limits](https://cloud.google.com/billing/quotas) for more information on the limits of the number of budgets you can create.",
+"flatPath": "v1/billingAccounts/{billingAccountsId}/budgets",
+"httpMethod": "POST",
+"id": "billingbudgets.billingAccounts.budgets.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the billing account to create the budget in. Values are of the form `billingAccounts/{billingAccountId}`.",
+"location": "path",
+"pattern": "^billingAccounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/budgets",
+"request": {
+"$ref": "GoogleCloudBillingBudgetsV1Budget"
+},
+"response": {
+"$ref": "GoogleCloudBillingBudgetsV1Budget"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-billing",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a budget. Returns successfully if already deleted.",
+"flatPath": "v1/billingAccounts/{billingAccountsId}/budgets/{budgetsId}",
+"httpMethod": "DELETE",
+"id": "billingbudgets.billingAccounts.budgets.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the budget to delete. Values are of the form `billingAccounts/{billingAccountId}/budgets/{budgetId}`.",
+"location": "path",
+"pattern": "^billingAccounts/[^/]+/budgets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-billing",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns a budget. WARNING: There are some fields exposed on the Google Cloud Console that aren't available on this API. When reading from the API, you will not see these fields in the return value, though they may have been set in the Cloud Console.",
+"flatPath": "v1/billingAccounts/{billingAccountsId}/budgets/{budgetsId}",
+"httpMethod": "GET",
+"id": "billingbudgets.billingAccounts.budgets.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of budget to get. Values are of the form `billingAccounts/{billingAccountId}/budgets/{budgetId}`.",
+"location": "path",
+"pattern": "^billingAccounts/[^/]+/budgets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudBillingBudgetsV1Budget"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-billing",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns a list of budgets for a billing account. WARNING: There are some fields exposed on the Google Cloud Console that aren't available on this API. When reading from the API, you will not see these fields in the return value, though they may have been set in the Cloud Console.",
+"flatPath": "v1/billingAccounts/{billingAccountsId}/budgets",
+"httpMethod": "GET",
+"id": "billingbudgets.billingAccounts.budgets.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of budgets to return per page. The default and maximum value are 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The value returned by the last `ListBudgetsResponse` which indicates that this is a continuation of a prior `ListBudgets` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Name of billing account to list budgets under. Values are of the form `billingAccounts/{billingAccountId}`.",
+"location": "path",
+"pattern": "^billingAccounts/[^/]+$",
+"required": true,
+"type": "string"
+},
+"scope": {
+"description": "Optional. Set the scope of the budgets to be returned, in the format of the resource name. The scope of a budget is the cost that it tracks, such as costs for a single project, or the costs for all projects in a folder. Only project scope (in the format of \"projects/project-id\" or \"projects/123\") is supported in this field. When this field is set to a project's resource name, the budgets returned are tracking the costs for that project.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/budgets",
+"response": {
+"$ref": "GoogleCloudBillingBudgetsV1ListBudgetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-billing",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a budget and returns the updated budget. WARNING: There are some fields exposed on the Google Cloud Console that aren't available on this API. Budget fields that are not exposed in this API will not be changed by this method.",
+"flatPath": "v1/billingAccounts/{billingAccountsId}/budgets/{budgetsId}",
+"httpMethod": "PATCH",
+"id": "billingbudgets.billingAccounts.budgets.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Resource name of the budget. The resource name implies the scope of a budget. Values are of the form `billingAccounts/{billingAccountId}/budgets/{budgetId}`.",
+"location": "path",
+"pattern": "^billingAccounts/[^/]+/budgets/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Indicates which fields in the provided budget to update. Read-only fields (such as `name`) cannot be changed. If this is not provided, then only fields with non-default values from the request are updated. See https://developers.google.com/protocol-buffers/docs/proto3#default for more details about default values.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudBillingBudgetsV1Budget"
+},
+"response": {
+"$ref": "GoogleCloudBillingBudgetsV1Budget"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-billing",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20240707",
+"rootUrl": "https://billingbudgets.googleapis.com/",
+"schemas": {
+"GoogleCloudBillingBudgetsV1Budget": {
+"description": "A budget is a plan that describes what you expect to spend on Cloud projects, plus the rules to execute as spend is tracked against that plan, (for example, send an alert when 90% of the target spend is met). The budget time period is configurable, with options such as month (default), quarter, year, or custom time period.",
+"id": "GoogleCloudBillingBudgetsV1Budget",
+"properties": {
+"amount": {
+"$ref": "GoogleCloudBillingBudgetsV1BudgetAmount",
+"description": "Required. Budgeted amount."
+},
+"budgetFilter": {
+"$ref": "GoogleCloudBillingBudgetsV1Filter",
+"description": "Optional. Filters that define which resources are used to compute the actual spend against the budget amount, such as projects, services, and the budget's time period, as well as other filters."
+},
+"displayName": {
+"description": "User data for display name in UI. The name must be less than or equal to 60 characters.",
+"type": "string"
+},
+"etag": {
+"description": "Optional. Etag to validate that the object is unchanged for a read-modify-write operation. An empty etag causes an update to overwrite other changes.",
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of the budget. The resource name implies the scope of a budget. Values are of the form `billingAccounts/{billingAccountId}/budgets/{budgetId}`.",
+"readOnly": true,
+"type": "string"
+},
+"notificationsRule": {
+"$ref": "GoogleCloudBillingBudgetsV1NotificationsRule",
+"description": "Optional. Rules to apply to notifications sent based on budget spend and thresholds."
+},
+"ownershipScope": {
+"enum": [
+"OWNERSHIP_SCOPE_UNSPECIFIED",
+"ALL_USERS",
+"BILLING_ACCOUNT"
+],
+"enumDescriptions": [
+"Unspecified ownership scope, same as ALL_USERS.",
+"Both billing account-level users and project-level users have full access to the budget, if the users have the required IAM permissions.",
+"Only billing account-level users have full access to the budget. Project-level users have read-only access, even if they have the required IAM permissions."
+],
+"type": "string"
+},
+"thresholdRules": {
+"description": "Optional. Rules that trigger alerts (notifications of thresholds being crossed) when spend exceeds the specified percentages of the budget. Optional for `pubsubTopic` notifications. Required if using email notifications.",
+"items": {
+"$ref": "GoogleCloudBillingBudgetsV1ThresholdRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudBillingBudgetsV1BudgetAmount": {
+"description": "The budgeted amount for each usage period.",
+"id": "GoogleCloudBillingBudgetsV1BudgetAmount",
+"properties": {
+"lastPeriodAmount": {
+"$ref": "GoogleCloudBillingBudgetsV1LastPeriodAmount",
+"description": "Use the last period's actual spend as the budget for the present period. LastPeriodAmount can only be set when the budget's time period is a Filter.calendar_period. It cannot be set in combination with Filter.custom_period."
+},
+"specifiedAmount": {
+"$ref": "GoogleTypeMoney",
+"description": "A specified amount to use as the budget. `currency_code` is optional. If specified when creating a budget, it must match the currency of the billing account. If specified when updating a budget, it must match the currency_code of the existing budget. The `currency_code` is provided on output."
+}
+},
+"type": "object"
+},
+"GoogleCloudBillingBudgetsV1CustomPeriod": {
+"description": "All date times begin at 12 AM US and Canadian Pacific Time (UTC-8).",
+"id": "GoogleCloudBillingBudgetsV1CustomPeriod",
+"properties": {
+"endDate": {
+"$ref": "GoogleTypeDate",
+"description": "Optional. The end date of the time period. Budgets with elapsed end date won't be processed. If unset, specifies to track all usage incurred since the start_date."
+},
+"startDate": {
+"$ref": "GoogleTypeDate",
+"description": "Required. The start date must be after January 1, 2017."
+}
+},
+"type": "object"
+},
+"GoogleCloudBillingBudgetsV1Filter": {
+"description": "A filter for a budget, limiting the scope of the cost to calculate.",
+"id": "GoogleCloudBillingBudgetsV1Filter",
+"properties": {
+"calendarPeriod": {
+"description": "Optional. Specifies to track usage for recurring calendar period. For example, assume that CalendarPeriod.QUARTER is set. The budget tracks usage from April 1 to June 30, when the current calendar month is April, May, June. After that, it tracks usage from July 1 to September 30 when the current calendar month is July, August, September, so on.",
+"enum": [
+"CALENDAR_PERIOD_UNSPECIFIED",
+"MONTH",
+"QUARTER",
+"YEAR"
+],
+"enumDescriptions": [
+"Calendar period is unset. This is the default if the budget is for a custom time period (CustomPeriod).",
+"A month. Month starts on the first day of each month, such as January 1, February 1, March 1, and so on.",
+"A quarter. Quarters start on dates January 1, April 1, July 1, and October 1 of each year.",
+"A year. Year starts on January 1."
+],
+"type": "string"
+},
+"creditTypes": {
+"description": "Optional. If Filter.credit_types_treatment is INCLUDE_SPECIFIED_CREDITS, this is a list of credit types to be subtracted from gross cost to determine the spend for threshold calculations. See [a list of acceptable credit type values](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type). If Filter.credit_types_treatment is **not** INCLUDE_SPECIFIED_CREDITS, this field must be empty.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"creditTypesTreatment": {
+"description": "Optional. If not set, default behavior is `INCLUDE_ALL_CREDITS`.",
+"enum": [
+"CREDIT_TYPES_TREATMENT_UNSPECIFIED",
+"INCLUDE_ALL_CREDITS",
+"EXCLUDE_ALL_CREDITS",
+"INCLUDE_SPECIFIED_CREDITS"
+],
+"enumDescriptions": [
+"",
+"All types of credit are subtracted from the gross cost to determine the spend for threshold calculations.",
+"All types of credit are added to the net cost to determine the spend for threshold calculations.",
+"[Credit types](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables#credits-type) specified in the credit_types field are subtracted from the gross cost to determine the spend for threshold calculations."
+],
+"type": "string"
+},
+"customPeriod": {
+"$ref": "GoogleCloudBillingBudgetsV1CustomPeriod",
+"description": "Optional. Specifies to track usage from any start date (required) to any end date (optional). This time period is static, it does not recur."
+},
+"labels": {
+"additionalProperties": {
+"items": {
+"type": "any"
+},
+"type": "array"
+},
+"description": "Optional. A single label and value pair specifying that usage from only this set of labeled resources should be included in the budget. If omitted, the report includes all labeled and unlabeled usage. An object containing a single `\"key\": value` pair. Example: `{ \"name\": \"wrench\" }`. _Currently, multiple entries or multiple values per entry are not allowed._",
+"type": "object"
+},
+"projects": {
+"description": "Optional. A set of projects of the form `projects/{project}`, specifying that usage from only this set of projects should be included in the budget. If omitted, the report includes all usage for the billing account, regardless of which project the usage occurred on.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"resourceAncestors": {
+"description": "Optional. A set of folder and organization names of the form `folders/{folderId}` or `organizations/{organizationId}`, specifying that usage from only this set of folders and organizations should be included in the budget. If omitted, the budget includes all usage that the billing account pays for. If the folder or organization contains projects that are paid for by a different Cloud Billing account, the budget *doesn't* apply to those projects.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"services": {
+"description": "Optional. A set of services of the form `services/{service_id}`, specifying that usage from only this set of services should be included in the budget. If omitted, the report includes usage for all the services. The service names are available through the Catalog API: https://cloud.google.com/billing/v1/how-tos/catalog-api.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"subaccounts": {
+"description": "Optional. A set of subaccounts of the form `billingAccounts/{account_id}`, specifying that usage from only this set of subaccounts should be included in the budget. If a subaccount is set to the name of the parent account, usage from the parent account is included. If the field is omitted, the report includes usage from the parent account and all subaccounts, if they exist.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudBillingBudgetsV1LastPeriodAmount": {
+"description": "Describes a budget amount targeted to the last Filter.calendar_period spend. At this time, the amount is automatically 100% of the last calendar period's spend; that is, there are no other options yet. LastPeriodAmount cannot be set for a budget configured with a Filter.custom_period.",
+"id": "GoogleCloudBillingBudgetsV1LastPeriodAmount",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudBillingBudgetsV1ListBudgetsResponse": {
+"description": "Response for ListBudgets",
+"id": "GoogleCloudBillingBudgetsV1ListBudgetsResponse",
+"properties": {
+"budgets": {
+"description": "List of the budgets owned by the requested billing account.",
+"items": {
+"$ref": "GoogleCloudBillingBudgetsV1Budget"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If not empty, indicates that there may be more budgets that match the request; this value should be passed in a new `ListBudgetsRequest`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudBillingBudgetsV1NotificationsRule": {
+"description": "NotificationsRule defines notifications that are sent based on budget spend and thresholds.",
+"id": "GoogleCloudBillingBudgetsV1NotificationsRule",
+"properties": {
+"disableDefaultIamRecipients": {
+"description": "Optional. When set to true, disables default notifications sent when a threshold is exceeded. Default notifications are sent to those with Billing Account Administrator and Billing Account User IAM roles for the target account.",
+"type": "boolean"
+},
+"enableProjectLevelRecipients": {
+"description": "Optional. When set to true, and when the budget has a single project configured, notifications will be sent to project level recipients of that project. This field will be ignored if the budget has multiple or no project configured. Currently, project level recipients are the users with `Owner` role on a cloud project.",
+"type": "boolean"
+},
+"monitoringNotificationChannels": {
+"description": "Optional. Email targets to send notifications to when a threshold is exceeded. This is in addition to the `DefaultIamRecipients` who receive alert emails based on their billing account IAM role. The value is the full REST resource name of a Cloud Monitoring email notification channel with the form `projects/{project_id}/notificationChannels/{channel_id}`. A maximum of 5 email notifications are allowed. To customize budget alert email recipients with monitoring notification channels, you _must create the monitoring notification channels before you link them to a budget_. For guidance on setting up notification channels to use with budgets, see [Customize budget alert email recipients](https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients). For Cloud Billing budget alerts, you _must use email notification channels_. The other types of notification channels are _not_ supported, such as Slack, SMS, or PagerDuty. If you want to [send budget notifications to Slack](https://cloud.google.com/billing/docs/how-to/notify#send_notifications_to_slack), use a pubsubTopic and configure [programmatic notifications](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"pubsubTopic": {
+"description": "Optional. The name of the Pub/Sub topic where budget-related messages are published, in the form `projects/{project_id}/topics/{topic_id}`. Updates are sent to the topic at regular intervals; the timing of the updates is not dependent on the [threshold rules](#thresholdrule) you've set. Note that if you want your [Pub/Sub JSON object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format) to contain data for `alertThresholdExceeded`, you need at least one [alert threshold rule](#thresholdrule). When you set threshold rules, you must also enable at least one of the email notification options, either using the default IAM recipients or Cloud Monitoring email notification channels. To use Pub/Sub topics with budgets, you must do the following: 1. Create the Pub/Sub topic before connecting it to your budget. For guidance, see [Manage programmatic budget alert notifications](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications). 2. Grant the API caller the `pubsub.topics.setIamPolicy` permission on the Pub/Sub topic. If not set, the API call fails with PERMISSION_DENIED. For additional details on Pub/Sub roles and permissions, see [Permissions required for this task](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task).",
+"type": "string"
+},
+"schemaVersion": {
+"description": "Optional. Required when NotificationsRule.pubsub_topic is set. The schema version of the notification sent to NotificationsRule.pubsub_topic. Only \"1.0\" is accepted. It represents the JSON schema as defined in https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudBillingBudgetsV1ThresholdRule": {
+"description": "ThresholdRule contains the definition of a threshold. Threshold rules define the triggering events used to generate a budget notification email. When a threshold is crossed (spend exceeds the specified percentages of the budget), budget alert emails are sent to the email recipients you specify in the [NotificationsRule](#notificationsrule). Threshold rules also affect the fields included in the [JSON data object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format) sent to a Pub/Sub topic. Threshold rules are _required_ if using email notifications. Threshold rules are _optional_ if only setting a [`pubsubTopic` NotificationsRule](#NotificationsRule), unless you want your JSON data object to include data about the thresholds you set. For more information, see [set budget threshold rules and actions](https://cloud.google.com/billing/docs/how-to/budgets#budget-actions).",
+"id": "GoogleCloudBillingBudgetsV1ThresholdRule",
+"properties": {
+"spendBasis": {
+"description": "Optional. The type of basis used to determine if spend has passed the threshold. Behavior defaults to CURRENT_SPEND if not set.",
+"enum": [
+"BASIS_UNSPECIFIED",
+"CURRENT_SPEND",
+"FORECASTED_SPEND"
+],
+"enumDescriptions": [
+"Unspecified threshold basis.",
+"Use current spend as the basis for comparison against the threshold.",
+"Use forecasted spend for the period as the basis for comparison against the threshold. FORECASTED_SPEND can only be set when the budget's time period is a Filter.calendar_period. It cannot be set in combination with Filter.custom_period."
+],
+"type": "string"
+},
+"thresholdPercent": {
+"description": "Required. Send an alert when this threshold is exceeded. This is a 1.0-based percentage, so 0.5 = 50%. Validation: non-negative number.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"GoogleTypeDate": {
+"description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+"id": "GoogleTypeDate",
+"properties": {
+"day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"type": "integer"
+},
+"month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"type": "integer"
+},
+"year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleTypeMoney": {
+"description": "Represents an amount of money with its currency type.",
+"id": "GoogleTypeMoney",
+"properties": {
+"currencyCode": {
+"description": "The three-letter currency code defined in ISO 4217.",
+"type": "string"
+},
+"nanos": {
+"description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+"format": "int32",
+"type": "integer"
+},
+"units": {
+"description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Billing Budget API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/binaryauthorization.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/binaryauthorization.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..6e46e9022b228adacde8e7b9769b9be0e2420e0e
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/binaryauthorization.v1.json
@@ -0,0 +1,1925 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://binaryauthorization.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Binary Authorization",
+"description": "The management interface for Binary Authorization, a service that provides policy-based deployment validation and control for images deployed to Google Kubernetes Engine (GKE), Anthos Service Mesh, Anthos Clusters, and Cloud Run. ",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/binary-authorization/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "binaryauthorization:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://binaryauthorization.mtls.googleapis.com/",
+"name": "binaryauthorization",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"methods": {
+"getPolicy": {
+"description": "A policy specifies the attestors that must attest to a container image, before the project is allowed to deploy that image. There is at most one policy per project. All image admission requests are permitted if a project has no policy. Gets the policy for this project. Returns a default policy if the project does not have one.",
+"flatPath": "v1/projects/{projectsId}/policy",
+"httpMethod": "GET",
+"id": "binaryauthorization.projects.getPolicy",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the policy to retrieve, in the format `projects/*/policy`.",
+"location": "path",
+"pattern": "^projects/[^/]+/policy$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updatePolicy": {
+"description": "Creates or updates a project's policy, and returns a copy of the new policy. A policy is always updated as a whole, to avoid race conditions with concurrent policy enforcement (or management!) requests. Returns `NOT_FOUND` if the project does not exist, `INVALID_ARGUMENT` if the request is malformed.",
+"flatPath": "v1/projects/{projectsId}/policy",
+"httpMethod": "PUT",
+"id": "binaryauthorization.projects.updatePolicy",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The resource name, in the format `projects/*/policy`. There is at most one policy per project.",
+"location": "path",
+"pattern": "^projects/[^/]+/policy$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Policy"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"attestors": {
+"methods": {
+"create": {
+"description": "Creates an attestor, and returns a copy of the new attestor. Returns `NOT_FOUND` if the project does not exist, `INVALID_ARGUMENT` if the request is malformed, `ALREADY_EXISTS` if the attestor already exists.",
+"flatPath": "v1/projects/{projectsId}/attestors",
+"httpMethod": "POST",
+"id": "binaryauthorization.projects.attestors.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"attestorId": {
+"description": "Required. The attestors ID.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent of this attestor.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/attestors",
+"request": {
+"$ref": "Attestor"
+},
+"response": {
+"$ref": "Attestor"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an attestor. Returns `NOT_FOUND` if the attestor does not exist.",
+"flatPath": "v1/projects/{projectsId}/attestors/{attestorsId}",
+"httpMethod": "DELETE",
+"id": "binaryauthorization.projects.attestors.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the attestors to delete, in the format `projects/*/attestors/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/attestors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an attestor. Returns `NOT_FOUND` if the attestor does not exist.",
+"flatPath": "v1/projects/{projectsId}/attestors/{attestorsId}",
+"httpMethod": "GET",
+"id": "binaryauthorization.projects.attestors.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the attestor to retrieve, in the format `projects/*/attestors/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/attestors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Attestor"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/attestors/{attestorsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "binaryauthorization.projects.attestors.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/attestors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "IamPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists attestors. Returns `INVALID_ARGUMENT` if the project does not exist.",
+"flatPath": "v1/projects/{projectsId}/attestors",
+"httpMethod": "GET",
+"id": "binaryauthorization.projects.attestors.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. If unspecified, the server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return. Typically, this is the value of ListAttestorsResponse.next_page_token returned from the previous call to the `ListAttestors` method.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The resource name of the project associated with the attestors, in the format `projects/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/attestors",
+"response": {
+"$ref": "ListAttestorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/attestors/{attestorsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "binaryauthorization.projects.attestors.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/attestors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "IamPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/attestors/{attestorsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "binaryauthorization.projects.attestors.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/attestors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"update": {
+"description": "Updates an attestor. Returns `NOT_FOUND` if the attestor does not exist.",
+"flatPath": "v1/projects/{projectsId}/attestors/{attestorsId}",
+"httpMethod": "PUT",
+"id": "binaryauthorization.projects.attestors.update",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name, in the format: `projects/*/attestors/*`. This field may not be updated.",
+"location": "path",
+"pattern": "^projects/[^/]+/attestors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Attestor"
+},
+"response": {
+"$ref": "Attestor"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"validateAttestationOccurrence": {
+"description": "Returns whether the given `Attestation` for the given image URI was signed by the given `Attestor`",
+"flatPath": "v1/projects/{projectsId}/attestors/{attestorsId}:validateAttestationOccurrence",
+"httpMethod": "POST",
+"id": "binaryauthorization.projects.attestors.validateAttestationOccurrence",
+"parameterOrder": [
+"attestor"
+],
+"parameters": {
+"attestor": {
+"description": "Required. The resource name of the Attestor of the occurrence, in the format `projects/*/attestors/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/attestors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+attestor}:validateAttestationOccurrence",
+"request": {
+"$ref": "ValidateAttestationOccurrenceRequest"
+},
+"response": {
+"$ref": "ValidateAttestationOccurrenceResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"platforms": {
+"resources": {
+"gke": {
+"resources": {
+"policies": {
+"methods": {
+"evaluate": {
+"description": "Evaluates a Kubernetes object versus a GKE platform policy. Returns `NOT_FOUND` if the policy doesn't exist, `INVALID_ARGUMENT` if the policy or request is malformed and `PERMISSION_DENIED` if the client does not have sufficient permissions.",
+"flatPath": "v1/projects/{projectsId}/platforms/gke/policies/{policiesId}:evaluate",
+"httpMethod": "POST",
+"id": "binaryauthorization.projects.platforms.gke.policies.evaluate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the platform policy to evaluate in the format `projects/*/platforms/*/policies/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/platforms/gke/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:evaluate",
+"request": {
+"$ref": "EvaluateGkePolicyRequest"
+},
+"response": {
+"$ref": "EvaluateGkePolicyResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"policies": {
+"methods": {
+"create": {
+"description": "Creates a platform policy, and returns a copy of it. Returns `NOT_FOUND` if the project or platform doesn't exist, `INVALID_ARGUMENT` if the request is malformed, `ALREADY_EXISTS` if the policy already exists, and `INVALID_ARGUMENT` if the policy contains a platform-specific policy that does not match the platform value specified in the URL.",
+"flatPath": "v1/projects/{projectsId}/platforms/{platformsId}/policies",
+"httpMethod": "POST",
+"id": "binaryauthorization.projects.platforms.policies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent of this platform policy.",
+"location": "path",
+"pattern": "^projects/[^/]+/platforms/[^/]+$",
+"required": true,
+"type": "string"
+},
+"policyId": {
+"description": "Required. The platform policy ID.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/policies",
+"request": {
+"$ref": "PlatformPolicy"
+},
+"response": {
+"$ref": "PlatformPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a platform policy. Returns `NOT_FOUND` if the policy doesn't exist.",
+"flatPath": "v1/projects/{projectsId}/platforms/{platformsId}/policies/{policiesId}",
+"httpMethod": "DELETE",
+"id": "binaryauthorization.projects.platforms.policies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. Used to prevent deleting the policy when another request has updated it since it was retrieved.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the platform policy to delete, in the format `projects/*/platforms/*/policies/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/platforms/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a platform policy. Returns `NOT_FOUND` if the policy doesn't exist.",
+"flatPath": "v1/projects/{projectsId}/platforms/{platformsId}/policies/{policiesId}",
+"httpMethod": "GET",
+"id": "binaryauthorization.projects.platforms.policies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the platform policy to retrieve in the format `projects/*/platforms/*/policies/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/platforms/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "PlatformPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists platform policies owned by a project in the specified platform. Returns `INVALID_ARGUMENT` if the project or the platform doesn't exist.",
+"flatPath": "v1/projects/{projectsId}/platforms/{platformsId}/policies",
+"httpMethod": "GET",
+"id": "binaryauthorization.projects.platforms.policies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Requested page size. The server may return fewer results than requested. If unspecified, the server picks an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return. Typically, this is the value of ListPlatformPoliciesResponse.next_page_token returned from the previous call to the `ListPlatformPolicies` method.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The resource name of the platform associated with the platform policies using the format `projects/*/platforms/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/platforms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/policies",
+"response": {
+"$ref": "ListPlatformPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"replacePlatformPolicy": {
+"description": "Replaces a platform policy. Returns `NOT_FOUND` if the policy doesn't exist.",
+"flatPath": "v1/projects/{projectsId}/platforms/{platformsId}/policies/{policiesId}",
+"httpMethod": "PUT",
+"id": "binaryauthorization.projects.platforms.policies.replacePlatformPolicy",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The relative resource name of the Binary Authorization platform policy, in the form of `projects/*/platforms/*/policies/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/platforms/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "PlatformPolicy"
+},
+"response": {
+"$ref": "PlatformPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"policy": {
+"methods": {
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/policy:getIamPolicy",
+"httpMethod": "GET",
+"id": "binaryauthorization.projects.policy.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/policy$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "IamPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/policy:setIamPolicy",
+"httpMethod": "POST",
+"id": "binaryauthorization.projects.policy.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/policy$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "IamPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/policy:testIamPermissions",
+"httpMethod": "POST",
+"id": "binaryauthorization.projects.policy.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/policy$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"systempolicy": {
+"methods": {
+"getPolicy": {
+"description": "Gets the current system policy in the specified location.",
+"flatPath": "v1/locations/{locationsId}/policy",
+"httpMethod": "GET",
+"id": "binaryauthorization.systempolicy.getPolicy",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name, in the format `locations/*/policy`. Note that the system policy is not associated with a project.",
+"location": "path",
+"pattern": "^locations/[^/]+/policy$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+},
+"revision": "20241115",
+"rootUrl": "https://binaryauthorization.googleapis.com/",
+"schemas": {
+"AdmissionRule": {
+"description": "An admission rule specifies either that all container images used in a pod creation request must be attested to by one or more attestors, that all pod creations will be allowed, or that all pod creations will be denied. Images matching an admission allowlist pattern are exempted from admission rules and will never block a pod creation.",
+"id": "AdmissionRule",
+"properties": {
+"enforcementMode": {
+"description": "Required. The action when a pod creation is denied by the admission rule.",
+"enum": [
+"ENFORCEMENT_MODE_UNSPECIFIED",
+"ENFORCED_BLOCK_AND_AUDIT_LOG",
+"DRYRUN_AUDIT_LOG_ONLY"
+],
+"enumDescriptions": [
+"Do not use.",
+"Enforce the admission rule by blocking the pod creation.",
+"Dryrun mode: Audit logging only. This will allow the pod creation as if the admission request had specified break-glass."
+],
+"type": "string"
+},
+"evaluationMode": {
+"description": "Required. How this admission rule will be evaluated.",
+"enum": [
+"EVALUATION_MODE_UNSPECIFIED",
+"ALWAYS_ALLOW",
+"REQUIRE_ATTESTATION",
+"ALWAYS_DENY"
+],
+"enumDescriptions": [
+"Do not use.",
+"This rule allows all pod creations.",
+"This rule allows a pod creation if all the attestors listed in `require_attestations_by` have valid attestations for all of the images in the pod spec.",
+"This rule denies all pod creations."
+],
+"type": "string"
+},
+"requireAttestationsBy": {
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AdmissionWhitelistPattern": {
+"description": "An admission allowlist pattern exempts images from checks by admission rules.",
+"id": "AdmissionWhitelistPattern",
+"properties": {
+"namePattern": {
+"description": "An image name pattern to allowlist, in the form `registry/path/to/image`. This supports a trailing `*` wildcard, but this is allowed only in text after the `registry/` part. This also supports a trailing `**` wildcard which matches subdirectories of a given entry.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AllowlistResult": {
+"description": "Result of evaluating an image name allowlist.",
+"id": "AllowlistResult",
+"properties": {
+"matchedPattern": {
+"description": "The allowlist pattern that the image matched.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AttestationAuthenticator": {
+"description": "An attestation authenticator that will be used to verify attestations. Typically this is just a set of public keys. Conceptually, an authenticator can be treated as always returning either \"authenticated\" or \"not authenticated\" when presented with a signed attestation (almost always assumed to be a [DSSE](https://github.com/secure-systems-lab/dsse) attestation). The details of how an authenticator makes this decision are specific to the type of 'authenticator' that this message wraps.",
+"id": "AttestationAuthenticator",
+"properties": {
+"displayName": {
+"description": "Optional. A user-provided name for this `AttestationAuthenticator`. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results.",
+"type": "string"
+},
+"pkixPublicKeySet": {
+"$ref": "PkixPublicKeySet",
+"description": "Optional. A set of raw PKIX SubjectPublicKeyInfo format public keys. If any public key in the set validates the attestation signature, then the signature is considered authenticated (i.e. any one key is sufficient to authenticate)."
+}
+},
+"type": "object"
+},
+"AttestationOccurrence": {
+"description": "Occurrence that represents a single \"attestation\". The authenticity of an attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the authority to which this attestation is attached is primarily useful for lookup (how to find this attestation if you already know the authority and artifact to be verified) and intent (for which authority this attestation was intended to sign.",
+"id": "AttestationOccurrence",
+"properties": {
+"jwts": {
+"description": "One or more JWTs encoding a self-contained attestation. Each JWT encodes the payload that it verifies within the JWT itself. Verifier implementation SHOULD ignore the `serialized_payload` field when verifying these JWTs. If only JWTs are present on this AttestationOccurrence, then the `serialized_payload` SHOULD be left empty. Each JWT SHOULD encode a claim specific to the `resource_uri` of this Occurrence, but this is not validated by Grafeas metadata API implementations. The JWT itself is opaque to Grafeas.",
+"items": {
+"$ref": "Jwt"
+},
+"type": "array"
+},
+"serializedPayload": {
+"description": "Required. The serialized payload that is verified by one or more `signatures`.",
+"format": "byte",
+"type": "string"
+},
+"signatures": {
+"description": "One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto for more details on signature structure and verification.",
+"items": {
+"$ref": "Signature"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AttestationSource": {
+"description": "Specifies the locations for fetching the provenance attestations.",
+"id": "AttestationSource",
+"properties": {
+"containerAnalysisAttestationProjects": {
+"description": "The IDs of the Google Cloud projects that store the SLSA attestations as Container Analysis Occurrences, in the format `projects/[PROJECT_ID]`. Maximum number of `container_analysis_attestation_projects` allowed in each `AttestationSource` is 10.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Attestor": {
+"description": "An attestor that attests to container image artifacts. An existing attestor cannot be modified except where indicated.",
+"id": "Attestor",
+"properties": {
+"description": {
+"description": "Optional. A descriptive comment. This field may be updated. The field may be displayed in chooser dialogs.",
+"type": "string"
+},
+"etag": {
+"description": "Optional. A checksum, returned by the server, that can be sent on update requests to ensure the attestor has an up-to-date value before attempting to update it. See https://google.aip.dev/154.",
+"type": "string"
+},
+"name": {
+"description": "Required. The resource name, in the format: `projects/*/attestors/*`. This field may not be updated.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Time when the attestor was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"userOwnedGrafeasNote": {
+"$ref": "UserOwnedGrafeasNote",
+"description": "This specifies how an attestation will be read, and how it will be used during policy enforcement."
+}
+},
+"type": "object"
+},
+"AttestorPublicKey": {
+"description": "An attestor public key that will be used to verify attestations signed by this attestor.",
+"id": "AttestorPublicKey",
+"properties": {
+"asciiArmoredPgpPublicKey": {
+"description": "ASCII-armored representation of a PGP public key, as the entire output by the command `gpg --export --armor foo@example.com` (either LF or CRLF line endings). When using this field, `id` should be left blank. The Binary Authorization API handlers will calculate the ID and fill it in automatically. Binary Authorization computes this ID as the OpenPGP RFC4880 V4 fingerprint, represented as upper-case hex. If `id` is provided by the caller, it will be overwritten by the API-calculated ID.",
+"type": "string"
+},
+"comment": {
+"description": "Optional. A descriptive comment. This field may be updated.",
+"type": "string"
+},
+"id": {
+"description": "The ID of this public key. Signatures verified by Binary Authorization must include the ID of the public key that can be used to verify them, and that ID must match the contents of this field exactly. Additional restrictions on this field can be imposed based on which public key type is encapsulated. See the documentation on `public_key` cases below for details.",
+"type": "string"
+},
+"pkixPublicKey": {
+"$ref": "PkixPublicKey",
+"description": "A raw PKIX SubjectPublicKeyInfo format public key. NOTE: `id` may be explicitly provided by the caller when using this type of public key, but it MUST be a valid RFC3986 URI. If `id` is left blank, a default one will be computed based on the digest of the DER encoding of the public key."
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Check": {
+"description": "A single check to perform against a Pod. Checks are grouped into `CheckSet` objects, which are defined by the top-level policy.",
+"id": "Check",
+"properties": {
+"alwaysDeny": {
+"description": "Optional. A special-case check that always denies. Note that this still only applies when the scope of the `CheckSet` applies and the image isn't exempted by an image allowlist. This check is primarily useful for testing, or to set the default behavior for all unmatched scopes to \"deny\".",
+"type": "boolean"
+},
+"displayName": {
+"description": "Optional. A user-provided name for this check. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results.",
+"type": "string"
+},
+"imageAllowlist": {
+"$ref": "ImageAllowlist",
+"description": "Optional. Images exempted from this check. If any of the patterns match the image url, the check will not be evaluated."
+},
+"imageFreshnessCheck": {
+"$ref": "ImageFreshnessCheck",
+"description": "Optional. Require that an image is no older than a configured expiration time. Image age is determined by its upload time."
+},
+"sigstoreSignatureCheck": {
+"$ref": "SigstoreSignatureCheck",
+"description": "Optional. Require that an image was signed by Cosign with a trusted key. This check requires that both the image and signature are stored in Artifact Registry."
+},
+"simpleSigningAttestationCheck": {
+"$ref": "SimpleSigningAttestationCheck",
+"description": "Optional. Require a SimpleSigning-type attestation for every image in the deployment."
+},
+"slsaCheck": {
+"$ref": "SlsaCheck",
+"description": "Optional. Require that an image was built by a trusted builder (such as Google Cloud Build), meets requirements for Supply chain Levels for Software Artifacts (SLSA), and was built from a trusted source code repostitory."
+},
+"trustedDirectoryCheck": {
+"$ref": "TrustedDirectoryCheck",
+"description": "Optional. Require that an image lives in a trusted directory."
+},
+"vulnerabilityCheck": {
+"$ref": "VulnerabilityCheck",
+"description": "Optional. Require that an image does not contain vulnerabilities that violate the configured rules, such as based on severity levels."
+}
+},
+"type": "object"
+},
+"CheckResult": {
+"description": "Result of evaluating one check.",
+"id": "CheckResult",
+"properties": {
+"allowlistResult": {
+"$ref": "AllowlistResult",
+"description": "If the image was exempted by an allow_pattern in the check, contains the pattern that the image name matched."
+},
+"displayName": {
+"description": "The name of the check.",
+"type": "string"
+},
+"evaluationResult": {
+"$ref": "EvaluationResult",
+"description": "If a check was evaluated, contains the result of the check."
+},
+"explanation": {
+"description": "Explanation of this check result.",
+"type": "string"
+},
+"index": {
+"description": "The index of the check.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "The type of the check.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CheckResults": {
+"description": "Result of evaluating one or more checks.",
+"id": "CheckResults",
+"properties": {
+"results": {
+"description": "Per-check details.",
+"items": {
+"$ref": "CheckResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CheckSet": {
+"description": "A conjunction of policy checks, scoped to a particular namespace or Kubernetes service account. In order for evaluation of a `CheckSet` to return \"allowed\" for a given image in a given Pod, one of the following conditions must be satisfied: * The image is explicitly exempted by an entry in `image_allowlist`, OR * ALL of the `checks` evaluate to \"allowed\".",
+"id": "CheckSet",
+"properties": {
+"checks": {
+"description": "Optional. The checks to apply. The ultimate result of evaluating the check set will be \"allow\" if and only if every check in `checks` evaluates to \"allow\". If `checks` is empty, the default behavior is \"always allow\".",
+"items": {
+"$ref": "Check"
+},
+"type": "array"
+},
+"displayName": {
+"description": "Optional. A user-provided name for this `CheckSet`. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results.",
+"type": "string"
+},
+"imageAllowlist": {
+"$ref": "ImageAllowlist",
+"description": "Optional. Images exempted from this `CheckSet`. If any of the patterns match the image being evaluated, no checks in the `CheckSet` will be evaluated."
+},
+"scope": {
+"$ref": "Scope",
+"description": "Optional. The scope to which this `CheckSet` applies. If unset or an empty string (the default), applies to all namespaces and service accounts. See the `Scope` message documentation for details on scoping rules."
+}
+},
+"type": "object"
+},
+"CheckSetResult": {
+"description": "Result of evaluating one check set.",
+"id": "CheckSetResult",
+"properties": {
+"allowlistResult": {
+"$ref": "AllowlistResult",
+"description": "If the image was exempted by an allow_pattern in the check set, contains the pattern that the image name matched."
+},
+"checkResults": {
+"$ref": "CheckResults",
+"description": "If checks were evaluated, contains the results of evaluating each check."
+},
+"displayName": {
+"description": "The name of the check set.",
+"type": "string"
+},
+"explanation": {
+"description": "Explanation of this check set result. Only populated if no checks were evaluated.",
+"type": "string"
+},
+"index": {
+"description": "The index of the check set.",
+"format": "int64",
+"type": "string"
+},
+"scope": {
+"$ref": "Scope",
+"description": "The scope of the check set."
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"EvaluateGkePolicyRequest": {
+"description": "Request message for PlatformPolicyEvaluationService.EvaluateGkePolicy.",
+"id": "EvaluateGkePolicyRequest",
+"properties": {
+"resource": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Required. JSON or YAML blob representing a Kubernetes resource.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"EvaluateGkePolicyResponse": {
+"description": "Response message for PlatformPolicyEvaluationService.EvaluateGkePolicy.",
+"id": "EvaluateGkePolicyResponse",
+"properties": {
+"results": {
+"description": "Evaluation result for each Pod contained in the request.",
+"items": {
+"$ref": "PodResult"
+},
+"type": "array"
+},
+"verdict": {
+"description": "The result of evaluating all Pods in the request.",
+"enum": [
+"VERDICT_UNSPECIFIED",
+"CONFORMANT",
+"NON_CONFORMANT",
+"ERROR"
+],
+"enumDescriptions": [
+"Not specified. This should never be used.",
+"All Pods in the request conform to the policy.",
+"At least one Pod does not conform to the policy.",
+"Encountered at least one error evaluating a Pod and all other Pods conform to the policy. Non-conformance has precedence over errors."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"EvaluationResult": {
+"description": "Result of evaluating one check.",
+"id": "EvaluationResult",
+"properties": {
+"verdict": {
+"description": "The result of evaluating this check.",
+"enum": [
+"CHECK_VERDICT_UNSPECIFIED",
+"CONFORMANT",
+"NON_CONFORMANT",
+"ERROR"
+],
+"enumDescriptions": [
+"Not specified. This should never be used.",
+"The check was successfully evaluated and the image satisfied the check.",
+"The check was successfully evaluated and the image did not satisfy the check.",
+"The check was not successfully evaluated."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GkePolicy": {
+"description": "A Binary Authorization policy for a GKE cluster. This is one type of policy that can occur as a `PlatformPolicy`.",
+"id": "GkePolicy",
+"properties": {
+"checkSets": {
+"description": "Optional. The `CheckSet` objects to apply, scoped by namespace or namespace and service account. Exactly one `CheckSet` will be evaluated for a given Pod (unless the list is empty, in which case the behavior is \"always allow\"). If multiple `CheckSet` objects have scopes that match the namespace and service account of the Pod being evaluated, only the `CheckSet` with the MOST SPECIFIC scope will match. `CheckSet` objects must be listed in order of decreasing specificity, i.e. if a scope matches a given service account (which must include the namespace), it must come before a `CheckSet` with a scope matching just that namespace. This property is enforced by server-side validation. The purpose of this restriction is to ensure that if more than one `CheckSet` matches a given Pod, the `CheckSet` that will be evaluated will always be the first in the list to match (because if any other matches, it must be less specific). If `check_sets` is empty, the default behavior is to allow all images. If `check_sets` is non-empty, the last `check_sets` entry must always be a `CheckSet` with no scope set, i.e. a catchall to handle any situation not caught by the preceding `CheckSet` objects.",
+"items": {
+"$ref": "CheckSet"
+},
+"type": "array"
+},
+"imageAllowlist": {
+"$ref": "ImageAllowlist",
+"description": "Optional. Images exempted from this policy. If any of the patterns match the image being evaluated, the rest of the policy will not be evaluated."
+}
+},
+"type": "object"
+},
+"IamPolicy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "IamPolicy",
+"properties": {
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ImageAllowlist": {
+"description": "Images that are exempted from normal checks based on name pattern only.",
+"id": "ImageAllowlist",
+"properties": {
+"allowPattern": {
+"description": "Required. A disjunction of image patterns to allow. If any of these patterns match, then the image is considered exempted by this allowlist.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ImageFreshnessCheck": {
+"description": "An image freshness check, which rejects images that were uploaded before the set number of days ago to the supported repositories.",
+"id": "ImageFreshnessCheck",
+"properties": {
+"maxUploadAgeDays": {
+"description": "Required. The max number of days that is allowed since the image was uploaded. Must be greater than zero.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ImageResult": {
+"description": "Result of evaluating one image.",
+"id": "ImageResult",
+"properties": {
+"allowlistResult": {
+"$ref": "AllowlistResult",
+"description": "If the image was exempted by a top-level allow_pattern, contains the allowlist pattern that the image name matched."
+},
+"checkSetResult": {
+"$ref": "CheckSetResult",
+"description": "If a check set was evaluated, contains the result of the check set. Empty if there were no check sets."
+},
+"explanation": {
+"description": "Explanation of this image result. Only populated if no check sets were evaluated.",
+"type": "string"
+},
+"imageUri": {
+"description": "Image URI from the request.",
+"type": "string"
+},
+"verdict": {
+"description": "The result of evaluating this image.",
+"enum": [
+"IMAGE_VERDICT_UNSPECIFIED",
+"CONFORMANT",
+"NON_CONFORMANT",
+"ERROR"
+],
+"enumDescriptions": [
+"Not specified. This should never be used.",
+"Image conforms to the policy.",
+"Image does not conform to the policy.",
+"Error evaluating the image. Non-conformance has precedence over errors."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Jwt": {
+"id": "Jwt",
+"properties": {
+"compactJwt": {
+"description": "The compact encoding of a JWS, which is always three base64 encoded strings joined by periods. For details, see: https://tools.ietf.org/html/rfc7515.html#section-3.1",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListAttestorsResponse": {
+"description": "Response message for BinauthzManagementServiceV1.ListAttestors.",
+"id": "ListAttestorsResponse",
+"properties": {
+"attestors": {
+"description": "The list of attestors.",
+"items": {
+"$ref": "Attestor"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Pass this value in the ListAttestorsRequest.page_token field in the subsequent call to the `ListAttestors` method to retrieve the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListPlatformPoliciesResponse": {
+"description": "Response message for PlatformPolicyManagementService.ListPlatformPolicies.",
+"id": "ListPlatformPoliciesResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Pass this value in the ListPlatformPoliciesRequest.page_token field in the subsequent call to the `ListPlatformPolicies` method to retrieve the next page of results.",
+"type": "string"
+},
+"platformPolicies": {
+"description": "The list of platform policies.",
+"items": {
+"$ref": "PlatformPolicy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PkixPublicKey": {
+"description": "A public key in the PkixPublicKey [format](https://tools.ietf.org/html/rfc5280#section-4.1.2.7). Public keys of this type are typically textually encoded using the PEM format.",
+"id": "PkixPublicKey",
+"properties": {
+"keyId": {
+"description": "Optional. The ID of this public key. Signatures verified by Binary Authorization must include the ID of the public key that can be used to verify them. The ID must match exactly contents of the `key_id` field exactly. The ID may be explicitly provided by the caller, but it MUST be a valid RFC3986 URI. If `key_id` is left blank and this `PkixPublicKey` is not used in the context of a wrapper (see next paragraph), a default key ID will be computed based on the digest of the DER encoding of the public key. If this `PkixPublicKey` is used in the context of a wrapper that has its own notion of key ID (e.g. `AttestorPublicKey`), then this field can either match that value exactly, or be left blank, in which case it behaves exactly as though it is equal to that wrapper value.",
+"type": "string"
+},
+"publicKeyPem": {
+"description": "A PEM-encoded public key, as described in https://tools.ietf.org/html/rfc7468#section-13",
+"type": "string"
+},
+"signatureAlgorithm": {
+"description": "The signature algorithm used to verify a message against a signature using this key. These signature algorithm must match the structure and any object identifiers encoded in `public_key_pem` (i.e. this algorithm must match that of the public key).",
+"enum": [
+"SIGNATURE_ALGORITHM_UNSPECIFIED",
+"RSA_PSS_2048_SHA256",
+"RSA_SIGN_PSS_2048_SHA256",
+"RSA_PSS_3072_SHA256",
+"RSA_SIGN_PSS_3072_SHA256",
+"RSA_PSS_4096_SHA256",
+"RSA_SIGN_PSS_4096_SHA256",
+"RSA_PSS_4096_SHA512",
+"RSA_SIGN_PSS_4096_SHA512",
+"RSA_SIGN_PKCS1_2048_SHA256",
+"RSA_SIGN_PKCS1_3072_SHA256",
+"RSA_SIGN_PKCS1_4096_SHA256",
+"RSA_SIGN_PKCS1_4096_SHA512",
+"ECDSA_P256_SHA256",
+"EC_SIGN_P256_SHA256",
+"ECDSA_P384_SHA384",
+"EC_SIGN_P384_SHA384",
+"ECDSA_P521_SHA512",
+"EC_SIGN_P521_SHA512"
+],
+"enumDescriptions": [
+"Not specified.",
+"RSASSA-PSS 2048 bit key with a SHA256 digest.",
+"RSASSA-PSS 2048 bit key with a SHA256 digest.",
+"RSASSA-PSS 3072 bit key with a SHA256 digest.",
+"RSASSA-PSS 3072 bit key with a SHA256 digest.",
+"RSASSA-PSS 4096 bit key with a SHA256 digest.",
+"RSASSA-PSS 4096 bit key with a SHA256 digest.",
+"RSASSA-PSS 4096 bit key with a SHA512 digest.",
+"RSASSA-PSS 4096 bit key with a SHA512 digest.",
+"RSASSA-PKCS1-v1_5 with a 2048 bit key and a SHA256 digest.",
+"RSASSA-PKCS1-v1_5 with a 3072 bit key and a SHA256 digest.",
+"RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA256 digest.",
+"RSASSA-PKCS1-v1_5 with a 4096 bit key and a SHA512 digest.",
+"ECDSA on the NIST P-256 curve with a SHA256 digest.",
+"ECDSA on the NIST P-256 curve with a SHA256 digest.",
+"ECDSA on the NIST P-384 curve with a SHA384 digest.",
+"ECDSA on the NIST P-384 curve with a SHA384 digest.",
+"ECDSA on the NIST P-521 curve with a SHA512 digest.",
+"ECDSA on the NIST P-521 curve with a SHA512 digest."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"PkixPublicKeySet": {
+"description": "A bundle of PKIX public keys, used to authenticate attestation signatures. Generally, a signature is considered to be authenticated by a `PkixPublicKeySet` if any of the public keys verify it (i.e. it is an \"OR\" of the keys).",
+"id": "PkixPublicKeySet",
+"properties": {
+"pkixPublicKeys": {
+"description": "Required. `pkix_public_keys` must have at least one entry.",
+"items": {
+"$ref": "PkixPublicKey"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PlatformPolicy": {
+"description": "A Binary Authorization platform policy for deployments on various platforms.",
+"id": "PlatformPolicy",
+"properties": {
+"description": {
+"description": "Optional. A description comment about the policy.",
+"type": "string"
+},
+"etag": {
+"description": "Optional. Used to prevent updating the policy when another request has updated it since it was retrieved.",
+"type": "string"
+},
+"gkePolicy": {
+"$ref": "GkePolicy",
+"description": "Optional. GKE platform-specific policy."
+},
+"name": {
+"description": "Output only. The relative resource name of the Binary Authorization platform policy, in the form of `projects/*/platforms/*/policies/*`.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Time when the policy was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PodResult": {
+"description": "Result of evaluating the whole GKE policy for one Pod.",
+"id": "PodResult",
+"properties": {
+"imageResults": {
+"description": "Per-image details.",
+"items": {
+"$ref": "ImageResult"
+},
+"type": "array"
+},
+"kubernetesNamespace": {
+"description": "The Kubernetes namespace of the Pod.",
+"type": "string"
+},
+"kubernetesServiceAccount": {
+"description": "The Kubernetes service account of the Pod.",
+"type": "string"
+},
+"podName": {
+"description": "The name of the Pod.",
+"type": "string"
+},
+"verdict": {
+"description": "The result of evaluating this Pod.",
+"enum": [
+"POD_VERDICT_UNSPECIFIED",
+"CONFORMANT",
+"NON_CONFORMANT",
+"ERROR"
+],
+"enumDescriptions": [
+"Not specified. This should never be used.",
+"All images conform to the policy.",
+"At least one image does not conform to the policy.",
+"Encountered at least one error evaluating an image and all other images with non-error verdicts conform to the policy. Non-conformance has precedence over errors."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "A policy for container image binary authorization.",
+"id": "Policy",
+"properties": {
+"admissionWhitelistPatterns": {
+"description": "Optional. Admission policy allowlisting. A matching admission request will always be permitted. This feature is typically used to exclude Google or third-party infrastructure images from Binary Authorization policies.",
+"items": {
+"$ref": "AdmissionWhitelistPattern"
+},
+"type": "array"
+},
+"clusterAdmissionRules": {
+"additionalProperties": {
+"$ref": "AdmissionRule"
+},
+"description": "Optional. Per-cluster admission rules. Cluster spec format: `location.clusterId`. There can be at most one admission rule per cluster spec. A `location` is either a compute zone (e.g. us-central1-a) or a region (e.g. us-central1). For `clusterId` syntax restrictions see https://cloud.google.com/container-engine/reference/rest/v1/projects.zones.clusters.",
+"type": "object"
+},
+"defaultAdmissionRule": {
+"$ref": "AdmissionRule",
+"description": "Required. Default admission rule for a cluster without a per-cluster, per- kubernetes-service-account, or per-istio-service-identity admission rule."
+},
+"description": {
+"description": "Optional. A descriptive comment.",
+"type": "string"
+},
+"etag": {
+"description": "Optional. A checksum, returned by the server, that can be sent on update requests to ensure the policy has an up-to-date value before attempting to update it. See https://google.aip.dev/154.",
+"type": "string"
+},
+"globalPolicyEvaluationMode": {
+"description": "Optional. Controls the evaluation of a Google-maintained global admission policy for common system-level images. Images not covered by the global policy will be subject to the project admission policy. This setting has no effect when specified inside a global admission policy.",
+"enum": [
+"GLOBAL_POLICY_EVALUATION_MODE_UNSPECIFIED",
+"ENABLE",
+"DISABLE"
+],
+"enumDescriptions": [
+"Not specified: `DISABLE` is assumed.",
+"Enables system policy evaluation.",
+"Disables system policy evaluation."
+],
+"type": "string"
+},
+"istioServiceIdentityAdmissionRules": {
+"additionalProperties": {
+"$ref": "AdmissionRule"
+},
+"description": "Optional. Per-istio-service-identity admission rules. Istio service identity spec format: `spiffe:///ns//sa/` or `/ns//sa/` e.g. `spiffe://example.com/ns/test-ns/sa/default`",
+"type": "object"
+},
+"kubernetesNamespaceAdmissionRules": {
+"additionalProperties": {
+"$ref": "AdmissionRule"
+},
+"description": "Optional. Per-kubernetes-namespace admission rules. K8s namespace spec format: `[a-z.-]+`, e.g. `some-namespace`",
+"type": "object"
+},
+"kubernetesServiceAccountAdmissionRules": {
+"additionalProperties": {
+"$ref": "AdmissionRule"
+},
+"description": "Optional. Per-kubernetes-service-account admission rules. Service account spec format: `namespace:serviceaccount`. e.g. `test-ns:default`",
+"type": "object"
+},
+"name": {
+"description": "Output only. The resource name, in the format `projects/*/policy`. There is at most one policy per project.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Time when the policy was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Scope": {
+"description": "A scope specifier for `CheckSet` objects.",
+"id": "Scope",
+"properties": {
+"kubernetesNamespace": {
+"description": "Optional. Matches all Kubernetes service accounts in the provided namespace, unless a more specific `kubernetes_service_account` scope already matched.",
+"type": "string"
+},
+"kubernetesServiceAccount": {
+"description": "Optional. Matches a single Kubernetes service account, e.g. `my-namespace:my-service-account`. `kubernetes_service_account` scope is always more specific than `kubernetes_namespace` scope for the same namespace.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "IamPolicy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+}
+},
+"type": "object"
+},
+"Signature": {
+"description": "Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular, verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with respect to the payload. The `signature` contents SHOULD NOT be \"attached\" (where the payload is included with the serialized `signature` bytes). Verifiers MUST ignore any \"attached\" payload and only verify signatures with respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature, or the canonical serialization of the proto message that holds this signature).",
+"id": "Signature",
+"properties": {
+"publicKeyId": {
+"description": "The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public key fingerprint: * \"openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA\" See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization): * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\" * \"nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5\"",
+"type": "string"
+},
+"signature": {
+"description": "The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be unambiguously provided with the Signature during verification. A wrapper message might provide the payload explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously computed to derive the payload.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SigstoreAuthority": {
+"description": "A Sigstore authority, used to verify signatures that are created by Sigstore. An authority is analogous to an attestation authenticator, verifying that a signature is valid or invalid.",
+"id": "SigstoreAuthority",
+"properties": {
+"displayName": {
+"description": "Optional. A user-provided name for this `SigstoreAuthority`. This field has no effect on the policy evaluation behavior except to improve readability of messages in evaluation results.",
+"type": "string"
+},
+"publicKeySet": {
+"$ref": "SigstorePublicKeySet",
+"description": "Required. A simple set of public keys. A signature is considered valid if any keys in the set validate the signature."
+}
+},
+"type": "object"
+},
+"SigstorePublicKey": {
+"description": "A Sigstore public key. `SigstorePublicKey` is the public key material used to authenticate Sigstore signatures.",
+"id": "SigstorePublicKey",
+"properties": {
+"publicKeyPem": {
+"description": "The public key material in PEM format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SigstorePublicKeySet": {
+"description": "A bundle of Sigstore public keys, used to verify Sigstore signatures. A signature is authenticated by a `SigstorePublicKeySet` if any of the keys verify it.",
+"id": "SigstorePublicKeySet",
+"properties": {
+"publicKeys": {
+"description": "Required. `public_keys` must have at least one entry.",
+"items": {
+"$ref": "SigstorePublicKey"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SigstoreSignatureCheck": {
+"description": "A Sigstore signature check, which verifies the Sigstore signature associated with an image.",
+"id": "SigstoreSignatureCheck",
+"properties": {
+"sigstoreAuthorities": {
+"description": "Required. The authorities required by this check to verify the signature. A signature only needs to be verified by one authority to pass the check.",
+"items": {
+"$ref": "SigstoreAuthority"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SimpleSigningAttestationCheck": {
+"description": "Require a signed [DSSE](https://github.com/secure-systems-lab/dsse) attestation with type SimpleSigning.",
+"id": "SimpleSigningAttestationCheck",
+"properties": {
+"attestationAuthenticators": {
+"description": "Required. The authenticators required by this check to verify an attestation. Typically this is one or more PKIX public keys for signature verification. Only one authenticator needs to consider an attestation verified in order for an attestation to be considered fully authenticated. In otherwords, this list of authenticators is an \"OR\" of the authenticator results. At least one authenticator is required.",
+"items": {
+"$ref": "AttestationAuthenticator"
+},
+"type": "array"
+},
+"containerAnalysisAttestationProjects": {
+"description": "Optional. The projects where attestations are stored as Container Analysis Occurrences, in the format `projects/[PROJECT_ID]`. Only one attestation needs to successfully verify an image for this check to pass, so a single verified attestation found in any of `container_analysis_attestation_projects` is sufficient for the check to pass. A project ID must be used, not a project number. When fetching Occurrences from Container Analysis, only `AttestationOccurrence` kinds are considered. In the future, additional Occurrence kinds may be added to the query. Maximum number of `container_analysis_attestation_projects` allowed in each `SimpleSigningAttestationCheck` is 10.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SlsaCheck": {
+"description": "A SLSA provenance attestation check, which ensures that images are built by a trusted builder using source code from its trusted repositories only.",
+"id": "SlsaCheck",
+"properties": {
+"rules": {
+"description": "Specifies a list of verification rules for the SLSA attestations. An image is considered compliant with the SlsaCheck if any of the rules are satisfied.",
+"items": {
+"$ref": "VerificationRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TrustedDirectoryCheck": {
+"description": "A trusted directory check, which rejects images that do not come from the set of user-configured trusted directories.",
+"id": "TrustedDirectoryCheck",
+"properties": {
+"trustedDirPatterns": {
+"description": "Required. List of trusted directory patterns. A pattern is in the form \"registry/path/to/directory\". The registry domain part is defined as two or more dot-separated words, e.g., `us.pkg.dev`, or `gcr.io`. Additionally, `*` can be used in three ways as wildcards: 1. leading `*` to match varying prefixes in registry subdomain (useful for location prefixes); 2. trailing `*` after registry/ to match varying endings; 3. trailing `**` after registry/ to match \"/\" as well. For example: -- `gcr.io/my-project/my-repo` is valid to match a single directory -- `*-docker.pkg.dev/my-project/my-repo` or `*.gcr.io/my-project` are valid to match varying prefixes -- `gcr.io/my-project/*` will match all direct directories in `my-project` -- `gcr.io/my-project/**` would match all directories in `my-project` -- `gcr.i*` is not allowed since the registry is not completely specified -- `sub*domain.gcr.io/nginx` is not valid because only leading `*` or trailing `*` are allowed. -- `*pkg.dev/my-project/my-repo` is not valid because leading `*` can only match subdomain -- `**-docker.pkg.dev` is not valid because one leading `*` is allowed, and that it cannot match `/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"UserOwnedGrafeasNote": {
+"description": "An user owned Grafeas note references a Grafeas Attestation.Authority Note created by the user.",
+"id": "UserOwnedGrafeasNote",
+"properties": {
+"delegationServiceAccountEmail": {
+"description": "Output only. This field will contain the service account email address that this attestor will use as the principal when querying Container Analysis. Attestor administrators must grant this service account the IAM role needed to read attestations from the note_reference in Container Analysis (`containeranalysis.notes.occurrences.viewer`). This email address is fixed for the lifetime of the attestor, but callers should not make any other assumptions about the service account email; future versions may use an email based on a different naming pattern.",
+"readOnly": true,
+"type": "string"
+},
+"noteReference": {
+"description": "Required. The Grafeas resource name of a Attestation.Authority Note, created by the user, in the format: `projects/[PROJECT_ID]/notes/*`. This field may not be updated. A project ID must be used, not a project number. An attestation by this attestor is stored as a Grafeas Attestation.Authority Occurrence that names a container image and that links to this Note. Grafeas is an external dependency.",
+"type": "string"
+},
+"publicKeys": {
+"description": "Optional. Public keys that verify attestations signed by this attestor. This field may be updated. If this field is non-empty, one of the specified public keys must verify that an attestation was signed by this attestor for the image specified in the admission request. If this field is empty, this attestor always returns that no valid attestations exist.",
+"items": {
+"$ref": "AttestorPublicKey"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ValidateAttestationOccurrenceRequest": {
+"description": "Request message for ValidationHelperV1.ValidateAttestationOccurrence.",
+"id": "ValidateAttestationOccurrenceRequest",
+"properties": {
+"attestation": {
+"$ref": "AttestationOccurrence",
+"description": "Required. An AttestationOccurrence to be checked that it can be verified by the `Attestor`. It does not have to be an existing entity in Container Analysis. It must otherwise be a valid `AttestationOccurrence`."
+},
+"occurrenceNote": {
+"description": "Required. The resource name of the Note to which the containing Occurrence is associated.",
+"type": "string"
+},
+"occurrenceResourceUri": {
+"description": "Required. The URI of the artifact (e.g. container image) that is the subject of the containing Occurrence.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ValidateAttestationOccurrenceResponse": {
+"description": "Response message for ValidationHelperV1.ValidateAttestationOccurrence.",
+"id": "ValidateAttestationOccurrenceResponse",
+"properties": {
+"denialReason": {
+"description": "The reason for denial if the Attestation couldn't be validated.",
+"type": "string"
+},
+"result": {
+"description": "The result of the Attestation validation.",
+"enum": [
+"RESULT_UNSPECIFIED",
+"VERIFIED",
+"ATTESTATION_NOT_VERIFIABLE"
+],
+"enumDescriptions": [
+"Unspecified.",
+"The Attestation was able to verified by the Attestor.",
+"The Attestation was not able to verified by the Attestor."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"VerificationRule": {
+"description": "Specifies verification rules for evaluating the SLSA attestations including: which builders to trust, where to fetch the SLSA attestations generated by those builders, and other builder-specific evaluation rules such as which source repositories are trusted. An image is considered verified by the rule if any of the fetched SLSA attestations is verified.",
+"id": "VerificationRule",
+"properties": {
+"attestationSource": {
+"$ref": "AttestationSource",
+"description": "Specifies where to fetch the provenances attestations generated by the builder (group)."
+},
+"configBasedBuildRequired": {
+"description": "If true, require the image to be built from a top-level configuration. `trusted_source_repo_patterns` specifies the repositories containing this configuration.",
+"type": "boolean"
+},
+"trustedBuilder": {
+"description": "Each verification rule is used for evaluation against provenances generated by a specific builder (group). For some of the builders, such as the Google Cloud Build, users don't need to explicitly specify their roots of trust in the policy since the evaluation service can automatically fetch them based on the builder (group).",
+"enum": [
+"BUILDER_UNSPECIFIED",
+"GOOGLE_CLOUD_BUILD"
+],
+"enumDescriptions": [
+"Should never happen.",
+"The whole Google Cloud Build (GCB) builder group, including all GCB builder types."
+],
+"type": "string"
+},
+"trustedSourceRepoPatterns": {
+"description": "List of trusted source code repository URL patterns. These patterns match the full repository URL without its scheme (e.g. `https://`). The patterns must not include schemes. For example, the pattern `source.cloud.google.com/my-project/my-repo-name` matches the following URLs: - `source.cloud.google.com/my-project/my-repo-name` - `git+ssh://source.cloud.google.com/my-project/my-repo-name` - `https://source.cloud.google.com/my-project/my-repo-name` A pattern matches a URL either exactly or with `*` wildcards. `*` can be used in only two ways: 1. trailing `*` after hosturi/ to match varying endings; 2. trailing `**` after hosturi/ to match `/` as well. `*` and `**` can only be used as wildcards and can only occur at the end of the pattern after a `/`. (So it's not possible to match a URL that contains literal `*`.) For example: - `github.com/my-project/my-repo` is valid to match a single repo - `github.com/my-project/*` will match all direct repos in `my-project` - `github.com/**` matches all repos in GitHub",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"VulnerabilityCheck": {
+"description": "An image vulnerability check, which rejects images that violate the configured vulnerability rules.",
+"id": "VulnerabilityCheck",
+"properties": {
+"allowedCves": {
+"description": "Optional. A list of specific CVEs to ignore even if the vulnerability level violates `maximumUnfixableSeverity` or `maximumFixableSeverity`. CVEs are listed in the format of Container Analysis note id. For example: - CVE-2021-20305 - CVE-2020-10543 The CVEs are applicable regardless of note provider project, e.g., an entry of `CVE-2021-20305` will allow vulnerabilities with a note name of either `projects/goog-vulnz/notes/CVE-2021-20305` or `projects/CUSTOM-PROJECT/notes/CVE-2021-20305`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"blockedCves": {
+"description": "Optional. A list of specific CVEs to always raise warnings about even if the vulnerability level meets `maximumUnfixableSeverity` or `maximumFixableSeverity`. CVEs are listed in the format of Container Analysis note id. For example: - CVE-2021-20305 - CVE-2020-10543 The CVEs are applicable regardless of note provider project, e.g., an entry of `CVE-2021-20305` will block vulnerabilities with a note name of either `projects/goog-vulnz/notes/CVE-2021-20305` or `projects/CUSTOM-PROJECT/notes/CVE-2021-20305`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"containerAnalysisVulnerabilityProjects": {
+"description": "Optional. The projects where vulnerabilities are stored as Container Analysis Occurrences. Each project is expressed in the resource format of `projects/[PROJECT_ID]`, e.g., `projects/my-gcp-project`. An attempt will be made for each project to fetch vulnerabilities, and all valid vulnerabilities will be used to check against the vulnerability policy. If no valid scan is found in all projects configured here, an error will be returned for the check. Maximum number of `container_analysis_vulnerability_projects` allowed in each `VulnerabilityCheck` is 10.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"maximumFixableSeverity": {
+"description": "Required. The threshold for severity for which a fix is currently available. This field is required and must be set.",
+"enum": [
+"MAXIMUM_ALLOWED_SEVERITY_UNSPECIFIED",
+"BLOCK_ALL",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL",
+"ALLOW_ALL"
+],
+"enumDescriptions": [
+"Not specified.",
+"Block any vulnerability.",
+"Allow only minimal severity.",
+"Allow only low severity and lower.",
+"Allow medium severity and lower.",
+"Allow high severity and lower.",
+"Allow critical severity and lower.",
+"Allow all severity, even vulnerability with unspecified severity."
+],
+"type": "string"
+},
+"maximumUnfixableSeverity": {
+"description": "Required. The threshold for severity for which a fix isn't currently available. This field is required and must be set.",
+"enum": [
+"MAXIMUM_ALLOWED_SEVERITY_UNSPECIFIED",
+"BLOCK_ALL",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL",
+"ALLOW_ALL"
+],
+"enumDescriptions": [
+"Not specified.",
+"Block any vulnerability.",
+"Allow only minimal severity.",
+"Allow only low severity and lower.",
+"Allow medium severity and lower.",
+"Allow high severity and lower.",
+"Allow critical severity and lower.",
+"Allow all severity, even vulnerability with unspecified severity."
+],
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Binary Authorization API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/businessprofileperformance.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/businessprofileperformance.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..4f19986234372896f1ac22f23ab170026ebea68c
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/businessprofileperformance.v1.json
@@ -0,0 +1,679 @@
+{
+"basePath": "",
+"baseUrl": "https://businessprofileperformance.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Business Profile Performance",
+"description": "The Business Profile Performance API allows merchants to fetch performance reports about their business profile on Google. Note - If you have a quota of 0 after enabling the API, please request for GBP API access.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/my-business/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "businessprofileperformance:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://businessprofileperformance.mtls.googleapis.com/",
+"name": "businessprofileperformance",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"locations": {
+"methods": {
+"fetchMultiDailyMetricsTimeSeries": {
+"description": " Returns the values for each date from a given time range and optionally the sub entity type, where applicable, that are associated with the specific daily metrics. Example request: `GET https://businessprofileperformance.googleapis.com/v1/locations/12345:fetchMultiDailyMetricsTimeSeries?dailyMetrics=WEBSITE_CLICKS&dailyMetrics=CALL_CLICKS&daily_range.start_date.year=2022&daily_range.start_date.month=1&daily_range.start_date.day=1&daily_range.end_date.year=2022&daily_range.end_date.month=3&daily_range.end_date.day=31`",
+"flatPath": "v1/locations/{locationsId}:fetchMultiDailyMetricsTimeSeries",
+"httpMethod": "GET",
+"id": "businessprofileperformance.locations.fetchMultiDailyMetricsTimeSeries",
+"parameterOrder": [
+"location"
+],
+"parameters": {
+"dailyMetrics": {
+"description": "Required. The metrics to retrieve time series for.",
+"enum": [
+"DAILY_METRIC_UNKNOWN",
+"BUSINESS_IMPRESSIONS_DESKTOP_MAPS",
+"BUSINESS_IMPRESSIONS_DESKTOP_SEARCH",
+"BUSINESS_IMPRESSIONS_MOBILE_MAPS",
+"BUSINESS_IMPRESSIONS_MOBILE_SEARCH",
+"BUSINESS_CONVERSATIONS",
+"BUSINESS_DIRECTION_REQUESTS",
+"CALL_CLICKS",
+"WEBSITE_CLICKS",
+"BUSINESS_BOOKINGS",
+"BUSINESS_FOOD_ORDERS",
+"BUSINESS_FOOD_MENU_CLICKS"
+],
+"enumDescriptions": [
+"Represents the default unknown value.",
+"Business impressions on Google Maps on Desktop devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Search on Desktop devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Maps on Mobile devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Search on Mobile devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"The number of message conversations received on the business profile.",
+"The number of times a direction request was requested to the business location.",
+"The number of times the business profile call button was clicked.",
+"The number of times the business profile website was clicked.",
+"The number of bookings made from the business profile via Reserve with Google.",
+"The number of food orders received from the business profile.",
+"The number of clicks to view or interact with the menu content on the business profile. Multiple clicks by a unique user within a single day are counted as 1."
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"dailyRange.endDate.day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.endDate.month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.endDate.year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.startDate.day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.startDate.month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.startDate.year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"location": {
+"description": "Required. The location for which the time series should be fetched. Format: locations/{location_id} where location_id is an unobfuscated listing id.",
+"location": "path",
+"pattern": "^locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+location}:fetchMultiDailyMetricsTimeSeries",
+"response": {
+"$ref": "FetchMultiDailyMetricsTimeSeriesResponse"
+}
+},
+"getDailyMetricsTimeSeries": {
+"description": " Returns the values for each date from a given time range that are associated with the specific daily metric. Example request: `GET https://businessprofileperformance.googleapis.com/v1/locations/12345:getDailyMetricsTimeSeries?dailyMetric=WEBSITE_CLICKS&daily_range.start_date.year=2022&daily_range.start_date.month=1&daily_range.start_date.day=1&daily_range.end_date.year=2022&daily_range.end_date.month=3&daily_range.end_date.day=31`",
+"flatPath": "v1/locations/{locationsId}:getDailyMetricsTimeSeries",
+"httpMethod": "GET",
+"id": "businessprofileperformance.locations.getDailyMetricsTimeSeries",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"dailyMetric": {
+"description": "Required. The metric to retrieve time series.",
+"enum": [
+"DAILY_METRIC_UNKNOWN",
+"BUSINESS_IMPRESSIONS_DESKTOP_MAPS",
+"BUSINESS_IMPRESSIONS_DESKTOP_SEARCH",
+"BUSINESS_IMPRESSIONS_MOBILE_MAPS",
+"BUSINESS_IMPRESSIONS_MOBILE_SEARCH",
+"BUSINESS_CONVERSATIONS",
+"BUSINESS_DIRECTION_REQUESTS",
+"CALL_CLICKS",
+"WEBSITE_CLICKS",
+"BUSINESS_BOOKINGS",
+"BUSINESS_FOOD_ORDERS",
+"BUSINESS_FOOD_MENU_CLICKS"
+],
+"enumDescriptions": [
+"Represents the default unknown value.",
+"Business impressions on Google Maps on Desktop devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Search on Desktop devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Maps on Mobile devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Search on Mobile devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"The number of message conversations received on the business profile.",
+"The number of times a direction request was requested to the business location.",
+"The number of times the business profile call button was clicked.",
+"The number of times the business profile website was clicked.",
+"The number of bookings made from the business profile via Reserve with Google.",
+"The number of food orders received from the business profile.",
+"The number of clicks to view or interact with the menu content on the business profile. Multiple clicks by a unique user within a single day are counted as 1."
+],
+"location": "query",
+"type": "string"
+},
+"dailyRange.endDate.day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.endDate.month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.endDate.year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.startDate.day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.startDate.month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailyRange.startDate.year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailySubEntityType.dayOfWeek": {
+"description": "Represents the day of the week. Eg: MONDAY. Currently supported DailyMetrics = NONE.",
+"enum": [
+"DAY_OF_WEEK_UNSPECIFIED",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY",
+"SUNDAY"
+],
+"enumDescriptions": [
+"The day of the week is unspecified.",
+"Monday",
+"Tuesday",
+"Wednesday",
+"Thursday",
+"Friday",
+"Saturday",
+"Sunday"
+],
+"location": "query",
+"type": "string"
+},
+"dailySubEntityType.timeOfDay.hours": {
+"description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailySubEntityType.timeOfDay.minutes": {
+"description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailySubEntityType.timeOfDay.nanos": {
+"description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"dailySubEntityType.timeOfDay.seconds": {
+"description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"name": {
+"description": "Required. The location for which the time series should be fetched. Format: locations/{location_id} where location_id is an unobfuscated listing id.",
+"location": "path",
+"pattern": "^locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:getDailyMetricsTimeSeries",
+"response": {
+"$ref": "GetDailyMetricsTimeSeriesResponse"
+}
+}
+},
+"resources": {
+"searchkeywords": {
+"resources": {
+"impressions": {
+"resources": {
+"monthly": {
+"methods": {
+"list": {
+"description": "Returns the search keywords used to find a business in search or maps. Each search keyword is accompanied by impressions which are aggregated on a monthly basis. Example request: `GET https://businessprofileperformance.googleapis.com/v1/locations/12345/searchkeywords/impressions/monthly?monthly_range.start_month.year=2022&monthly_range.start_month.month=1&monthly_range.end_month.year=2022&monthly_range.end_month.month=3`",
+"flatPath": "v1/locations/{locationsId}/searchkeywords/impressions/monthly",
+"httpMethod": "GET",
+"id": "businessprofileperformance.locations.searchkeywords.impressions.monthly.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"monthlyRange.endMonth.day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"monthlyRange.endMonth.month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"monthlyRange.endMonth.year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"monthlyRange.startMonth.day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"monthlyRange.startMonth.month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"monthlyRange.startMonth.year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageSize": {
+"description": "Optional. The number of results requested. The default page size is 100. Page size can be set to a maximum of 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token indicating the next paginated result to be returned.",
+"format": "byte",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The location for which the time series should be fetched. Format: locations/{location_id} where location_id is an unobfuscated listing id.",
+"location": "path",
+"pattern": "^locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/searchkeywords/impressions/monthly",
+"response": {
+"$ref": "ListSearchKeywordImpressionsMonthlyResponse"
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241002",
+"rootUrl": "https://businessprofileperformance.googleapis.com/",
+"schemas": {
+"DailyMetricTimeSeries": {
+"description": "Represents a single datapoint, where each datapoint is a DailyMetric-DailySubEntityType-TimeSeries tuple.",
+"id": "DailyMetricTimeSeries",
+"properties": {
+"dailyMetric": {
+"description": "The DailyMetric that the TimeSeries represents.",
+"enum": [
+"DAILY_METRIC_UNKNOWN",
+"BUSINESS_IMPRESSIONS_DESKTOP_MAPS",
+"BUSINESS_IMPRESSIONS_DESKTOP_SEARCH",
+"BUSINESS_IMPRESSIONS_MOBILE_MAPS",
+"BUSINESS_IMPRESSIONS_MOBILE_SEARCH",
+"BUSINESS_CONVERSATIONS",
+"BUSINESS_DIRECTION_REQUESTS",
+"CALL_CLICKS",
+"WEBSITE_CLICKS",
+"BUSINESS_BOOKINGS",
+"BUSINESS_FOOD_ORDERS",
+"BUSINESS_FOOD_MENU_CLICKS"
+],
+"enumDescriptions": [
+"Represents the default unknown value.",
+"Business impressions on Google Maps on Desktop devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Search on Desktop devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Maps on Mobile devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"Business impressions on Google Search on Mobile devices. Multiple impressions by a unique user within a single day are counted as a single impression.",
+"The number of message conversations received on the business profile.",
+"The number of times a direction request was requested to the business location.",
+"The number of times the business profile call button was clicked.",
+"The number of times the business profile website was clicked.",
+"The number of bookings made from the business profile via Reserve with Google.",
+"The number of food orders received from the business profile.",
+"The number of clicks to view or interact with the menu content on the business profile. Multiple clicks by a unique user within a single day are counted as 1."
+],
+"type": "string"
+},
+"dailySubEntityType": {
+"$ref": "DailySubEntityType",
+"description": "The DailySubEntityType that the TimeSeries represents. Will not be present when breakdown does not exist."
+},
+"timeSeries": {
+"$ref": "TimeSeries",
+"description": "List of datapoints where each datapoint is a date-value pair."
+}
+},
+"type": "object"
+},
+"DailySubEntityType": {
+"description": "Represents all possible subentity types that are associated with DailyMetrics.",
+"id": "DailySubEntityType",
+"properties": {
+"dayOfWeek": {
+"description": "Represents the day of the week. Eg: MONDAY. Currently supported DailyMetrics = NONE.",
+"enum": [
+"DAY_OF_WEEK_UNSPECIFIED",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY",
+"SUNDAY"
+],
+"enumDescriptions": [
+"The day of the week is unspecified.",
+"Monday",
+"Tuesday",
+"Wednesday",
+"Thursday",
+"Friday",
+"Saturday",
+"Sunday"
+],
+"type": "string"
+},
+"timeOfDay": {
+"$ref": "TimeOfDay",
+"description": "Represents the time of the day in 24 hour format. Eg: 13:34:20 Currently supported DailyMetrics = NONE."
+}
+},
+"type": "object"
+},
+"Date": {
+"description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+"id": "Date",
+"properties": {
+"day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"type": "integer"
+},
+"month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"type": "integer"
+},
+"year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"DatedValue": {
+"description": "Represents a single datapoint in the timeseries, where each datapoint is a date-value pair.",
+"id": "DatedValue",
+"properties": {
+"date": {
+"$ref": "Date",
+"description": "The date that the datapoint corresponds to. This represents a month value if the day field is not set."
+},
+"value": {
+"description": "The value of the datapoint. This will not be present when the value is zero.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FetchMultiDailyMetricsTimeSeriesResponse": {
+"description": "Represents the response for FetchMultiDailyMetricsTimeSeries.",
+"id": "FetchMultiDailyMetricsTimeSeriesResponse",
+"properties": {
+"multiDailyMetricTimeSeries": {
+"description": "DailyMetrics and their corresponding time series.",
+"items": {
+"$ref": "MultiDailyMetricTimeSeries"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GetDailyMetricsTimeSeriesResponse": {
+"description": "Represents the response for GetDailyMetricsTimeSeries.",
+"id": "GetDailyMetricsTimeSeriesResponse",
+"properties": {
+"timeSeries": {
+"$ref": "TimeSeries",
+"description": "The daily time series."
+}
+},
+"type": "object"
+},
+"InsightsValue": {
+"description": "Represents an insights value.",
+"id": "InsightsValue",
+"properties": {
+"threshold": {
+"description": "Represents the threshold below which the actual value falls.",
+"format": "int64",
+"type": "string"
+},
+"value": {
+"description": "Represents the actual value.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListSearchKeywordImpressionsMonthlyResponse": {
+"description": "Represents the response for ListSearchKeywordImpressionsMonthly.",
+"id": "ListSearchKeywordImpressionsMonthlyResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token indicating the last paginated result returned. This can be used by succeeding requests to get the next \"page\" of keywords. It will only be present when there are more results to be returned.",
+"format": "byte",
+"type": "string"
+},
+"searchKeywordsCounts": {
+"description": "Search terms which have been used to find a business.",
+"items": {
+"$ref": "SearchKeywordCount"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MultiDailyMetricTimeSeries": {
+"description": "Represents a list of tuples of DailyMetric-DailySubEntityType-TimeSeries.",
+"id": "MultiDailyMetricTimeSeries",
+"properties": {
+"dailyMetricTimeSeries": {
+"description": "List of DailyMetric-TimeSeries pairs.",
+"items": {
+"$ref": "DailyMetricTimeSeries"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SearchKeywordCount": {
+"description": "Represents a single search keyword and its value.",
+"id": "SearchKeywordCount",
+"properties": {
+"insightsValue": {
+"$ref": "InsightsValue",
+"description": "One of either: 1) The sum of the number of unique users that used the keyword in a month, aggregated for each month requested. 2) A threshold that indicates that the actual value is below this threshold."
+},
+"searchKeyword": {
+"description": "The lower-cased string that the user entered.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TimeOfDay": {
+"description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
+"id": "TimeOfDay",
+"properties": {
+"hours": {
+"description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
+"format": "int32",
+"type": "integer"
+},
+"minutes": {
+"description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.",
+"format": "int32",
+"type": "integer"
+},
+"nanos": {
+"description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.",
+"format": "int32",
+"type": "integer"
+},
+"seconds": {
+"description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"TimeSeries": {
+"description": "Represents a timeseries.",
+"id": "TimeSeries",
+"properties": {
+"datedValues": {
+"description": "List of datapoints in the timeseries, where each datapoint is a date-value pair.",
+"items": {
+"$ref": "DatedValue"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Business Profile Performance API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudasset.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudasset.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..4cd53591f0b2f14083c1578bbbfd03c3fecf2538
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudasset.v1.json
@@ -0,0 +1,4782 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudasset.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Asset",
+"description": "The Cloud Asset API manages the history and inventory of Google Cloud resources.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/asset-inventory/docs/quickstart",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudasset:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudasset.mtls.googleapis.com/",
+"name": "cloudasset",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"assets": {
+"methods": {
+"list": {
+"description": "Lists assets with time and resource types and returns paged results in response.",
+"flatPath": "v1/{v1Id}/{v1Id1}/assets",
+"httpMethod": "GET",
+"id": "cloudasset.assets.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"assetTypes": {
+"description": "A list of asset types to take a snapshot for. For example: \"compute.googleapis.com/Disk\". Regular expression is also supported. For example: * \"compute.googleapis.com.*\" snapshots resources whose asset type starts with \"compute.googleapis.com\". * \".*Instance\" snapshots resources whose asset type ends with \"Instance\". * \".*Instance.*\" snapshots resources whose asset type contains \"Instance\". See [RE2](https://github.com/google/re2/wiki/Syntax) for all supported regular expression syntax. If the regular expression does not match any supported asset type, an INVALID_ARGUMENT error will be returned. If specified, only matching assets will be returned, otherwise, it will snapshot all asset types. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"contentType": {
+"description": "Asset content type. If not specified, no content but the asset name will be returned.",
+"enum": [
+"CONTENT_TYPE_UNSPECIFIED",
+"RESOURCE",
+"IAM_POLICY",
+"ORG_POLICY",
+"ACCESS_POLICY",
+"OS_INVENTORY",
+"RELATIONSHIP"
+],
+"enumDescriptions": [
+"Unspecified content type.",
+"Resource metadata.",
+"The actual IAM policy set on a resource.",
+"The organization policy set on an asset.",
+"The Access Context Manager policy set on an asset.",
+"The runtime OS Inventory information.",
+"The related resources."
+],
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of assets to be returned in a single response. Default is 100, minimum is 1, and maximum is 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` returned from the previous `ListAssetsResponse`, or unspecified for the first `ListAssetsRequest`. It is a continuation of a prior `ListAssets` call, and the API should return the next page of assets.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Name of the organization, folder, or project the assets belong to. Format: \"organizations/[organization-number]\" (such as \"organizations/123\"), \"projects/[project-id]\" (such as \"projects/my-project-id\"), \"projects/[project-number]\" (such as \"projects/12345\"), or \"folders/[folder-number]\" (such as \"folders/12345\").",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+},
+"readTime": {
+"description": "Timestamp to take an asset snapshot. This can only be set to a timestamp between the current time and the current time minus 35 days (inclusive). If not specified, the current time will be used. Due to delays in resource data collection and indexing, there is a volatile window during which running the same query may get different results.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"relationshipTypes": {
+"description": "A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it snapshots specified relationships. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_types] or if any of the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it snapshots the supported relationships for all [asset_types] or returns an error if any of the [asset_types] has no relationship support. An unspecified asset types field means all supported asset_types. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.",
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/assets",
+"response": {
+"$ref": "ListAssetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"effectiveIamPolicies": {
+"methods": {
+"batchGet": {
+"description": "Gets effective IAM policies for a batch of resources.",
+"flatPath": "v1/{v1Id}/{v1Id1}/effectiveIamPolicies:batchGet",
+"httpMethod": "GET",
+"id": "cloudasset.effectiveIamPolicies.batchGet",
+"parameterOrder": [
+"scope"
+],
+"parameters": {
+"names": {
+"description": "Required. The names refer to the [full_resource_names] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of the asset types [supported by search APIs](https://cloud.google.com/asset-inventory/docs/supported-asset-types). A maximum of 20 resources' effective policies can be retrieved in a batch.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"scope": {
+"description": "Required. Only IAM policies on or below the scope will be returned. This can only be an organization number (such as \"organizations/123\"), a folder number (such as \"folders/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\"). To know how to get organization ID, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id). To know how to get folder or project ID, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-folders#viewing_or_listing_folders_and_projects).",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+scope}/effectiveIamPolicies:batchGet",
+"response": {
+"$ref": "BatchGetEffectiveIamPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"feeds": {
+"methods": {
+"create": {
+"description": "Creates a feed in a parent project/folder/organization to listen to its asset updates.",
+"flatPath": "v1/{v1Id}/{v1Id1}/feeds",
+"httpMethod": "POST",
+"id": "cloudasset.feeds.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project/folder/organization where this feed should be created in. It can only be an organization number (such as \"organizations/123\"), a folder number (such as \"folders/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\").",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/feeds",
+"request": {
+"$ref": "CreateFeedRequest"
+},
+"response": {
+"$ref": "Feed"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an asset feed.",
+"flatPath": "v1/{v1Id}/{v1Id1}/feeds/{feedsId}",
+"httpMethod": "DELETE",
+"id": "cloudasset.feeds.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the feed and it must be in the format of: projects/project_number/feeds/feed_id folders/folder_number/feeds/feed_id organizations/organization_number/feeds/feed_id",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/feeds/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details about an asset feed.",
+"flatPath": "v1/{v1Id}/{v1Id1}/feeds/{feedsId}",
+"httpMethod": "GET",
+"id": "cloudasset.feeds.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the Feed and it must be in the format of: projects/project_number/feeds/feed_id folders/folder_number/feeds/feed_id organizations/organization_number/feeds/feed_id",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/feeds/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Feed"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all asset feeds in a parent project/folder/organization.",
+"flatPath": "v1/{v1Id}/{v1Id1}/feeds",
+"httpMethod": "GET",
+"id": "cloudasset.feeds.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent project/folder/organization whose feeds are to be listed. It can only be using project/folder/organization number (such as \"folders/12345\")\", or a project ID (such as \"projects/my-project-id\").",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/feeds",
+"response": {
+"$ref": "ListFeedsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an asset feed configuration.",
+"flatPath": "v1/{v1Id}/{v1Id1}/feeds/{feedsId}",
+"httpMethod": "PATCH",
+"id": "cloudasset.feeds.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The format will be projects/{project_number}/feeds/{client-assigned_feed_identifier} or folders/{folder_number}/feeds/{client-assigned_feed_identifier} or organizations/{organization_number}/feeds/{client-assigned_feed_identifier} The client-assigned feed identifier must be unique within the parent project/folder/organization.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/feeds/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "UpdateFeedRequest"
+},
+"response": {
+"$ref": "Feed"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/{v1Id}/{v1Id1}/operations/{operationsId}/{operationsId1}",
+"httpMethod": "GET",
+"id": "cloudasset.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/operations/[^/]+/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"savedQueries": {
+"methods": {
+"create": {
+"description": "Creates a saved query in a parent project/folder/organization.",
+"flatPath": "v1/{v1Id}/{v1Id1}/savedQueries",
+"httpMethod": "POST",
+"id": "cloudasset.savedQueries.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project/folder/organization where this saved_query should be created in. It can only be an organization number (such as \"organizations/123\"), a folder number (such as \"folders/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\").",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+},
+"savedQueryId": {
+"description": "Required. The ID to use for the saved query, which must be unique in the specified parent. It will become the final component of the saved query's resource name. This value should be 4-63 characters, and valid characters are `a-z-`. Notice that this field is required in the saved query creation, and the `name` field of the `saved_query` will be ignored.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/savedQueries",
+"request": {
+"$ref": "SavedQuery"
+},
+"response": {
+"$ref": "SavedQuery"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a saved query.",
+"flatPath": "v1/{v1Id}/{v1Id1}/savedQueries/{savedQueriesId}",
+"httpMethod": "DELETE",
+"id": "cloudasset.savedQueries.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the saved query to delete. It must be in the format of: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/savedQueries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details about a saved query.",
+"flatPath": "v1/{v1Id}/{v1Id1}/savedQueries/{savedQueriesId}",
+"httpMethod": "GET",
+"id": "cloudasset.savedQueries.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the saved query and it must be in the format of: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/savedQueries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "SavedQuery"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all saved queries in a parent project/folder/organization.",
+"flatPath": "v1/{v1Id}/{v1Id1}/savedQueries",
+"httpMethod": "GET",
+"id": "cloudasset.savedQueries.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The expression to filter resources. The expression is a list of zero or more restrictions combined via logical operators `AND` and `OR`. When `AND` and `OR` are both used in the expression, parentheses must be appropriately used to group the combinations. The expression may also contain regular expressions. See https://google.aip.dev/160 for more information on the grammar.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of saved queries to return per page. The service may return fewer than this value. If unspecified, at most 50 will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListSavedQueries` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSavedQueries` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent project/folder/organization whose savedQueries are to be listed. It can only be using project/folder/organization number (such as \"folders/12345\")\", or a project ID (such as \"projects/my-project-id\").",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/savedQueries",
+"response": {
+"$ref": "ListSavedQueriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a saved query.",
+"flatPath": "v1/{v1Id}/{v1Id1}/savedQueries/{savedQueriesId}",
+"httpMethod": "PATCH",
+"id": "cloudasset.savedQueries.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the saved query. The format must be: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/savedQueries/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "SavedQuery"
+},
+"response": {
+"$ref": "SavedQuery"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"v1": {
+"methods": {
+"analyzeIamPolicy": {
+"description": "Analyzes IAM policies to answer which identities have what accesses on which resources.",
+"flatPath": "v1/{v1Id}/{v1Id1}:analyzeIamPolicy",
+"httpMethod": "GET",
+"id": "cloudasset.analyzeIamPolicy",
+"parameterOrder": [
+"scope"
+],
+"parameters": {
+"analysisQuery.accessSelector.permissions": {
+"description": "Optional. The permissions to appear in result.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"analysisQuery.accessSelector.roles": {
+"description": "Optional. The roles to appear in result.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"analysisQuery.conditionContext.accessTime": {
+"description": "The hypothetical access timestamp to evaluate IAM conditions. Note that this value must not be earlier than the current time; otherwise, an INVALID_ARGUMENT error will be returned.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"analysisQuery.identitySelector.identity": {
+"description": "Required. The identity appear in the form of principals in [IAM policy binding](https://cloud.google.com/iam/reference/rest/v1/Binding). The examples of supported forms are: \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\". Notice that wildcard characters (such as * and ?) are not supported. You must give a specific identity.",
+"location": "query",
+"type": "string"
+},
+"analysisQuery.options.analyzeServiceAccountImpersonation": {
+"description": "Optional. If true, the response will include access analysis from identities to resources via service account impersonation. This is a very expensive operation, because many derived queries will be executed. We highly recommend you use AssetService.AnalyzeIamPolicyLongrunning RPC instead. For example, if the request analyzes for which resources user A has permission P, and there's an IAM policy states user A has iam.serviceAccounts.getAccessToken permission to a service account SA, and there's another IAM policy states service account SA has permission P to a Google Cloud folder F, then user A potentially has access to the Google Cloud folder F. And those advanced analysis results will be included in AnalyzeIamPolicyResponse.service_account_impersonation_analysis. Another example, if the request analyzes for who has permission P to a Google Cloud folder F, and there's an IAM policy states user A has iam.serviceAccounts.actAs permission to a service account SA, and there's another IAM policy states service account SA has permission P to the Google Cloud folder F, then user A potentially has access to the Google Cloud folder F. And those advanced analysis results will be included in AnalyzeIamPolicyResponse.service_account_impersonation_analysis. Only the following permissions are considered in this analysis: * `iam.serviceAccounts.actAs` * `iam.serviceAccounts.signBlob` * `iam.serviceAccounts.signJwt` * `iam.serviceAccounts.getAccessToken` * `iam.serviceAccounts.getOpenIdToken` * `iam.serviceAccounts.implicitDelegation` Default is false.",
+"location": "query",
+"type": "boolean"
+},
+"analysisQuery.options.expandGroups": {
+"description": "Optional. If true, the identities section of the result will expand any Google groups appearing in an IAM policy binding. If IamPolicyAnalysisQuery.identity_selector is specified, the identity in the result will be determined by the selector, and this flag is not allowed to set. If true, the default max expansion per group is 1000 for AssetService.AnalyzeIamPolicy][]. Default is false.",
+"location": "query",
+"type": "boolean"
+},
+"analysisQuery.options.expandResources": {
+"description": "Optional. If true and IamPolicyAnalysisQuery.resource_selector is not specified, the resource section of the result will expand any resource attached to an IAM policy to include resources lower in the resource hierarchy. For example, if the request analyzes for which resources user A has permission P, and the results include an IAM policy with P on a Google Cloud folder, the results will also include resources in that folder with permission P. If true and IamPolicyAnalysisQuery.resource_selector is specified, the resource section of the result will expand the specified resource to include resources lower in the resource hierarchy. Only project or lower resources are supported. Folder and organization resources cannot be used together with this option. For example, if the request analyzes for which users have permission P on a Google Cloud project with this option enabled, the results will include all users who have permission P on that project or any lower resource. If true, the default max expansion per resource is 1000 for AssetService.AnalyzeIamPolicy][] and 100000 for AssetService.AnalyzeIamPolicyLongrunning][]. Default is false.",
+"location": "query",
+"type": "boolean"
+},
+"analysisQuery.options.expandRoles": {
+"description": "Optional. If true, the access section of result will expand any roles appearing in IAM policy bindings to include their permissions. If IamPolicyAnalysisQuery.access_selector is specified, the access section of the result will be determined by the selector, and this flag is not allowed to set. Default is false.",
+"location": "query",
+"type": "boolean"
+},
+"analysisQuery.options.outputGroupEdges": {
+"description": "Optional. If true, the result will output the relevant membership relationships between groups and other groups, and between groups and principals. Default is false.",
+"location": "query",
+"type": "boolean"
+},
+"analysisQuery.options.outputResourceEdges": {
+"description": "Optional. If true, the result will output the relevant parent/child relationships between resources. Default is false.",
+"location": "query",
+"type": "boolean"
+},
+"analysisQuery.resourceSelector.fullResourceName": {
+"description": "Required. The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of a resource of [supported resource types](https://cloud.google.com/asset-inventory/docs/supported-asset-types#analyzable_asset_types).",
+"location": "query",
+"type": "string"
+},
+"executionTimeout": {
+"description": "Optional. Amount of time executable has to complete. See JSON representation of [Duration](https://developers.google.com/protocol-buffers/docs/proto3#json). If this field is set with a value less than the RPC deadline, and the execution of your query hasn't finished in the specified execution timeout, you will get a response with partial result. Otherwise, your query's execution will continue until the RPC deadline. If it's not finished until then, you will get a DEADLINE_EXCEEDED error. Default is empty.",
+"format": "google-duration",
+"location": "query",
+"type": "string"
+},
+"savedAnalysisQuery": {
+"description": "Optional. The name of a saved query, which must be in the format of: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id If both `analysis_query` and `saved_analysis_query` are provided, they will be merged together with the `saved_analysis_query` as base and the `analysis_query` as overrides. For more details of the merge behavior, refer to the [MergeFrom](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#Message.MergeFrom.details) page. Note that you cannot override primitive fields with default value, such as 0 or empty string, etc., because we use proto3, which doesn't support field presence yet.",
+"location": "query",
+"type": "string"
+},
+"scope": {
+"description": "Required. The relative name of the root asset. Only resources and IAM policies within the scope will be analyzed. This can only be an organization number (such as \"organizations/123\"), a folder number (such as \"folders/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\"). To know how to get organization ID, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id). To know how to get folder or project ID, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-folders#viewing_or_listing_folders_and_projects).",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+scope}:analyzeIamPolicy",
+"response": {
+"$ref": "AnalyzeIamPolicyResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"analyzeIamPolicyLongrunning": {
+"description": "Analyzes IAM policies asynchronously to answer which identities have what accesses on which resources, and writes the analysis results to a Google Cloud Storage or a BigQuery destination. For Cloud Storage destination, the output format is the JSON format that represents a AnalyzeIamPolicyResponse. This method implements the google.longrunning.Operation, which allows you to track the operation status. We recommend intervals of at least 2 seconds with exponential backoff retry to poll the operation result. The metadata contains the metadata for the long-running operation.",
+"flatPath": "v1/{v1Id}/{v1Id1}:analyzeIamPolicyLongrunning",
+"httpMethod": "POST",
+"id": "cloudasset.analyzeIamPolicyLongrunning",
+"parameterOrder": [
+"scope"
+],
+"parameters": {
+"scope": {
+"description": "Required. The relative name of the root asset. Only resources and IAM policies within the scope will be analyzed. This can only be an organization number (such as \"organizations/123\"), a folder number (such as \"folders/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\"). To know how to get organization ID, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id). To know how to get folder or project ID, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-folders#viewing_or_listing_folders_and_projects).",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+scope}:analyzeIamPolicyLongrunning",
+"request": {
+"$ref": "AnalyzeIamPolicyLongrunningRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"analyzeMove": {
+"description": "Analyze moving a resource to a specified destination without kicking off the actual move. The analysis is best effort depending on the user's permissions of viewing different hierarchical policies and configurations. The policies and configuration are subject to change before the actual resource migration takes place.",
+"flatPath": "v1/{v1Id}/{v1Id1}:analyzeMove",
+"httpMethod": "GET",
+"id": "cloudasset.analyzeMove",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"destinationParent": {
+"description": "Required. Name of the Google Cloud folder or organization to reparent the target resource. The analysis will be performed against hypothetically moving the resource to this specified desitination parent. This can only be a folder number (such as \"folders/123\") or an organization number (such as \"organizations/123\").",
+"location": "query",
+"type": "string"
+},
+"resource": {
+"description": "Required. Name of the resource to perform the analysis against. Only Google Cloud projects are supported as of today. Hence, this can only be a project ID (such as \"projects/my-project-id\") or a project number (such as \"projects/12345\").",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Analysis view indicating what information should be included in the analysis response. If unspecified, the default view is FULL.",
+"enum": [
+"ANALYSIS_VIEW_UNSPECIFIED",
+"FULL",
+"BASIC"
+],
+"enumDescriptions": [
+"The default/unset value. The API will default to the FULL view.",
+"Full analysis including all level of impacts of the specified resource move.",
+"Basic analysis only including blockers which will prevent the specified resource move at runtime."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+resource}:analyzeMove",
+"response": {
+"$ref": "AnalyzeMoveResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"analyzeOrgPolicies": {
+"description": "Analyzes organization policies under a scope.",
+"flatPath": "v1/{v1Id}/{v1Id1}:analyzeOrgPolicies",
+"httpMethod": "GET",
+"id": "cloudasset.analyzeOrgPolicies",
+"parameterOrder": [
+"scope"
+],
+"parameters": {
+"constraint": {
+"description": "Required. The name of the constraint to analyze organization policies for. The response only contains analyzed organization policies for the provided constraint.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "The expression to filter AnalyzeOrgPoliciesResponse.org_policy_results. Filtering is currently available for bare literal values and the following fields: * consolidated_policy.attached_resource * consolidated_policy.rules.enforce When filtering by a specific field, the only supported operator is `=`. For example, filtering by consolidated_policy.attached_resource=\"//cloudresourcemanager.googleapis.com/folders/001\" will return all the Organization Policy results attached to \"folders/001\".",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return per page. If unspecified, AnalyzeOrgPoliciesResponse.org_policy_results will contain 20 items with a maximum of 200.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The pagination token to retrieve the next page.",
+"location": "query",
+"type": "string"
+},
+"scope": {
+"description": "Required. The organization to scope the request. Only organization policies within the scope will be analyzed. * organizations/{ORGANIZATION_NUMBER} (e.g., \"organizations/123456\")",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+scope}:analyzeOrgPolicies",
+"response": {
+"$ref": "AnalyzeOrgPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"analyzeOrgPolicyGovernedAssets": {
+"description": "Analyzes organization policies governed assets (Google Cloud resources or policies) under a scope. This RPC supports custom constraints and the following canned constraints: * constraints/ainotebooks.accessMode * constraints/ainotebooks.disableFileDownloads * constraints/ainotebooks.disableRootAccess * constraints/ainotebooks.disableTerminal * constraints/ainotebooks.environmentOptions * constraints/ainotebooks.requireAutoUpgradeSchedule * constraints/ainotebooks.restrictVpcNetworks * constraints/compute.disableGuestAttributesAccess * constraints/compute.disableInstanceDataAccessApis * constraints/compute.disableNestedVirtualization * constraints/compute.disableSerialPortAccess * constraints/compute.disableSerialPortLogging * constraints/compute.disableVpcExternalIpv6 * constraints/compute.requireOsLogin * constraints/compute.requireShieldedVm * constraints/compute.restrictLoadBalancerCreationForTypes * constraints/compute.restrictProtocolForwardingCreationForTypes * constraints/compute.restrictXpnProjectLienRemoval * constraints/compute.setNewProjectDefaultToZonalDNSOnly * constraints/compute.skipDefaultNetworkCreation * constraints/compute.trustedImageProjects * constraints/compute.vmCanIpForward * constraints/compute.vmExternalIpAccess * constraints/gcp.detailedAuditLoggingMode * constraints/gcp.resourceLocations * constraints/iam.allowedPolicyMemberDomains * constraints/iam.automaticIamGrantsForDefaultServiceAccounts * constraints/iam.disableServiceAccountCreation * constraints/iam.disableServiceAccountKeyCreation * constraints/iam.disableServiceAccountKeyUpload * constraints/iam.restrictCrossProjectServiceAccountLienRemoval * constraints/iam.serviceAccountKeyExpiryHours * constraints/resourcemanager.accessBoundaries * constraints/resourcemanager.allowedExportDestinations * constraints/sql.restrictAuthorizedNetworks * constraints/sql.restrictNoncompliantDiagnosticDataAccess * constraints/sql.restrictNoncompliantResourceCreation * constraints/sql.restrictPublicIp * constraints/storage.publicAccessPrevention * constraints/storage.restrictAuthTypes * constraints/storage.uniformBucketLevelAccess This RPC only returns either resources of types [supported by search APIs](https://cloud.google.com/asset-inventory/docs/supported-asset-types) or IAM policies.",
+"flatPath": "v1/{v1Id}/{v1Id1}:analyzeOrgPolicyGovernedAssets",
+"httpMethod": "GET",
+"id": "cloudasset.analyzeOrgPolicyGovernedAssets",
+"parameterOrder": [
+"scope"
+],
+"parameters": {
+"constraint": {
+"description": "Required. The name of the constraint to analyze governed assets for. The analysis only contains analyzed organization policies for the provided constraint.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "The expression to filter AnalyzeOrgPolicyGovernedAssetsResponse.governed_assets. For governed resources, filtering is currently available for bare literal values and the following fields: * governed_resource.project * governed_resource.folders * consolidated_policy.rules.enforce When filtering by `governed_resource.project` or `consolidated_policy.rules.enforce`, the only supported operator is `=`. When filtering by `governed_resource.folders`, the supported operators are `=` and `:`. For example, filtering by `governed_resource.project=\"projects/12345678\"` will return all the governed resources under \"projects/12345678\", including the project itself if applicable. For governed IAM policies, filtering is currently available for bare literal values and the following fields: * governed_iam_policy.project * governed_iam_policy.folders * consolidated_policy.rules.enforce When filtering by `governed_iam_policy.project` or `consolidated_policy.rules.enforce`, the only supported operator is `=`. When filtering by `governed_iam_policy.folders`, the supported operators are `=` and `:`. For example, filtering by `governed_iam_policy.folders:\"folders/12345678\"` will return all the governed IAM policies under \"folders/001\".",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return per page. If unspecified, AnalyzeOrgPolicyGovernedAssetsResponse.governed_assets will contain 100 items with a maximum of 200.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The pagination token to retrieve the next page.",
+"location": "query",
+"type": "string"
+},
+"scope": {
+"description": "Required. The organization to scope the request. Only organization policies within the scope will be analyzed. The output assets will also be limited to the ones governed by those in-scope organization policies. * organizations/{ORGANIZATION_NUMBER} (e.g., \"organizations/123456\")",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+scope}:analyzeOrgPolicyGovernedAssets",
+"response": {
+"$ref": "AnalyzeOrgPolicyGovernedAssetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"analyzeOrgPolicyGovernedContainers": {
+"description": "Analyzes organization policies governed containers (projects, folders or organization) under a scope.",
+"flatPath": "v1/{v1Id}/{v1Id1}:analyzeOrgPolicyGovernedContainers",
+"httpMethod": "GET",
+"id": "cloudasset.analyzeOrgPolicyGovernedContainers",
+"parameterOrder": [
+"scope"
+],
+"parameters": {
+"constraint": {
+"description": "Required. The name of the constraint to analyze governed containers for. The analysis only contains organization policies for the provided constraint.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "The expression to filter AnalyzeOrgPolicyGovernedContainersResponse.governed_containers. Filtering is currently available for bare literal values and the following fields: * parent * consolidated_policy.rules.enforce When filtering by a specific field, the only supported operator is `=`. For example, filtering by parent=\"//cloudresourcemanager.googleapis.com/folders/001\" will return all the containers under \"folders/001\".",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return per page. If unspecified, AnalyzeOrgPolicyGovernedContainersResponse.governed_containers will contain 100 items with a maximum of 200.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The pagination token to retrieve the next page.",
+"location": "query",
+"type": "string"
+},
+"scope": {
+"description": "Required. The organization to scope the request. Only organization policies within the scope will be analyzed. The output containers will also be limited to the ones governed by those in-scope organization policies. * organizations/{ORGANIZATION_NUMBER} (e.g., \"organizations/123456\")",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+scope}:analyzeOrgPolicyGovernedContainers",
+"response": {
+"$ref": "AnalyzeOrgPolicyGovernedContainersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"batchGetAssetsHistory": {
+"description": "Batch gets the update history of assets that overlap a time window. For IAM_POLICY content, this API outputs history when the asset and its attached IAM POLICY both exist. This can create gaps in the output history. Otherwise, this API outputs history with asset in both non-delete or deleted status. If a specified asset does not exist, this API returns an INVALID_ARGUMENT error.",
+"flatPath": "v1/{v1Id}/{v1Id1}:batchGetAssetsHistory",
+"httpMethod": "GET",
+"id": "cloudasset.batchGetAssetsHistory",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"assetNames": {
+"description": "A list of the full names of the assets. See: https://cloud.google.com/asset-inventory/docs/resource-name-format Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. The request becomes a no-op if the asset name list is empty, and the max size of the asset name list is 100 in one request.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"contentType": {
+"description": "Optional. The content type.",
+"enum": [
+"CONTENT_TYPE_UNSPECIFIED",
+"RESOURCE",
+"IAM_POLICY",
+"ORG_POLICY",
+"ACCESS_POLICY",
+"OS_INVENTORY",
+"RELATIONSHIP"
+],
+"enumDescriptions": [
+"Unspecified content type.",
+"Resource metadata.",
+"The actual IAM policy set on a resource.",
+"The organization policy set on an asset.",
+"The Access Context Manager policy set on an asset.",
+"The runtime OS Inventory information.",
+"The related resources."
+],
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The relative name of the root asset. It can only be an organization number (such as \"organizations/123\"), a project ID (such as \"projects/my-project-id\")\", or a project number (such as \"projects/12345\").",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+},
+"readTimeWindow.endTime": {
+"description": "End time of the time window (inclusive). If not specified, the current timestamp is used instead.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"readTimeWindow.startTime": {
+"description": "Start time of the time window (exclusive).",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"relationshipTypes": {
+"description": "Optional. A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationships' history on the [asset_names]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or if any of the [asset_names]'s types doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships' history on the [asset_names] or returns an error if any of the [asset_names]'s types has no relationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.",
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}:batchGetAssetsHistory",
+"response": {
+"$ref": "BatchGetAssetsHistoryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"exportAssets": {
+"description": "Exports assets with time and resource types to a given Cloud Storage location/BigQuery table. For Cloud Storage location destinations, the output format is newline-delimited JSON. Each line represents a google.cloud.asset.v1.Asset in the JSON format; for BigQuery table destinations, the output table stores the fields in asset Protobuf as columns. This API implements the google.longrunning.Operation API, which allows you to keep track of the export. We recommend intervals of at least 2 seconds with exponential retry to poll the export operation result. For regular-size resource parent, the export operation usually finishes within 5 minutes.",
+"flatPath": "v1/{v1Id}/{v1Id1}:exportAssets",
+"httpMethod": "POST",
+"id": "cloudasset.exportAssets",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The relative name of the root asset. This can only be an organization number (such as \"organizations/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\"), or a folder number (such as \"folders/123\").",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}:exportAssets",
+"request": {
+"$ref": "ExportAssetsRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"queryAssets": {
+"description": "Issue a job that queries assets using a SQL statement compatible with [BigQuery SQL](https://cloud.google.com/bigquery/docs/introduction-sql). If the query execution finishes within timeout and there's no pagination, the full query results will be returned in the `QueryAssetsResponse`. Otherwise, full query results can be obtained by issuing extra requests with the `job_reference` from the a previous `QueryAssets` call. Note, the query result has approximately 10 GB limitation enforced by [BigQuery](https://cloud.google.com/bigquery/docs/best-practices-performance-output). Queries return larger results will result in errors.",
+"flatPath": "v1/{v1Id}/{v1Id1}:queryAssets",
+"httpMethod": "POST",
+"id": "cloudasset.queryAssets",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The relative name of the root asset. This can only be an organization number (such as \"organizations/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\"), or a folder number (such as \"folders/123\"). Only assets belonging to the `parent` will be returned.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}:queryAssets",
+"request": {
+"$ref": "QueryAssetsRequest"
+},
+"response": {
+"$ref": "QueryAssetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchAllIamPolicies": {
+"description": "Searches all IAM policies within the specified scope, such as a project, folder, or organization. The caller must be granted the `cloudasset.assets.searchAllIamPolicies` permission on the desired scope, otherwise the request will be rejected.",
+"flatPath": "v1/{v1Id}/{v1Id1}:searchAllIamPolicies",
+"httpMethod": "GET",
+"id": "cloudasset.searchAllIamPolicies",
+"parameterOrder": [
+"scope"
+],
+"parameters": {
+"assetTypes": {
+"description": "Optional. A list of asset types that the IAM policies are attached to. If empty, it will search the IAM policies that are attached to all the asset types [supported by search APIs](https://cloud.google.com/asset-inventory/docs/supported-asset-types) Regular expressions are also supported. For example: * \"compute.googleapis.com.*\" snapshots IAM policies attached to asset type starts with \"compute.googleapis.com\". * \".*Instance\" snapshots IAM policies attached to asset type ends with \"Instance\". * \".*Instance.*\" snapshots IAM policies attached to asset type contains \"Instance\". See [RE2](https://github.com/google/re2/wiki/Syntax) for all supported regular expression syntax. If the regular expression does not match any supported asset type, an INVALID_ARGUMENT error will be returned.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. A comma-separated list of fields specifying the sorting order of the results. The default order is ascending. Add \" DESC\" after the field name to indicate descending order. Redundant space characters are ignored. Example: \"assetType DESC, resource\". Only singular primitive fields in the response are sortable: * resource * assetType * project All the other fields such as repeated fields (e.g., `folders`) and non-primitive fields (e.g., `policy`) are not supported.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The page size for search result pagination. Page size is capped at 500 even if a larger value is given. If set to zero or a negative value, server will pick an appropriate default. Returned results may be fewer than requested. When this happens, there could be more results as long as `next_page_token` is returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. If present, retrieve the next batch of results from the preceding call to this method. `page_token` must be the value of `next_page_token` from the previous response. The values of all other method parameters must be identical to those in the previous call.",
+"location": "query",
+"type": "string"
+},
+"query": {
+"description": "Optional. The query statement. See [how to construct a query](https://cloud.google.com/asset-inventory/docs/searching-iam-policies#how_to_construct_a_query) for more information. If not specified or empty, it will search all the IAM policies within the specified `scope`. Note that the query string is compared against each IAM policy binding, including its principals, roles, and IAM conditions. The returned IAM policies will only contain the bindings that match your query. To learn more about the IAM policy structure, see the [IAM policy documentation](https://cloud.google.com/iam/help/allow-policies/structure). Examples: * `policy:amy@gmail.com` to find IAM policy bindings that specify user \"amy@gmail.com\". * `policy:roles/compute.admin` to find IAM policy bindings that specify the Compute Admin role. * `policy:comp*` to find IAM policy bindings that contain \"comp\" as a prefix of any word in the binding. * `policy.role.permissions:storage.buckets.update` to find IAM policy bindings that specify a role containing \"storage.buckets.update\" permission. Note that if callers don't have `iam.roles.get` access to a role's included permissions, policy bindings that specify this role will be dropped from the search results. * `policy.role.permissions:upd*` to find IAM policy bindings that specify a role containing \"upd\" as a prefix of any word in the role permission. Note that if callers don't have `iam.roles.get` access to a role's included permissions, policy bindings that specify this role will be dropped from the search results. * `resource:organizations/123456` to find IAM policy bindings that are set on \"organizations/123456\". * `resource=//cloudresourcemanager.googleapis.com/projects/myproject` to find IAM policy bindings that are set on the project named \"myproject\". * `Important` to find IAM policy bindings that contain \"Important\" as a word in any of the searchable fields (except for the included permissions). * `resource:(instance1 OR instance2) policy:amy` to find IAM policy bindings that are set on resources \"instance1\" or \"instance2\" and also specify user \"amy\". * `roles:roles/compute.admin` to find IAM policy bindings that specify the Compute Admin role. * `memberTypes:user` to find IAM policy bindings that contain the principal type \"user\".",
+"location": "query",
+"type": "string"
+},
+"scope": {
+"description": "Required. A scope can be a project, a folder, or an organization. The search is limited to the IAM policies within the `scope`. The caller must be granted the [`cloudasset.assets.searchAllIamPolicies`](https://cloud.google.com/asset-inventory/docs/access-control#required_permissions) permission on the desired scope. The allowed values are: * projects/{PROJECT_ID} (e.g., \"projects/foo-bar\") * projects/{PROJECT_NUMBER} (e.g., \"projects/12345678\") * folders/{FOLDER_NUMBER} (e.g., \"folders/1234567\") * organizations/{ORGANIZATION_NUMBER} (e.g., \"organizations/123456\")",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+scope}:searchAllIamPolicies",
+"response": {
+"$ref": "SearchAllIamPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchAllResources": {
+"description": "Searches all Google Cloud resources within the specified scope, such as a project, folder, or organization. The caller must be granted the `cloudasset.assets.searchAllResources` permission on the desired scope, otherwise the request will be rejected.",
+"flatPath": "v1/{v1Id}/{v1Id1}:searchAllResources",
+"httpMethod": "GET",
+"id": "cloudasset.searchAllResources",
+"parameterOrder": [
+"scope"
+],
+"parameters": {
+"assetTypes": {
+"description": "Optional. A list of asset types that this request searches for. If empty, it will search all the asset types [supported by search APIs](https://cloud.google.com/asset-inventory/docs/supported-asset-types). Regular expressions are also supported. For example: * \"compute.googleapis.com.*\" snapshots resources whose asset type starts with \"compute.googleapis.com\". * \".*Instance\" snapshots resources whose asset type ends with \"Instance\". * \".*Instance.*\" snapshots resources whose asset type contains \"Instance\". See [RE2](https://github.com/google/re2/wiki/Syntax) for all supported regular expression syntax. If the regular expression does not match any supported asset type, an INVALID_ARGUMENT error will be returned.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. A comma-separated list of fields specifying the sorting order of the results. The default order is ascending. Add \" DESC\" after the field name to indicate descending order. Redundant space characters are ignored. Example: \"location DESC, name\". Only the following fields in the response are sortable: * name * assetType * project * displayName * description * location * createTime * updateTime * state * parentFullResourceName * parentAssetType",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The page size for search result pagination. Page size is capped at 500 even if a larger value is given. If set to zero or a negative value, server will pick an appropriate default. Returned results may be fewer than requested. When this happens, there could be more results as long as `next_page_token` is returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. `page_token` must be the value of `next_page_token` from the previous response. The values of all other method parameters, must be identical to those in the previous call.",
+"location": "query",
+"type": "string"
+},
+"query": {
+"description": "Optional. The query statement. See [how to construct a query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query) for more information. If not specified or empty, it will search all the resources within the specified `scope`. Examples: * `name:Important` to find Google Cloud resources whose name contains `Important` as a word. * `name=Important` to find the Google Cloud resource whose name is exactly `Important`. * `displayName:Impor*` to find Google Cloud resources whose display name contains `Impor` as a prefix of any word in the field. * `location:us-west*` to find Google Cloud resources whose location contains both `us` and `west` as prefixes. * `labels:prod` to find Google Cloud resources whose labels contain `prod` as a key or value. * `labels.env:prod` to find Google Cloud resources that have a label `env` and its value is `prod`. * `labels.env:*` to find Google Cloud resources that have a label `env`. * `tagKeys:env` to find Google Cloud resources that have directly attached tags where the [`TagKey.namespacedName`](https://cloud.google.com/resource-manager/reference/rest/v3/tagKeys#resource:-tagkey) contains `env`. * `tagValues:prod*` to find Google Cloud resources that have directly attached tags where the [`TagValue.namespacedName`](https://cloud.google.com/resource-manager/reference/rest/v3/tagValues#resource:-tagvalue) contains a word prefixed by `prod`. * `tagValueIds=tagValues/123` to find Google Cloud resources that have directly attached tags where the [`TagValue.name`](https://cloud.google.com/resource-manager/reference/rest/v3/tagValues#resource:-tagvalue) is exactly `tagValues/123`. * `effectiveTagKeys:env` to find Google Cloud resources that have directly attached or inherited tags where the [`TagKey.namespacedName`](https://cloud.google.com/resource-manager/reference/rest/v3/tagKeys#resource:-tagkey) contains `env`. * `effectiveTagValues:prod*` to find Google Cloud resources that have directly attached or inherited tags where the [`TagValue.namespacedName`](https://cloud.google.com/resource-manager/reference/rest/v3/tagValues#resource:-tagvalue) contains a word prefixed by `prod`. * `effectiveTagValueIds=tagValues/123` to find Google Cloud resources that have directly attached or inherited tags where the [`TagValue.name`](https://cloud.google.com/resource-manager/reference/rest/v3/tagValues#resource:-tagvalue) is exactly `tagValues/123`. * `kmsKey:key` to find Google Cloud resources encrypted with a customer-managed encryption key whose name contains `key` as a word. This field is deprecated. Use the `kmsKeys` field to retrieve Cloud KMS key information. * `kmsKeys:key` to find Google Cloud resources encrypted with customer-managed encryption keys whose name contains the word `key`. * `relationships:instance-group-1` to find Google Cloud resources that have relationships with `instance-group-1` in the related resource name. * `relationships:INSTANCE_TO_INSTANCEGROUP` to find Compute Engine instances that have relationships of type `INSTANCE_TO_INSTANCEGROUP`. * `relationships.INSTANCE_TO_INSTANCEGROUP:instance-group-1` to find Compute Engine instances that have relationships with `instance-group-1` in the Compute Engine instance group resource name, for relationship type `INSTANCE_TO_INSTANCEGROUP`. * `sccSecurityMarks.key=value` to find Cloud resources that are attached with security marks whose key is `key` and value is `value`. * `sccSecurityMarks.key:*` to find Cloud resources that are attached with security marks whose key is `key`. * `state:ACTIVE` to find Google Cloud resources whose state contains `ACTIVE` as a word. * `NOT state:ACTIVE` to find Google Cloud resources whose state doesn't contain `ACTIVE` as a word. * `createTime<1609459200` to find Google Cloud resources that were created before `2021-01-01 00:00:00 UTC`. `1609459200` is the epoch timestamp of `2021-01-01 00:00:00 UTC` in seconds. * `updateTime>1609459200` to find Google Cloud resources that were updated after `2021-01-01 00:00:00 UTC`. `1609459200` is the epoch timestamp of `2021-01-01 00:00:00 UTC` in seconds. * `Important` to find Google Cloud resources that contain `Important` as a word in any of the searchable fields. * `Impor*` to find Google Cloud resources that contain `Impor` as a prefix of any word in any of the searchable fields. * `Important location:(us-west1 OR global)` to find Google Cloud resources that contain `Important` as a word in any of the searchable fields and are also located in the `us-west1` region or the `global` location.",
+"location": "query",
+"type": "string"
+},
+"readMask": {
+"description": "Optional. A comma-separated list of fields that you want returned in the results. The following fields are returned by default if not specified: * `name` * `assetType` * `project` * `folders` * `organization` * `displayName` * `description` * `location` * `labels` * `tags` * `effectiveTags` * `networkTags` * `kmsKeys` * `createTime` * `updateTime` * `state` * `additionalAttributes` * `parentFullResourceName` * `parentAssetType` Some fields of large size, such as `versionedResources`, `attachedResources`, `effectiveTags` etc., are not returned by default, but you can specify them in the `read_mask` parameter if you want to include them. If `\"*\"` is specified, all [available fields](https://cloud.google.com/asset-inventory/docs/reference/rest/v1/TopLevel/searchAllResources#resourcesearchresult) are returned. Examples: `\"name,location\"`, `\"name,versionedResources\"`, `\"*\"`. Any invalid field path will trigger INVALID_ARGUMENT error.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"scope": {
+"description": "Required. A scope can be a project, a folder, or an organization. The search is limited to the resources within the `scope`. The caller must be granted the [`cloudasset.assets.searchAllResources`](https://cloud.google.com/asset-inventory/docs/access-control#required_permissions) permission on the desired scope. The allowed values are: * projects/{PROJECT_ID} (e.g., \"projects/foo-bar\") * projects/{PROJECT_NUMBER} (e.g., \"projects/12345678\") * folders/{FOLDER_NUMBER} (e.g., \"folders/1234567\") * organizations/{ORGANIZATION_NUMBER} (e.g., \"organizations/123456\")",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+scope}:searchAllResources",
+"response": {
+"$ref": "SearchAllResourcesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+},
+"revision": "20250104",
+"rootUrl": "https://cloudasset.googleapis.com/",
+"schemas": {
+"AccessSelector": {
+"description": "Specifies roles and/or permissions to analyze, to determine both the identities possessing them and the resources they control. If multiple values are specified, results will include roles or permissions matching any of them. The total number of roles and permissions should be equal or less than 10.",
+"id": "AccessSelector",
+"properties": {
+"permissions": {
+"description": "Optional. The permissions to appear in result.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"roles": {
+"description": "Optional. The roles to appear in result.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AnalyzeIamPolicyLongrunningMetadata": {
+"description": "Represents the metadata of the longrunning operation for the AnalyzeIamPolicyLongrunning RPC.",
+"id": "AnalyzeIamPolicyLongrunningMetadata",
+"properties": {
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzeIamPolicyLongrunningRequest": {
+"description": "A request message for AssetService.AnalyzeIamPolicyLongrunning.",
+"id": "AnalyzeIamPolicyLongrunningRequest",
+"properties": {
+"analysisQuery": {
+"$ref": "IamPolicyAnalysisQuery",
+"description": "Required. The request query."
+},
+"outputConfig": {
+"$ref": "IamPolicyAnalysisOutputConfig",
+"description": "Required. Output configuration indicating where the results will be output to."
+},
+"savedAnalysisQuery": {
+"description": "Optional. The name of a saved query, which must be in the format of: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id If both `analysis_query` and `saved_analysis_query` are provided, they will be merged together with the `saved_analysis_query` as base and the `analysis_query` as overrides. For more details of the merge behavior, refer to the [MergeFrom](https://developers.google.com/protocol-buffers/docs/reference/cpp/google.protobuf.message#Message.MergeFrom.details) doc. Note that you cannot override primitive fields with default value, such as 0 or empty string, etc., because we use proto3, which doesn't support field presence yet.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzeIamPolicyLongrunningResponse": {
+"description": "A response message for AssetService.AnalyzeIamPolicyLongrunning.",
+"id": "AnalyzeIamPolicyLongrunningResponse",
+"properties": {},
+"type": "object"
+},
+"AnalyzeIamPolicyResponse": {
+"description": "A response message for AssetService.AnalyzeIamPolicy.",
+"id": "AnalyzeIamPolicyResponse",
+"properties": {
+"fullyExplored": {
+"description": "Represents whether all entries in the main_analysis and service_account_impersonation_analysis have been fully explored to answer the query in the request.",
+"type": "boolean"
+},
+"mainAnalysis": {
+"$ref": "IamPolicyAnalysis",
+"description": "The main analysis that matches the original request."
+},
+"serviceAccountImpersonationAnalysis": {
+"description": "The service account impersonation analysis if IamPolicyAnalysisQuery.Options.analyze_service_account_impersonation is enabled.",
+"items": {
+"$ref": "IamPolicyAnalysis"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AnalyzeMoveResponse": {
+"description": "The response message for resource move analysis.",
+"id": "AnalyzeMoveResponse",
+"properties": {
+"moveAnalysis": {
+"description": "The list of analyses returned from performing the intended resource move analysis. The analysis is grouped by different Google Cloud services.",
+"items": {
+"$ref": "MoveAnalysis"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AnalyzeOrgPoliciesResponse": {
+"description": "The response message for AssetService.AnalyzeOrgPolicies.",
+"id": "AnalyzeOrgPoliciesResponse",
+"properties": {
+"constraint": {
+"$ref": "AnalyzerOrgPolicyConstraint",
+"description": "The definition of the constraint in the request."
+},
+"nextPageToken": {
+"description": "The page token to fetch the next page for AnalyzeOrgPoliciesResponse.org_policy_results.",
+"type": "string"
+},
+"orgPolicyResults": {
+"description": "The organization policies under the AnalyzeOrgPoliciesRequest.scope with the AnalyzeOrgPoliciesRequest.constraint.",
+"items": {
+"$ref": "OrgPolicyResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AnalyzeOrgPolicyGovernedAssetsResponse": {
+"description": "The response message for AssetService.AnalyzeOrgPolicyGovernedAssets.",
+"id": "AnalyzeOrgPolicyGovernedAssetsResponse",
+"properties": {
+"constraint": {
+"$ref": "AnalyzerOrgPolicyConstraint",
+"description": "The definition of the constraint in the request."
+},
+"governedAssets": {
+"description": "The list of the analyzed governed assets.",
+"items": {
+"$ref": "GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedAsset"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The page token to fetch the next page for AnalyzeOrgPolicyGovernedAssetsResponse.governed_assets.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzeOrgPolicyGovernedContainersResponse": {
+"description": "The response message for AssetService.AnalyzeOrgPolicyGovernedContainers.",
+"id": "AnalyzeOrgPolicyGovernedContainersResponse",
+"properties": {
+"constraint": {
+"$ref": "AnalyzerOrgPolicyConstraint",
+"description": "The definition of the constraint in the request."
+},
+"governedContainers": {
+"description": "The list of the analyzed governed containers.",
+"items": {
+"$ref": "GoogleCloudAssetV1GovernedContainer"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The page token to fetch the next page for AnalyzeOrgPolicyGovernedContainersResponse.governed_containers.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzerOrgPolicy": {
+"description": "This organization policy message is a modified version of the one defined in the Organization Policy system. This message contains several fields defined in the original organization policy with some new fields for analysis purpose.",
+"id": "AnalyzerOrgPolicy",
+"properties": {
+"appliedResource": {
+"description": "The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of an organization/folder/project resource where this organization policy applies to. For any user defined org policies, this field has the same value as the [attached_resource] field. Only for default policy, this field has the different value.",
+"type": "string"
+},
+"attachedResource": {
+"description": "The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of an organization/folder/project resource where this organization policy is set. Notice that some type of constraints are defined with default policy. This field will be empty for them.",
+"type": "string"
+},
+"inheritFromParent": {
+"description": "If `inherit_from_parent` is true, Rules set higher up in the hierarchy (up to the closest root) are inherited and present in the effective policy. If it is false, then no rules are inherited, and this policy becomes the effective root for evaluation.",
+"type": "boolean"
+},
+"reset": {
+"description": "Ignores policies set above this resource and restores the default behavior of the constraint at this resource. This field can be set in policies for either list or boolean constraints. If set, `rules` must be empty and `inherit_from_parent` must be set to false.",
+"type": "boolean"
+},
+"rules": {
+"description": "List of rules for this organization policy.",
+"items": {
+"$ref": "GoogleCloudAssetV1Rule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AnalyzerOrgPolicyConstraint": {
+"description": "The organization policy constraint definition.",
+"id": "AnalyzerOrgPolicyConstraint",
+"properties": {
+"customConstraint": {
+"$ref": "GoogleCloudAssetV1CustomConstraint",
+"description": "The definition of the custom constraint."
+},
+"googleDefinedConstraint": {
+"$ref": "GoogleCloudAssetV1Constraint",
+"description": "The definition of the canned constraint defined by Google."
+}
+},
+"type": "object"
+},
+"Asset": {
+"description": "An asset in Google Cloud. An asset can be any resource in the Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), a resource outside the Google Cloud resource hierarchy (such as Google Kubernetes Engine clusters and objects), or a policy (e.g. IAM policy), or a relationship (e.g. an INSTANCE_TO_INSTANCEGROUP relationship). See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"id": "Asset",
+"properties": {
+"accessLevel": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1AccessLevel",
+"description": "Also refer to the [access level user guide](https://cloud.google.com/access-context-manager/docs/overview#access-levels)."
+},
+"accessPolicy": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1AccessPolicy",
+"description": "Also refer to the [access policy user guide](https://cloud.google.com/access-context-manager/docs/overview#access-policies)."
+},
+"ancestors": {
+"description": "The ancestry path of an asset in Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), represented as a list of relative resource names. An ancestry path starts with the closest ancestor in the hierarchy and ends at root. If the asset is a project, folder, or organization, the ancestry path starts from the asset itself. Example: `[\"projects/123456789\", \"folders/5432\", \"organizations/1234\"]`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"assetType": {
+"description": "The type of the asset. Example: `compute.googleapis.com/Disk` See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"type": "string"
+},
+"iamPolicy": {
+"$ref": "Policy",
+"description": "A representation of the IAM policy set on a Google Cloud resource. There can be a maximum of one IAM policy set on any given resource. In addition, IAM policies inherit their granted access scope from any policies set on parent resources in the resource hierarchy. Therefore, the effectively policy is the union of both the policy set on this resource and each policy set on all of the resource's ancestry resource levels in the hierarchy. See [this topic](https://cloud.google.com/iam/help/allow-policies/inheritance) for more information."
+},
+"name": {
+"description": "The full name of the asset. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1` See [Resource names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information.",
+"type": "string"
+},
+"orgPolicy": {
+"description": "A representation of an [organization policy](https://cloud.google.com/resource-manager/docs/organization-policy/overview#organization_policy). There can be more than one organization policy with different constraints set on a given resource.",
+"items": {
+"$ref": "GoogleCloudOrgpolicyV1Policy"
+},
+"type": "array"
+},
+"osInventory": {
+"$ref": "Inventory",
+"description": "A representation of runtime OS Inventory information. See [this topic](https://cloud.google.com/compute/docs/instances/os-inventory-management) for more information."
+},
+"relatedAsset": {
+"$ref": "RelatedAsset",
+"description": "One related asset of the current asset."
+},
+"relatedAssets": {
+"$ref": "RelatedAssets",
+"deprecated": true,
+"description": "DEPRECATED. This field only presents for the purpose of backward-compatibility. The server will never generate responses with this field. The related assets of the asset of one relationship type. One asset only represents one type of relationship."
+},
+"resource": {
+"$ref": "Resource",
+"description": "A representation of the resource."
+},
+"servicePerimeter": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1ServicePerimeter",
+"description": "Also refer to the [service perimeter user guide](https://cloud.google.com/vpc-service-controls/docs/overview)."
+},
+"updateTime": {
+"description": "The last update timestamp of an asset. update_time is updated when create/update/delete operation is performed.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AssetEnrichment": {
+"description": "The enhanced metadata information for a resource.",
+"id": "AssetEnrichment",
+"properties": {
+"resourceOwners": {
+"$ref": "ResourceOwners",
+"description": "The resource owners for a resource. Note that this field only contains the members that have \"roles/owner\" role in the resource's IAM Policy."
+}
+},
+"type": "object"
+},
+"AttachedResource": {
+"description": "Attached resource representation, which is defined by the corresponding service provider. It represents an attached resource's payload.",
+"id": "AttachedResource",
+"properties": {
+"assetType": {
+"description": "The type of this attached resource. Example: `osconfig.googleapis.com/Inventory` You can find the supported attached asset types of each resource in this table: `https://cloud.google.com/asset-inventory/docs/supported-asset-types`",
+"type": "string"
+},
+"versionedResources": {
+"description": "Versioned resource representations of this attached resource. This is repeated because there could be multiple versions of the attached resource representations during version migration.",
+"items": {
+"$ref": "VersionedResource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"BatchGetAssetsHistoryResponse": {
+"description": "Batch get assets history response.",
+"id": "BatchGetAssetsHistoryResponse",
+"properties": {
+"assets": {
+"description": "A list of assets with valid time windows.",
+"items": {
+"$ref": "TemporalAsset"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BatchGetEffectiveIamPoliciesResponse": {
+"description": "A response message for AssetService.BatchGetEffectiveIamPolicies.",
+"id": "BatchGetEffectiveIamPoliciesResponse",
+"properties": {
+"policyResults": {
+"description": "The effective policies for a batch of resources. Note that the results order is the same as the order of BatchGetEffectiveIamPoliciesRequest.names. When a resource does not have any effective IAM policies, its corresponding policy_result will contain empty EffectiveIamPolicy.policies.",
+"items": {
+"$ref": "EffectiveIamPolicy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BigQueryDestination": {
+"description": "A BigQuery destination for exporting assets to.",
+"id": "BigQueryDestination",
+"properties": {
+"dataset": {
+"description": "Required. The BigQuery dataset in format \"projects/projectId/datasets/datasetId\", to which the snapshot result should be exported. If this dataset does not exist, the export call returns an INVALID_ARGUMENT error. Setting the `contentType` for `exportAssets` determines the [schema](/asset-inventory/docs/exporting-to-bigquery#bigquery-schema) of the BigQuery table. Setting `separateTablesPerAssetType` to `TRUE` also influences the schema.",
+"type": "string"
+},
+"force": {
+"description": "If the destination table already exists and this flag is `TRUE`, the table will be overwritten by the contents of assets snapshot. If the flag is `FALSE` or unset and the destination table already exists, the export call returns an INVALID_ARGUMEMT error.",
+"type": "boolean"
+},
+"partitionSpec": {
+"$ref": "PartitionSpec",
+"description": "[partition_spec] determines whether to export to partitioned table(s) and how to partition the data. If [partition_spec] is unset or [partition_spec.partition_key] is unset or `PARTITION_KEY_UNSPECIFIED`, the snapshot results will be exported to non-partitioned table(s). [force] will decide whether to overwrite existing table(s). If [partition_spec] is specified. First, the snapshot results will be written to partitioned table(s) with two additional timestamp columns, readTime and requestTime, one of which will be the partition key. Secondly, in the case when any destination table already exists, it will first try to update existing table's schema as necessary by appending additional columns. Then, if [force] is `TRUE`, the corresponding partition will be overwritten by the snapshot results (data in different partitions will remain intact); if [force] is unset or `FALSE`, it will append the data. An error will be returned if the schema update or data appension fails."
+},
+"separateTablesPerAssetType": {
+"description": "If this flag is `TRUE`, the snapshot results will be written to one or multiple tables, each of which contains results of one asset type. The [force] and [partition_spec] fields will apply to each of them. Field [table] will be concatenated with \"_\" and the asset type names (see https://cloud.google.com/asset-inventory/docs/supported-asset-types for supported asset types) to construct per-asset-type table names, in which all non-alphanumeric characters like \".\" and \"/\" will be substituted by \"_\". Example: if field [table] is \"mytable\" and snapshot results contain \"storage.googleapis.com/Bucket\" assets, the corresponding table name will be \"mytable_storage_googleapis_com_Bucket\". If any of these tables does not exist, a new table with the concatenated name will be created. When [content_type] in the ExportAssetsRequest is `RESOURCE`, the schema of each table will include RECORD-type columns mapped to the nested fields in the Asset.resource.data field of that asset type (up to the 15 nested level BigQuery supports (https://cloud.google.com/bigquery/docs/nested-repeated#limitations)). The fields in >15 nested levels will be stored in JSON format string as a child column of its parent RECORD column. If error occurs when exporting to any table, the whole export call will return an error but the export results that already succeed will persist. Example: if exporting to table_type_A succeeds when exporting to table_type_B fails during one export call, the results in table_type_A will persist and there will not be partial results persisting in a table.",
+"type": "boolean"
+},
+"table": {
+"description": "Required. The BigQuery table to which the snapshot result should be written. If this table does not exist, a new table with the given name will be created.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConditionContext": {
+"description": "The IAM conditions context.",
+"id": "ConditionContext",
+"properties": {
+"accessTime": {
+"description": "The hypothetical access timestamp to evaluate IAM conditions. Note that this value must not be earlier than the current time; otherwise, an INVALID_ARGUMENT error will be returned.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConditionEvaluation": {
+"description": "The condition evaluation.",
+"id": "ConditionEvaluation",
+"properties": {
+"evaluationValue": {
+"description": "The evaluation result.",
+"enum": [
+"EVALUATION_VALUE_UNSPECIFIED",
+"TRUE",
+"FALSE",
+"CONDITIONAL"
+],
+"enumDescriptions": [
+"Reserved for future use.",
+"The evaluation result is `true`.",
+"The evaluation result is `false`.",
+"The evaluation result is `conditional` when the condition expression contains variables that are either missing input values or have not been supported by Policy Analyzer yet."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateFeedRequest": {
+"description": "Create asset feed request.",
+"id": "CreateFeedRequest",
+"properties": {
+"feed": {
+"$ref": "Feed",
+"description": "Required. The feed details. The field `name` must be empty and it will be generated in the format of: projects/project_number/feeds/feed_id folders/folder_number/feeds/feed_id organizations/organization_number/feeds/feed_id"
+},
+"feedId": {
+"description": "Required. This is the client-assigned asset feed identifier and it needs to be unique under a specific parent project/folder/organization.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Date": {
+"description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+"id": "Date",
+"properties": {
+"day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"type": "integer"
+},
+"month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"type": "integer"
+},
+"year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"EffectiveIamPolicy": {
+"description": "The effective IAM policies on one resource.",
+"id": "EffectiveIamPolicy",
+"properties": {
+"fullResourceName": {
+"description": "The [full_resource_name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) for which the policies are computed. This is one of the BatchGetEffectiveIamPoliciesRequest.names the caller provides in the request.",
+"type": "string"
+},
+"policies": {
+"description": "The effective policies for the full_resource_name. These policies include the policy set on the full_resource_name and those set on its parents and ancestors up to the BatchGetEffectiveIamPoliciesRequest.scope. Note that these policies are not filtered according to the resource type of the full_resource_name. These policies are hierarchically ordered by PolicyInfo.attached_resource starting from full_resource_name itself to its parents and ancestors, such that policies[i]'s PolicyInfo.attached_resource is the child of policies[i+1]'s PolicyInfo.attached_resource, if policies[i+1] exists.",
+"items": {
+"$ref": "PolicyInfo"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"EffectiveTagDetails": {
+"description": "The effective tags and the ancestor resources from which they were inherited.",
+"id": "EffectiveTagDetails",
+"properties": {
+"attachedResource": {
+"description": "The [full resource name](https://cloud.google.com/asset-inventory/docs/resource-name-format) of the ancestor from which effective_tags are inherited, according to [tag inheritance](https://cloud.google.com/resource-manager/docs/tags/tags-overview#inheritance).",
+"type": "string"
+},
+"effectiveTags": {
+"description": "The effective tags inherited from the attached_resource. Note that tags with the same key but different values may attach to resources at a different hierarchy levels. The lower hierarchy tag value will overwrite the higher hierarchy tag value of the same tag key. In this case, the tag value at the higher hierarchy level will be removed. For more information, see [tag inheritance](https://cloud.google.com/resource-manager/docs/tags/tags-overview#inheritance).",
+"items": {
+"$ref": "Tag"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Explanation": {
+"description": "Explanation about the IAM policy search result.",
+"id": "Explanation",
+"properties": {
+"matchedPermissions": {
+"additionalProperties": {
+"$ref": "Permissions"
+},
+"description": "The map from roles to their included permissions that match the permission query (i.e., a query containing `policy.role.permissions:`). Example: if query `policy.role.permissions:compute.disk.get` matches a policy binding that contains owner role, the matched_permissions will be `{\"roles/owner\": [\"compute.disk.get\"]}`. The roles can also be found in the returned `policy` bindings. Note that the map is populated only for requests with permission queries.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"ExportAssetsRequest": {
+"description": "Export asset request.",
+"id": "ExportAssetsRequest",
+"properties": {
+"assetTypes": {
+"description": "A list of asset types to take a snapshot for. For example: \"compute.googleapis.com/Disk\". Regular expressions are also supported. For example: * \"compute.googleapis.com.*\" snapshots resources whose asset type starts with \"compute.googleapis.com\". * \".*Instance\" snapshots resources whose asset type ends with \"Instance\". * \".*Instance.*\" snapshots resources whose asset type contains \"Instance\". See [RE2](https://github.com/google/re2/wiki/Syntax) for all supported regular expression syntax. If the regular expression does not match any supported asset type, an INVALID_ARGUMENT error will be returned. If specified, only matching assets will be returned, otherwise, it will snapshot all asset types. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"contentType": {
+"description": "Asset content type. If not specified, no content but the asset name will be returned.",
+"enum": [
+"CONTENT_TYPE_UNSPECIFIED",
+"RESOURCE",
+"IAM_POLICY",
+"ORG_POLICY",
+"ACCESS_POLICY",
+"OS_INVENTORY",
+"RELATIONSHIP"
+],
+"enumDescriptions": [
+"Unspecified content type.",
+"Resource metadata.",
+"The actual IAM policy set on a resource.",
+"The organization policy set on an asset.",
+"The Access Context Manager policy set on an asset.",
+"The runtime OS Inventory information.",
+"The related resources."
+],
+"type": "string"
+},
+"outputConfig": {
+"$ref": "OutputConfig",
+"description": "Required. Output configuration indicating where the results will be output to."
+},
+"readTime": {
+"description": "Timestamp to take an asset snapshot. This can only be set to a timestamp between the current time and the current time minus 35 days (inclusive). If not specified, the current time will be used. Due to delays in resource data collection and indexing, there is a volatile window during which running the same query may get different results.",
+"format": "google-datetime",
+"type": "string"
+},
+"relationshipTypes": {
+"description": "A list of relationship types to export, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it snapshots specified relationships. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_types] or if any of the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it snapshots the supported relationships for all [asset_types] or returns an error if any of the [asset_types] has no relationship support. An unspecified asset types field means all supported asset_types. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Feed": {
+"description": "An asset feed used to export asset updates to a destinations. An asset feed filter controls what updates are exported. The asset feed must be created within a project, organization, or folder. Supported destinations are: Pub/Sub topics.",
+"id": "Feed",
+"properties": {
+"assetNames": {
+"description": "A list of the full names of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. For a list of the full names for supported asset types, see [Resource name format](/asset-inventory/docs/resource-name-format).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"assetTypes": {
+"description": "A list of types of the assets to receive updates. You must specify either or both of asset_names and asset_types. Only asset updates matching specified asset_names or asset_types are exported to the feed. Example: `\"compute.googleapis.com/Disk\"` For a list of all supported asset types, see [Supported asset types](/asset-inventory/docs/supported-asset-types).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"condition": {
+"$ref": "Expr",
+"description": "A condition which determines whether an asset update should be published. If specified, an asset will be returned only when the expression evaluates to true. When set, `expression` field in the `Expr` must be a valid [CEL expression] (https://github.com/google/cel-spec) on a TemporalAsset with name `temporal_asset`. Example: a Feed with expression (\"temporal_asset.deleted == true\") will only publish Asset deletions. Other fields of `Expr` are optional. See our [user guide](https://cloud.google.com/asset-inventory/docs/monitoring-asset-changes-with-condition) for detailed instructions."
+},
+"contentType": {
+"description": "Asset content type. If not specified, no content but the asset name and type will be returned.",
+"enum": [
+"CONTENT_TYPE_UNSPECIFIED",
+"RESOURCE",
+"IAM_POLICY",
+"ORG_POLICY",
+"ACCESS_POLICY",
+"OS_INVENTORY",
+"RELATIONSHIP"
+],
+"enumDescriptions": [
+"Unspecified content type.",
+"Resource metadata.",
+"The actual IAM policy set on a resource.",
+"The organization policy set on an asset.",
+"The Access Context Manager policy set on an asset.",
+"The runtime OS Inventory information.",
+"The related resources."
+],
+"type": "string"
+},
+"feedOutputConfig": {
+"$ref": "FeedOutputConfig",
+"description": "Required. Feed output configuration defining where the asset updates are published to."
+},
+"name": {
+"description": "Required. The format will be projects/{project_number}/feeds/{client-assigned_feed_identifier} or folders/{folder_number}/feeds/{client-assigned_feed_identifier} or organizations/{organization_number}/feeds/{client-assigned_feed_identifier} The client-assigned feed identifier must be unique within the parent project/folder/organization.",
+"type": "string"
+},
+"relationshipTypes": {
+"description": "A list of relationship types to output, for example: `INSTANCE_TO_INSTANCEGROUP`. This field should only be specified if content_type=RELATIONSHIP. * If specified: it outputs specified relationship updates on the [asset_names] or the [asset_types]. It returns an error if any of the [relationship_types] doesn't belong to the supported relationship types of the [asset_names] or [asset_types], or any of the [asset_names] or the [asset_types] doesn't belong to the source types of the [relationship_types]. * Otherwise: it outputs the supported relationships of the types of [asset_names] and [asset_types] or returns an error if any of the [asset_names] or the [asset_types] has no replationship support. See [Introduction to Cloud Asset Inventory](https://cloud.google.com/asset-inventory/docs/overview) for all supported asset types and relationship types.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"FeedOutputConfig": {
+"description": "Output configuration for asset feed destination.",
+"id": "FeedOutputConfig",
+"properties": {
+"pubsubDestination": {
+"$ref": "PubsubDestination",
+"description": "Destination on Pub/Sub."
+}
+},
+"type": "object"
+},
+"GcsDestination": {
+"description": "A Cloud Storage location.",
+"id": "GcsDestination",
+"properties": {
+"uri": {
+"description": "The URI of the Cloud Storage object. It's the same URI that is used by gsutil. Example: \"gs://bucket_name/object_name\". See [Viewing and Editing Object Metadata](https://cloud.google.com/storage/docs/viewing-editing-metadata) for more information. If the specified Cloud Storage object already exists and there is no [hold](https://cloud.google.com/storage/docs/object-holds), it will be overwritten with the exported result.",
+"type": "string"
+},
+"uriPrefix": {
+"description": "The URI prefix of all generated Cloud Storage objects. Example: \"gs://bucket_name/object_name_prefix\". Each object URI is in format: \"gs://bucket_name/object_name_prefix// and only contains assets for that type. starts from 0. Example: \"gs://bucket_name/object_name_prefix/compute.googleapis.com/Disk/0\" is the first shard of output objects containing all compute.googleapis.com/Disk assets. An INVALID_ARGUMENT error will be returned if file with the same name \"gs://bucket_name/object_name_prefix\" already exists.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1Access": {
+"description": "An IAM role or permission under analysis.",
+"id": "GoogleCloudAssetV1Access",
+"properties": {
+"analysisState": {
+"$ref": "IamPolicyAnalysisState",
+"description": "The analysis state of this access."
+},
+"permission": {
+"description": "The permission.",
+"type": "string"
+},
+"role": {
+"description": "The role.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1AccessControlList": {
+"description": "An access control list, derived from the above IAM policy binding, which contains a set of resources and accesses. May include one item from each set to compose an access control entry. NOTICE that there could be multiple access control lists for one IAM policy binding. The access control lists are created based on resource and access combinations. For example, assume we have the following cases in one IAM policy binding: - Permission P1 and P2 apply to resource R1 and R2; - Permission P3 applies to resource R2 and R3; This will result in the following access control lists: - AccessControlList 1: [R1, R2], [P1, P2] - AccessControlList 2: [R2, R3], [P3]",
+"id": "GoogleCloudAssetV1AccessControlList",
+"properties": {
+"accesses": {
+"description": "The accesses that match one of the following conditions: - The access_selector, if it is specified in request; - Otherwise, access specifiers reachable from the policy binding's role.",
+"items": {
+"$ref": "GoogleCloudAssetV1Access"
+},
+"type": "array"
+},
+"conditionEvaluation": {
+"$ref": "ConditionEvaluation",
+"description": "Condition evaluation for this AccessControlList, if there is a condition defined in the above IAM policy binding."
+},
+"resourceEdges": {
+"description": "Resource edges of the graph starting from the policy attached resource to any descendant resources. The Edge.source_node contains the full resource name of a parent resource and Edge.target_node contains the full resource name of a child resource. This field is present only if the output_resource_edges option is enabled in request.",
+"items": {
+"$ref": "GoogleCloudAssetV1Edge"
+},
+"type": "array"
+},
+"resources": {
+"description": "The resources that match one of the following conditions: - The resource_selector, if it is specified in request; - Otherwise, resources reachable from the policy attached resource.",
+"items": {
+"$ref": "GoogleCloudAssetV1Resource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedAsset": {
+"description": "Represents a Google Cloud asset(resource or IAM policy) governed by the organization policies of the AnalyzeOrgPolicyGovernedAssetsRequest.constraint.",
+"id": "GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedAsset",
+"properties": {
+"consolidatedPolicy": {
+"$ref": "AnalyzerOrgPolicy",
+"description": "The consolidated policy for the analyzed asset. The consolidated policy is computed by merging and evaluating AnalyzeOrgPolicyGovernedAssetsResponse.GovernedAsset.policy_bundle. The evaluation will respect the organization policy [hierarchy rules](https://cloud.google.com/resource-manager/docs/organization-policy/understanding-hierarchy)."
+},
+"governedIamPolicy": {
+"$ref": "GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedIamPolicy",
+"description": "An IAM policy governed by the organization policies of the AnalyzeOrgPolicyGovernedAssetsRequest.constraint."
+},
+"governedResource": {
+"$ref": "GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedResource",
+"description": "A Google Cloud resource governed by the organization policies of the AnalyzeOrgPolicyGovernedAssetsRequest.constraint."
+},
+"policyBundle": {
+"description": "The ordered list of all organization policies from the consolidated_policy.attached_resource to the scope specified in the request. If the constraint is defined with default policy, it will also appear in the list.",
+"items": {
+"$ref": "AnalyzerOrgPolicy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedIamPolicy": {
+"description": "The IAM policies governed by the organization policies of the AnalyzeOrgPolicyGovernedAssetsRequest.constraint.",
+"id": "GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedIamPolicy",
+"properties": {
+"assetType": {
+"description": "The asset type of the AnalyzeOrgPolicyGovernedAssetsResponse.GovernedIamPolicy.attached_resource. Example: `cloudresourcemanager.googleapis.com/Project` See [Cloud Asset Inventory Supported Asset Types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for all supported asset types.",
+"type": "string"
+},
+"attachedResource": {
+"description": "The full resource name of the resource on which this IAM policy is set. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. See [Cloud Asset Inventory Resource Name Format](https://cloud.google.com/asset-inventory/docs/resource-name-format) for more information.",
+"type": "string"
+},
+"folders": {
+"description": "The folder(s) that this IAM policy belongs to, in the format of folders/{FOLDER_NUMBER}. This field is available when the IAM policy belongs (directly or cascadingly) to one or more folders.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"organization": {
+"description": "The organization that this IAM policy belongs to, in the format of organizations/{ORGANIZATION_NUMBER}. This field is available when the IAM policy belongs (directly or cascadingly) to an organization.",
+"type": "string"
+},
+"policy": {
+"$ref": "Policy",
+"description": "The IAM policy directly set on the given resource."
+},
+"project": {
+"description": "The project that this IAM policy belongs to, in the format of projects/{PROJECT_NUMBER}. This field is available when the IAM policy belongs to a project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedResource": {
+"description": "The Google Cloud resources governed by the organization policies of the AnalyzeOrgPolicyGovernedAssetsRequest.constraint.",
+"id": "GoogleCloudAssetV1AnalyzeOrgPolicyGovernedAssetsResponseGovernedResource",
+"properties": {
+"assetType": {
+"description": "The asset type of the AnalyzeOrgPolicyGovernedAssetsResponse.GovernedResource.full_resource_name Example: `cloudresourcemanager.googleapis.com/Project` See [Cloud Asset Inventory Supported Asset Types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for all supported asset types.",
+"type": "string"
+},
+"effectiveTags": {
+"description": "The effective tags on this resource.",
+"items": {
+"$ref": "EffectiveTagDetails"
+},
+"type": "array"
+},
+"folders": {
+"description": "The folder(s) that this resource belongs to, in the format of folders/{FOLDER_NUMBER}. This field is available when the resource belongs (directly or cascadingly) to one or more folders.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"fullResourceName": {
+"description": "The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of the Google Cloud resource.",
+"type": "string"
+},
+"organization": {
+"description": "The organization that this resource belongs to, in the format of organizations/{ORGANIZATION_NUMBER}. This field is available when the resource belongs (directly or cascadingly) to an organization.",
+"type": "string"
+},
+"parent": {
+"description": "The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of the parent of AnalyzeOrgPolicyGovernedAssetsResponse.GovernedResource.full_resource_name.",
+"type": "string"
+},
+"project": {
+"description": "The project that this resource belongs to, in the format of projects/{PROJECT_NUMBER}. This field is available when the resource belongs to a project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1BigQueryDestination": {
+"description": "A BigQuery destination.",
+"id": "GoogleCloudAssetV1BigQueryDestination",
+"properties": {
+"dataset": {
+"description": "Required. The BigQuery dataset in format \"projects/projectId/datasets/datasetId\", to which the analysis results should be exported. If this dataset does not exist, the export call will return an INVALID_ARGUMENT error.",
+"type": "string"
+},
+"partitionKey": {
+"description": "The partition key for BigQuery partitioned table.",
+"enum": [
+"PARTITION_KEY_UNSPECIFIED",
+"REQUEST_TIME"
+],
+"enumDescriptions": [
+"Unspecified partition key. Tables won't be partitioned using this option.",
+"The time when the request is received. If specified as partition key, the result table(s) is partitoned by the RequestTime column, an additional timestamp column representing when the request was received."
+],
+"type": "string"
+},
+"tablePrefix": {
+"description": "Required. The prefix of the BigQuery tables to which the analysis results will be written. Tables will be created based on this table_prefix if not exist: * _analysis table will contain export operation's metadata. * _analysis_result will contain all the IamPolicyAnalysisResult. When [partition_key] is specified, both tables will be partitioned based on the [partition_key].",
+"type": "string"
+},
+"writeDisposition": {
+"description": "Optional. Specifies the action that occurs if the destination table or partition already exists. The following values are supported: * WRITE_TRUNCATE: If the table or partition already exists, BigQuery overwrites the entire table or all the partitions data. * WRITE_APPEND: If the table or partition already exists, BigQuery appends the data to the table or the latest partition. * WRITE_EMPTY: If the table already exists and contains data, an error is returned. The default value is WRITE_APPEND. Each action is atomic and only occurs if BigQuery is able to complete the job successfully. Details are at https://cloud.google.com/bigquery/docs/loading-data-local#appending_to_or_overwriting_a_table_using_a_local_file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1BooleanConstraint": {
+"description": "A `Constraint` that is either enforced or not. For example a constraint `constraints/compute.disableSerialPortAccess`. If it is enforced on a VM instance, serial port connections will not be opened to that instance.",
+"id": "GoogleCloudAssetV1BooleanConstraint",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudAssetV1Constraint": {
+"description": "The definition of a constraint.",
+"id": "GoogleCloudAssetV1Constraint",
+"properties": {
+"booleanConstraint": {
+"$ref": "GoogleCloudAssetV1BooleanConstraint",
+"description": "Defines this constraint as being a BooleanConstraint."
+},
+"constraintDefault": {
+"description": "The evaluation behavior of this constraint in the absence of 'Policy'.",
+"enum": [
+"CONSTRAINT_DEFAULT_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"This is only used for distinguishing unset values and should never be used.",
+"Indicate that all values are allowed for list constraints. Indicate that enforcement is off for boolean constraints.",
+"Indicate that all values are denied for list constraints. Indicate that enforcement is on for boolean constraints."
+],
+"type": "string"
+},
+"description": {
+"description": "Detailed description of what this `Constraint` controls as well as how and where it is enforced.",
+"type": "string"
+},
+"displayName": {
+"description": "The human readable name of the constraint.",
+"type": "string"
+},
+"listConstraint": {
+"$ref": "GoogleCloudAssetV1ListConstraint",
+"description": "Defines this constraint as being a ListConstraint."
+},
+"name": {
+"description": "The unique name of the constraint. Format of the name should be * `constraints/{constraint_name}` For example, `constraints/compute.disableSerialPortAccess`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1CustomConstraint": {
+"description": "The definition of a custom constraint.",
+"id": "GoogleCloudAssetV1CustomConstraint",
+"properties": {
+"actionType": {
+"description": "Allow or deny type.",
+"enum": [
+"ACTION_TYPE_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"Unspecified. Will results in user error.",
+"Allowed action type.",
+"Deny action type."
+],
+"type": "string"
+},
+"condition": {
+"description": "Organization Policy condition/expression. For example: `resource.instanceName.matches(\"[production|test]_.*_(\\d)+\")'` or, `resource.management.auto_upgrade == true`",
+"type": "string"
+},
+"description": {
+"description": "Detailed information about this custom policy constraint.",
+"type": "string"
+},
+"displayName": {
+"description": "One line display name for the UI.",
+"type": "string"
+},
+"methodTypes": {
+"description": "All the operations being applied for this constraint.",
+"items": {
+"enum": [
+"METHOD_TYPE_UNSPECIFIED",
+"CREATE",
+"UPDATE",
+"DELETE",
+"REMOVE_GRANT",
+"GOVERN_TAGS"
+],
+"enumDescriptions": [
+"Unspecified. Will results in user error.",
+"Constraint applied when creating the resource.",
+"Constraint applied when updating the resource.",
+"Constraint applied when deleting the resource.",
+"Constraint applied when removing an IAM grant.",
+"Constraint applied when enforcing forced tagging."
+],
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example : \"organizations/123/customConstraints/custom.createOnlyE2TypeVms\"",
+"type": "string"
+},
+"resourceTypes": {
+"description": "The Resource Instance type on which this policy applies to. Format will be of the form : \"/\" Example: * `compute.googleapis.com/Instance`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1Edge": {
+"description": "A directional edge.",
+"id": "GoogleCloudAssetV1Edge",
+"properties": {
+"sourceNode": {
+"description": "The source node of the edge. For example, it could be a full resource name for a resource node or an email of an identity.",
+"type": "string"
+},
+"targetNode": {
+"description": "The target node of the edge. For example, it could be a full resource name for a resource node or an email of an identity.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1GcsDestination": {
+"description": "A Cloud Storage location.",
+"id": "GoogleCloudAssetV1GcsDestination",
+"properties": {
+"uri": {
+"description": "Required. The URI of the Cloud Storage object. It's the same URI that is used by gsutil. Example: \"gs://bucket_name/object_name\". See [Viewing and Editing Object Metadata](https://cloud.google.com/storage/docs/viewing-editing-metadata) for more information. If the specified Cloud Storage object already exists and there is no [hold](https://cloud.google.com/storage/docs/object-holds), it will be overwritten with the analysis result.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1GovernedContainer": {
+"description": "The organization/folder/project resource governed by organization policies of AnalyzeOrgPolicyGovernedContainersRequest.constraint.",
+"id": "GoogleCloudAssetV1GovernedContainer",
+"properties": {
+"consolidatedPolicy": {
+"$ref": "AnalyzerOrgPolicy",
+"description": "The consolidated organization policy for the analyzed resource. The consolidated organization policy is computed by merging and evaluating AnalyzeOrgPolicyGovernedContainersResponse.GovernedContainer.policy_bundle. The evaluation will respect the organization policy [hierarchy rules](https://cloud.google.com/resource-manager/docs/organization-policy/understanding-hierarchy)."
+},
+"effectiveTags": {
+"description": "The effective tags on this resource.",
+"items": {
+"$ref": "EffectiveTagDetails"
+},
+"type": "array"
+},
+"folders": {
+"description": "The folder(s) that this resource belongs to, in the format of folders/{FOLDER_NUMBER}. This field is available when the resource belongs (directly or cascadingly) to one or more folders.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"fullResourceName": {
+"description": "The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of an organization/folder/project resource.",
+"type": "string"
+},
+"organization": {
+"description": "The organization that this resource belongs to, in the format of organizations/{ORGANIZATION_NUMBER}. This field is available when the resource belongs (directly or cascadingly) to an organization.",
+"type": "string"
+},
+"parent": {
+"description": "The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of the parent of AnalyzeOrgPolicyGovernedContainersResponse.GovernedContainer.full_resource_name.",
+"type": "string"
+},
+"policyBundle": {
+"description": "The ordered list of all organization policies from the consolidated_policy.attached_resource. to the scope specified in the request. If the constraint is defined with default policy, it will also appear in the list.",
+"items": {
+"$ref": "AnalyzerOrgPolicy"
+},
+"type": "array"
+},
+"project": {
+"description": "The project that this resource belongs to, in the format of projects/{PROJECT_NUMBER}. This field is available when the resource belongs to a project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1Identity": {
+"description": "An identity under analysis.",
+"id": "GoogleCloudAssetV1Identity",
+"properties": {
+"analysisState": {
+"$ref": "IamPolicyAnalysisState",
+"description": "The analysis state of this identity."
+},
+"name": {
+"description": "The identity of members, formatted as appear in an [IAM policy binding](https://cloud.google.com/iam/reference/rest/v1/Binding). For example, they might be formatted like the following: - user:foo@google.com - group:group1@google.com - serviceAccount:s1@prj1.iam.gserviceaccount.com - projectOwner:some_project_id - domain:google.com - allUsers",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1IdentityList": {
+"description": "The identities and group edges.",
+"id": "GoogleCloudAssetV1IdentityList",
+"properties": {
+"groupEdges": {
+"description": "Group identity edges of the graph starting from the binding's group members to any node of the identities. The Edge.source_node contains a group, such as `group:parent@google.com`. The Edge.target_node contains a member of the group, such as `group:child@google.com` or `user:foo@google.com`. This field is present only if the output_group_edges option is enabled in request.",
+"items": {
+"$ref": "GoogleCloudAssetV1Edge"
+},
+"type": "array"
+},
+"identities": {
+"description": "Only the identities that match one of the following conditions will be presented: - The identity_selector, if it is specified in request; - Otherwise, identities reachable from the policy binding's members.",
+"items": {
+"$ref": "GoogleCloudAssetV1Identity"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1ListConstraint": {
+"description": "A `Constraint` that allows or disallows a list of string values, which are configured by an organization's policy administrator with a `Policy`.",
+"id": "GoogleCloudAssetV1ListConstraint",
+"properties": {
+"supportsIn": {
+"description": "Indicates whether values grouped into categories can be used in `Policy.allowed_values` and `Policy.denied_values`. For example, `\"in:Python\"` would match any value in the 'Python' group.",
+"type": "boolean"
+},
+"supportsUnder": {
+"description": "Indicates whether subtrees of Cloud Resource Manager resource hierarchy can be used in `Policy.allowed_values` and `Policy.denied_values`. For example, `\"under:folders/123\"` would match any resource under the 'folders/123' folder.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1QueryAssetsOutputConfigBigQueryDestination": {
+"description": "BigQuery destination.",
+"id": "GoogleCloudAssetV1QueryAssetsOutputConfigBigQueryDestination",
+"properties": {
+"dataset": {
+"description": "Required. The BigQuery dataset where the query results will be saved. It has the format of \"projects/{projectId}/datasets/{datasetId}\".",
+"type": "string"
+},
+"table": {
+"description": "Required. The BigQuery table where the query results will be saved. If this table does not exist, a new table with the given name will be created.",
+"type": "string"
+},
+"writeDisposition": {
+"description": "Specifies the action that occurs if the destination table or partition already exists. The following values are supported: * WRITE_TRUNCATE: If the table or partition already exists, BigQuery overwrites the entire table or all the partitions data. * WRITE_APPEND: If the table or partition already exists, BigQuery appends the data to the table or the latest partition. * WRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result. The default value is WRITE_EMPTY.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1Resource": {
+"description": "A Google Cloud resource under analysis.",
+"id": "GoogleCloudAssetV1Resource",
+"properties": {
+"analysisState": {
+"$ref": "IamPolicyAnalysisState",
+"description": "The analysis state of this resource."
+},
+"fullResourceName": {
+"description": "The [full resource name](https://cloud.google.com/asset-inventory/docs/resource-name-format)",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1Rule": {
+"description": "This rule message is a customized version of the one defined in the Organization Policy system. In addition to the fields defined in the original organization policy, it contains additional field(s) under specific circumstances to support analysis results.",
+"id": "GoogleCloudAssetV1Rule",
+"properties": {
+"allowAll": {
+"description": "Setting this to true means that all values are allowed. This field can be set only in Policies for list constraints.",
+"type": "boolean"
+},
+"condition": {
+"$ref": "Expr",
+"description": "The evaluating condition for this rule."
+},
+"conditionEvaluation": {
+"$ref": "ConditionEvaluation",
+"description": "The condition evaluation result for this rule. Only populated if it meets all the following criteria: * There is a condition defined for this rule. * This rule is within AnalyzeOrgPolicyGovernedContainersResponse.GovernedContainer.consolidated_policy, or AnalyzeOrgPolicyGovernedAssetsResponse.GovernedAsset.consolidated_policy when the AnalyzeOrgPolicyGovernedAssetsResponse.GovernedAsset has AnalyzeOrgPolicyGovernedAssetsResponse.GovernedAsset.governed_resource."
+},
+"denyAll": {
+"description": "Setting this to true means that all values are denied. This field can be set only in Policies for list constraints.",
+"type": "boolean"
+},
+"enforce": {
+"description": "If `true`, then the `Policy` is enforced. If `false`, then any configuration is acceptable. This field can be set only in Policies for boolean constraints.",
+"type": "boolean"
+},
+"values": {
+"$ref": "GoogleCloudAssetV1StringValues",
+"description": "List of values to be used for this policy rule. This field can be set only in policies for list constraints."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1StringValues": {
+"description": "The string values for the list constraints.",
+"id": "GoogleCloudAssetV1StringValues",
+"properties": {
+"allowedValues": {
+"description": "List of values allowed at this resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"deniedValues": {
+"description": "List of values denied at this resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1p7beta1Asset": {
+"description": "An asset in Google Cloud. An asset can be any resource in the Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), a resource outside the Google Cloud resource hierarchy (such as Google Kubernetes Engine clusters and objects), or a policy (e.g. IAM policy). See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"id": "GoogleCloudAssetV1p7beta1Asset",
+"properties": {
+"accessLevel": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1AccessLevel",
+"description": "Please also refer to the [access level user guide](https://cloud.google.com/access-context-manager/docs/overview#access-levels)."
+},
+"accessPolicy": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1AccessPolicy",
+"description": "Please also refer to the [access policy user guide](https://cloud.google.com/access-context-manager/docs/overview#access-policies)."
+},
+"ancestors": {
+"description": "The ancestry path of an asset in Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), represented as a list of relative resource names. An ancestry path starts with the closest ancestor in the hierarchy and ends at root. If the asset is a project, folder, or organization, the ancestry path starts from the asset itself. Example: `[\"projects/123456789\", \"folders/5432\", \"organizations/1234\"]`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"assetType": {
+"description": "The type of the asset. Example: `compute.googleapis.com/Disk` See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"type": "string"
+},
+"iamPolicy": {
+"$ref": "Policy",
+"description": "A representation of the IAM policy set on a Google Cloud resource. There can be a maximum of one IAM policy set on any given resource. In addition, IAM policies inherit their granted access scope from any policies set on parent resources in the resource hierarchy. Therefore, the effectively policy is the union of both the policy set on this resource and each policy set on all of the resource's ancestry resource levels in the hierarchy. See [this topic](https://cloud.google.com/iam/help/allow-policies/inheritance) for more information."
+},
+"name": {
+"description": "The full name of the asset. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1` See [Resource names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information.",
+"type": "string"
+},
+"orgPolicy": {
+"description": "A representation of an [organization policy](https://cloud.google.com/resource-manager/docs/organization-policy/overview#organization_policy). There can be more than one organization policy with different constraints set on a given resource.",
+"items": {
+"$ref": "GoogleCloudOrgpolicyV1Policy"
+},
+"type": "array"
+},
+"relatedAssets": {
+"$ref": "GoogleCloudAssetV1p7beta1RelatedAssets",
+"description": "The related assets of the asset of one relationship type. One asset only represents one type of relationship."
+},
+"resource": {
+"$ref": "GoogleCloudAssetV1p7beta1Resource",
+"description": "A representation of the resource."
+},
+"servicePerimeter": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1ServicePerimeter",
+"description": "Please also refer to the [service perimeter user guide](https://cloud.google.com/vpc-service-controls/docs/overview)."
+},
+"updateTime": {
+"description": "The last update timestamp of an asset. update_time is updated when create/update/delete operation is performed.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1p7beta1RelatedAsset": {
+"description": "An asset identify in Google Cloud which contains its name, type and ancestors. An asset can be any resource in the Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), a resource outside the Google Cloud resource hierarchy (such as Google Kubernetes Engine clusters and objects), or a policy (e.g. IAM policy). See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"id": "GoogleCloudAssetV1p7beta1RelatedAsset",
+"properties": {
+"ancestors": {
+"description": "The ancestors of an asset in Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), represented as a list of relative resource names. An ancestry path starts with the closest ancestor in the hierarchy and ends at root. Example: `[\"projects/123456789\", \"folders/5432\", \"organizations/1234\"]`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"asset": {
+"description": "The full name of the asset. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1` See [Resource names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information.",
+"type": "string"
+},
+"assetType": {
+"description": "The type of the asset. Example: `compute.googleapis.com/Disk` See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1p7beta1RelatedAssets": {
+"description": "The detailed related assets with the `relationship_type`.",
+"id": "GoogleCloudAssetV1p7beta1RelatedAssets",
+"properties": {
+"assets": {
+"description": "The peer resources of the relationship.",
+"items": {
+"$ref": "GoogleCloudAssetV1p7beta1RelatedAsset"
+},
+"type": "array"
+},
+"relationshipAttributes": {
+"$ref": "GoogleCloudAssetV1p7beta1RelationshipAttributes",
+"description": "The detailed relation attributes."
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1p7beta1RelationshipAttributes": {
+"description": "The relationship attributes which include `type`, `source_resource_type`, `target_resource_type` and `action`.",
+"id": "GoogleCloudAssetV1p7beta1RelationshipAttributes",
+"properties": {
+"action": {
+"description": "The detail of the relationship, e.g. `contains`, `attaches`",
+"type": "string"
+},
+"sourceResourceType": {
+"description": "The source asset type. Example: `compute.googleapis.com/Instance`",
+"type": "string"
+},
+"targetResourceType": {
+"description": "The target asset type. Example: `compute.googleapis.com/Disk`",
+"type": "string"
+},
+"type": {
+"description": "The unique identifier of the relationship type. Example: `INSTANCE_TO_INSTANCEGROUP`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudAssetV1p7beta1Resource": {
+"description": "A representation of a Google Cloud resource.",
+"id": "GoogleCloudAssetV1p7beta1Resource",
+"properties": {
+"data": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The content of the resource, in which some sensitive fields are removed and may not be present.",
+"type": "object"
+},
+"discoveryDocumentUri": {
+"description": "The URL of the discovery document containing the resource's JSON schema. Example: `https://www.googleapis.com/discovery/v1/apis/compute/v1/rest` This value is unspecified for resources that do not have an API based on a discovery document, such as Cloud Bigtable.",
+"type": "string"
+},
+"discoveryName": {
+"description": "The JSON schema name listed in the discovery document. Example: `Project` This value is unspecified for resources that do not have an API based on a discovery document, such as Cloud Bigtable.",
+"type": "string"
+},
+"location": {
+"description": "The location of the resource in Google Cloud, such as its zone and region. For more information, see https://cloud.google.com/about/locations/.",
+"type": "string"
+},
+"parent": {
+"description": "The full name of the immediate parent of this resource. See [Resource Names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information. For Google Cloud assets, this value is the parent resource defined in the [IAM policy hierarchy](https://cloud.google.com/iam/docs/overview#policy_hierarchy). Example: `//cloudresourcemanager.googleapis.com/projects/my_project_123` For third-party assets, this field may be set differently.",
+"type": "string"
+},
+"resourceUrl": {
+"description": "The REST URL for accessing the resource. An HTTP `GET` request using this URL returns the resource itself. Example: `https://cloudresourcemanager.googleapis.com/v1/projects/my-project-123` This value is unspecified for resources without a REST API.",
+"type": "string"
+},
+"version": {
+"description": "The API version. Example: `v1`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV1BooleanPolicy": {
+"description": "Used in `policy_type` to specify how `boolean_policy` will behave at this resource.",
+"id": "GoogleCloudOrgpolicyV1BooleanPolicy",
+"properties": {
+"enforced": {
+"description": "If `true`, then the `Policy` is enforced. If `false`, then any configuration is acceptable. Suppose you have a `Constraint` `constraints/compute.disableSerialPortAccess` with `constraint_default` set to `ALLOW`. A `Policy` for that `Constraint` exhibits the following behavior: - If the `Policy` at this resource has enforced set to `false`, serial port connection attempts will be allowed. - If the `Policy` at this resource has enforced set to `true`, serial port connection attempts will be refused. - If the `Policy` at this resource is `RestoreDefault`, serial port connection attempts will be allowed. - If no `Policy` is set at this resource or anywhere higher in the resource hierarchy, serial port connection attempts will be allowed. - If no `Policy` is set at this resource, but one exists higher in the resource hierarchy, the behavior is as if the`Policy` were set at this resource. The following examples demonstrate the different possible layerings: Example 1 (nearest `Constraint` wins): `organizations/foo` has a `Policy` with: {enforced: false} `projects/bar` has no `Policy` set. The constraint at `projects/bar` and `organizations/foo` will not be enforced. Example 2 (enforcement gets replaced): `organizations/foo` has a `Policy` with: {enforced: false} `projects/bar` has a `Policy` with: {enforced: true} The constraint at `organizations/foo` is not enforced. The constraint at `projects/bar` is enforced. Example 3 (RestoreDefault): `organizations/foo` has a `Policy` with: {enforced: true} `projects/bar` has a `Policy` with: {RestoreDefault: {}} The constraint at `organizations/foo` is enforced. The constraint at `projects/bar` is not enforced, because `constraint_default` for the `Constraint` is `ALLOW`.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV1ListPolicy": {
+"description": "Used in `policy_type` to specify how `list_policy` behaves at this resource. `ListPolicy` can define specific values and subtrees of Cloud Resource Manager resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed or denied by setting the `allowed_values` and `denied_values` fields. This is achieved by using the `under:` and optional `is:` prefixes. The `under:` prefix is used to denote resource subtree values. The `is:` prefix is used to denote specific values, and is required only if the value contains a \":\". Values prefixed with \"is:\" are treated the same as values with no prefix. Ancestry subtrees must be in one of the following formats: - \"projects/\", e.g. \"projects/tokyo-rain-123\" - \"folders/\", e.g. \"folders/1234\" - \"organizations/\", e.g. \"organizations/1234\" The `supports_under` field of the associated `Constraint` defines whether ancestry prefixes can be used. You can set `allowed_values` and `denied_values` in the same `Policy` if `all_values` is `ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all values. If `all_values` is set to either `ALLOW` or `DENY`, `allowed_values` and `denied_values` must be unset.",
+"id": "GoogleCloudOrgpolicyV1ListPolicy",
+"properties": {
+"allValues": {
+"description": "The policy all_values state.",
+"enum": [
+"ALL_VALUES_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"Indicates that allowed_values or denied_values must be set.",
+"A policy with this set allows all values.",
+"A policy with this set denies all values."
+],
+"type": "string"
+},
+"allowedValues": {
+"description": "List of values allowed at this resource. Can only be set if `all_values` is set to `ALL_VALUES_UNSPECIFIED`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"deniedValues": {
+"description": "List of values denied at this resource. Can only be set if `all_values` is set to `ALL_VALUES_UNSPECIFIED`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"inheritFromParent": {
+"description": "Determines the inheritance behavior for this `Policy`. By default, a `ListPolicy` set at a resource supersedes any `Policy` set anywhere up the resource hierarchy. However, if `inherit_from_parent` is set to `true`, then the values from the effective `Policy` of the parent resource are inherited, meaning the values set in this `Policy` are added to the values inherited up the hierarchy. Setting `Policy` hierarchies that inherit both allowed values and denied values isn't recommended in most circumstances to keep the configuration simple and understandable. However, it is possible to set a `Policy` with `allowed_values` set that inherits a `Policy` with `denied_values` set. In this case, the values that are allowed must be in `allowed_values` and not present in `denied_values`. For example, suppose you have a `Constraint` `constraints/serviceuser.services`, which has a `constraint_type` of `list_constraint`, and with `constraint_default` set to `ALLOW`. Suppose that at the Organization level, a `Policy` is applied that restricts the allowed API activations to {`E1`, `E2`}. Then, if a `Policy` is applied to a project below the Organization that has `inherit_from_parent` set to `false` and field all_values set to DENY, then an attempt to activate any API will be denied. The following examples demonstrate different possible layerings for `projects/bar` parented by `organizations/foo`: Example 1 (no inherited values): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values:\"E2\"} `projects/bar` has `inherit_from_parent` `false` and values: {allowed_values: \"E3\" allowed_values: \"E4\"} The accepted values at `organizations/foo` are `E1`, `E2`. The accepted values at `projects/bar` are `E3`, and `E4`. Example 2 (inherited values): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values:\"E2\"} `projects/bar` has a `Policy` with values: {value: \"E3\" value: \"E4\" inherit_from_parent: true} The accepted values at `organizations/foo` are `E1`, `E2`. The accepted values at `projects/bar` are `E1`, `E2`, `E3`, and `E4`. Example 3 (inheriting both allowed and denied values): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values: \"E2\"} `projects/bar` has a `Policy` with: {denied_values: \"E1\"} The accepted values at `organizations/foo` are `E1`, `E2`. The value accepted at `projects/bar` is `E2`. Example 4 (RestoreDefault): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values:\"E2\"} `projects/bar` has a `Policy` with values: {RestoreDefault: {}} The accepted values at `organizations/foo` are `E1`, `E2`. The accepted values at `projects/bar` are either all or none depending on the value of `constraint_default` (if `ALLOW`, all; if `DENY`, none). Example 5 (no policy inherits parent policy): `organizations/foo` has no `Policy` set. `projects/bar` has no `Policy` set. The accepted values at both levels are either all or none depending on the value of `constraint_default` (if `ALLOW`, all; if `DENY`, none). Example 6 (ListConstraint allowing all): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values: \"E2\"} `projects/bar` has a `Policy` with: {all: ALLOW} The accepted values at `organizations/foo` are `E1`, E2`. Any value is accepted at `projects/bar`. Example 7 (ListConstraint allowing none): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values: \"E2\"} `projects/bar` has a `Policy` with: {all: DENY} The accepted values at `organizations/foo` are `E1`, E2`. No value is accepted at `projects/bar`. Example 10 (allowed and denied subtrees of Resource Manager hierarchy): Given the following resource hierarchy O1->{F1, F2}; F1->{P1}; F2->{P2, P3}, `organizations/foo` has a `Policy` with values: {allowed_values: \"under:organizations/O1\"} `projects/bar` has a `Policy` with: {allowed_values: \"under:projects/P3\"} {denied_values: \"under:folders/F2\"} The accepted values at `organizations/foo` are `organizations/O1`, `folders/F1`, `folders/F2`, `projects/P1`, `projects/P2`, `projects/P3`. The accepted values at `projects/bar` are `organizations/O1`, `folders/F1`, `projects/P1`.",
+"type": "boolean"
+},
+"suggestedValue": {
+"description": "Optional. The Google Cloud Console will try to default to a configuration that matches the value specified in this `Policy`. If `suggested_value` is not set, it will inherit the value specified higher in the hierarchy, unless `inherit_from_parent` is `false`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV1Policy": {
+"description": "Defines a Cloud Organization `Policy` which is used to specify `Constraints` for configurations of Cloud Platform resources.",
+"id": "GoogleCloudOrgpolicyV1Policy",
+"properties": {
+"booleanPolicy": {
+"$ref": "GoogleCloudOrgpolicyV1BooleanPolicy",
+"description": "For boolean `Constraints`, whether to enforce the `Constraint` or not."
+},
+"constraint": {
+"description": "The name of the `Constraint` the `Policy` is configuring, for example, `constraints/serviceuser.services`. A [list of available constraints](/resource-manager/docs/organization-policy/org-policy-constraints) is available. Immutable after creation.",
+"type": "string"
+},
+"etag": {
+"description": "An opaque tag indicating the current version of the `Policy`, used for concurrency control. When the `Policy` is returned from either a `GetPolicy` or a `ListOrgPolicy` request, this `etag` indicates the version of the current `Policy` to use when executing a read-modify-write loop. When the `Policy` is returned from a `GetEffectivePolicy` request, the `etag` will be unset. When the `Policy` is used in a `SetOrgPolicy` method, use the `etag` value that was returned from a `GetOrgPolicy` request as part of a read-modify-write loop for concurrency control. Not setting the `etag`in a `SetOrgPolicy` request will result in an unconditional write of the `Policy`.",
+"format": "byte",
+"type": "string"
+},
+"listPolicy": {
+"$ref": "GoogleCloudOrgpolicyV1ListPolicy",
+"description": "List of values either allowed or disallowed."
+},
+"restoreDefault": {
+"$ref": "GoogleCloudOrgpolicyV1RestoreDefault",
+"description": "Restores the default behavior of the constraint; independent of `Constraint` type."
+},
+"updateTime": {
+"description": "The time stamp the `Policy` was previously updated. This is set by the server, not specified by the caller, and represents the last time a call to `SetOrgPolicy` was made for that `Policy`. Any value set by the client will be ignored.",
+"format": "google-datetime",
+"type": "string"
+},
+"version": {
+"description": "Version of the `Policy`. Default version is 0;",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV1RestoreDefault": {
+"description": "Ignores policies set above this resource and restores the `constraint_default` enforcement behavior of the specific `Constraint` at this resource. Suppose that `constraint_default` is set to `ALLOW` for the `Constraint` `constraints/serviceuser.services`. Suppose that organization foo.com sets a `Policy` at their Organization resource node that restricts the allowed service activations to deny all service activations. They could then set a `Policy` with the `policy_type` `restore_default` on several experimental projects, restoring the `constraint_default` enforcement of the `Constraint` for only those projects, allowing those projects to have all services activated.",
+"id": "GoogleCloudOrgpolicyV1RestoreDefault",
+"properties": {},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1AccessLevel": {
+"description": "An `AccessLevel` is a label that can be applied to requests to Google Cloud services, along with a list of requirements necessary for the label to be applied.",
+"id": "GoogleIdentityAccesscontextmanagerV1AccessLevel",
+"properties": {
+"basic": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1BasicLevel",
+"description": "A `BasicLevel` composed of `Conditions`."
+},
+"custom": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1CustomLevel",
+"description": "A `CustomLevel` written in the Common Expression Language."
+},
+"description": {
+"description": "Description of the `AccessLevel` and its use. Does not affect behavior.",
+"type": "string"
+},
+"name": {
+"description": "Identifier. Resource name for the `AccessLevel`. Format: `accessPolicies/{access_policy}/accessLevels/{access_level}`. The `access_level` component must begin with a letter, followed by alphanumeric characters or `_`. Its maximum length is 50 characters. After you create an `AccessLevel`, you cannot change its `name`.",
+"type": "string"
+},
+"title": {
+"description": "Human readable title. Must be unique within the Policy.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1AccessPolicy": {
+"description": "`AccessPolicy` is a container for `AccessLevels` (which define the necessary attributes to use Google Cloud services) and `ServicePerimeters` (which define regions of services able to freely pass data within a perimeter). An access policy is globally visible within an organization, and the restrictions it specifies apply to all projects within an organization.",
+"id": "GoogleIdentityAccesscontextmanagerV1AccessPolicy",
+"properties": {
+"etag": {
+"description": "Output only. An opaque identifier for the current version of the `AccessPolicy`. This will always be a strongly validated etag, meaning that two Access Policies will be identical if and only if their etags are identical. Clients should not expect this to be in any specific format.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Identifier. Resource name of the `AccessPolicy`. Format: `accessPolicies/{access_policy}`",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent of this `AccessPolicy` in the Cloud Resource Hierarchy. Currently immutable once created. Format: `organizations/{organization_id}`",
+"type": "string"
+},
+"scopes": {
+"description": "The scopes of the AccessPolicy. Scopes define which resources a policy can restrict and where its resources can be referenced. For example, policy A with `scopes=[\"folders/123\"]` has the following behavior: - ServicePerimeter can only restrict projects within `folders/123`. - ServicePerimeter within policy A can only reference access levels defined within policy A. - Only one policy can include a given scope; thus, attempting to create a second policy which includes `folders/123` will result in an error. If no scopes are provided, then any resource within the organization can be restricted. Scopes cannot be modified after a policy is created. Policies can only have a single scope. Format: list of `folders/{folder_number}` or `projects/{project_number}`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"title": {
+"description": "Required. Human readable title. Does not affect behavior.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1ApiOperation": {
+"description": "Identification for an API Operation.",
+"id": "GoogleIdentityAccesscontextmanagerV1ApiOperation",
+"properties": {
+"methodSelectors": {
+"description": "API methods or permissions to allow. Method or permission must belong to the service specified by `service_name` field. A single MethodSelector entry with `*` specified for the `method` field will allow all methods AND permissions for the service specified in `service_name`.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1MethodSelector"
+},
+"type": "array"
+},
+"serviceName": {
+"description": "The name of the API whose methods or permissions the IngressPolicy or EgressPolicy want to allow. A single ApiOperation with `service_name` field set to `*` will allow all methods AND permissions for all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1BasicLevel": {
+"description": "`BasicLevel` is an `AccessLevel` using a set of recommended features.",
+"id": "GoogleIdentityAccesscontextmanagerV1BasicLevel",
+"properties": {
+"combiningFunction": {
+"description": "How the `conditions` list should be combined to determine if a request is granted this `AccessLevel`. If AND is used, each `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. If OR is used, at least one `Condition` in `conditions` must be satisfied for the `AccessLevel` to be applied. Default behavior is AND.",
+"enum": [
+"AND",
+"OR"
+],
+"enumDescriptions": [
+"All `Conditions` must be true for the `BasicLevel` to be true.",
+"If at least one `Condition` is true, then the `BasicLevel` is true."
+],
+"type": "string"
+},
+"conditions": {
+"description": "Required. A list of requirements for the `AccessLevel` to be granted.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1Condition"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1Condition": {
+"description": "A condition necessary for an `AccessLevel` to be granted. The Condition is an AND over its fields. So a Condition is true if: 1) the request IP is from one of the listed subnetworks AND 2) the originating device complies with the listed device policy AND 3) all listed access levels are granted AND 4) the request was sent at a time allowed by the DateTimeRestriction.",
+"id": "GoogleIdentityAccesscontextmanagerV1Condition",
+"properties": {
+"devicePolicy": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1DevicePolicy",
+"description": "Device specific restrictions, all restrictions must hold for the Condition to be true. If not specified, all devices are allowed."
+},
+"ipSubnetworks": {
+"description": "CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for a CIDR IP address block, the specified IP address portion must be properly truncated (i.e. all the host bits must be zero) or the input is considered malformed. For example, \"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly, for IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\" is not. The originating IP of a request must be in one of the listed subnets in order for this Condition to be true. If empty, all IP addresses are allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"members": {
+"description": "The request must be made by one of the provided user or service accounts. Groups are not supported. Syntax: `user:{emailid}` `serviceAccount:{emailid}` If not specified, a request may come from any user.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"negate": {
+"description": "Whether to negate the Condition. If true, the Condition becomes a NAND over its non-empty fields. Any non-empty field criteria evaluating to false will result in the Condition to be satisfied. Defaults to false.",
+"type": "boolean"
+},
+"regions": {
+"description": "The request must originate from one of the provided countries/regions. Must be valid ISO 3166-1 alpha-2 codes.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"requiredAccessLevels": {
+"description": "A list of other access levels defined in the same `Policy`, referenced by resource name. Referencing an `AccessLevel` which does not exist is an error. All access levels listed must be granted for the Condition to be true. Example: \"`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME\"`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"vpcNetworkSources": {
+"description": "The request must originate from one of the provided VPC networks in Google Cloud. Cannot specify this field together with `ip_subnetworks`.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1VpcNetworkSource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1CustomLevel": {
+"description": "`CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request. See CEL spec at: https://github.com/google/cel-spec",
+"id": "GoogleIdentityAccesscontextmanagerV1CustomLevel",
+"properties": {
+"expr": {
+"$ref": "Expr",
+"description": "Required. A Cloud CEL expression evaluating to a boolean."
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1DevicePolicy": {
+"description": "`DevicePolicy` specifies device specific restrictions necessary to acquire a given access level. A `DevicePolicy` specifies requirements for requests from devices to be granted access levels, it does not do any enforcement on the device. `DevicePolicy` acts as an AND over all specified fields, and each repeated field is an OR over its elements. Any unset fields are ignored. For example, if the proto is { os_type : DESKTOP_WINDOWS, os_type : DESKTOP_LINUX, encryption_status: ENCRYPTED}, then the DevicePolicy will be true for requests originating from encrypted Linux desktops and encrypted Windows desktops.",
+"id": "GoogleIdentityAccesscontextmanagerV1DevicePolicy",
+"properties": {
+"allowedDeviceManagementLevels": {
+"description": "Allowed device management levels, an empty list allows all management levels.",
+"items": {
+"enum": [
+"MANAGEMENT_UNSPECIFIED",
+"NONE",
+"BASIC",
+"COMPLETE"
+],
+"enumDescriptions": [
+"The device's management level is not specified or not known.",
+"The device is not managed.",
+"Basic management is enabled, which is generally limited to monitoring and wiping the corporate account.",
+"Complete device management. This includes more thorough monitoring and the ability to directly manage the device (such as remote wiping). This can be enabled through the Android Enterprise Platform."
+],
+"type": "string"
+},
+"type": "array"
+},
+"allowedEncryptionStatuses": {
+"description": "Allowed encryptions statuses, an empty list allows all statuses.",
+"items": {
+"enum": [
+"ENCRYPTION_UNSPECIFIED",
+"ENCRYPTION_UNSUPPORTED",
+"UNENCRYPTED",
+"ENCRYPTED"
+],
+"enumDescriptions": [
+"The encryption status of the device is not specified or not known.",
+"The device does not support encryption.",
+"The device supports encryption, but is currently unencrypted.",
+"The device is encrypted."
+],
+"type": "string"
+},
+"type": "array"
+},
+"osConstraints": {
+"description": "Allowed OS versions, an empty list allows all types and all versions.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1OsConstraint"
+},
+"type": "array"
+},
+"requireAdminApproval": {
+"description": "Whether the device needs to be approved by the customer admin.",
+"type": "boolean"
+},
+"requireCorpOwned": {
+"description": "Whether the device needs to be corp owned.",
+"type": "boolean"
+},
+"requireScreenlock": {
+"description": "Whether or not screenlock is required for the DevicePolicy to be true. Defaults to `false`.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1EgressFrom": {
+"description": "Defines the conditions under which an EgressPolicy matches a request. Conditions based on information about the source of the request. Note that if the destination of the request is also protected by a ServicePerimeter, then that ServicePerimeter must have an IngressPolicy which allows access in order for this request to succeed.",
+"id": "GoogleIdentityAccesscontextmanagerV1EgressFrom",
+"properties": {
+"identities": {
+"description": "A list of identities that are allowed access through [EgressPolicy]. Identities can be an individual user, service account, Google group, or third-party identity. For third-party identity, only single identities are supported and other identity types are not supported. The `v1` identities that have the prefix `user`, `group`, `serviceAccount`, and `principal` in https://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"identityType": {
+"description": "Specifies the type of identities that are allowed access to outside the perimeter. If left unspecified, then members of `identities` field will be allowed access.",
+"enum": [
+"IDENTITY_TYPE_UNSPECIFIED",
+"ANY_IDENTITY",
+"ANY_USER_ACCOUNT",
+"ANY_SERVICE_ACCOUNT"
+],
+"enumDescriptions": [
+"No blanket identity group specified.",
+"Authorize access from all identities outside the perimeter.",
+"Authorize access from all human users outside the perimeter.",
+"Authorize access from all service accounts outside the perimeter."
+],
+"type": "string"
+},
+"sourceRestriction": {
+"description": "Whether to enforce traffic restrictions based on `sources` field. If the `sources` fields is non-empty, then this field must be set to `SOURCE_RESTRICTION_ENABLED`.",
+"enum": [
+"SOURCE_RESTRICTION_UNSPECIFIED",
+"SOURCE_RESTRICTION_ENABLED",
+"SOURCE_RESTRICTION_DISABLED"
+],
+"enumDescriptions": [
+"Enforcement preference unspecified, will not enforce traffic restrictions based on `sources` in EgressFrom.",
+"Enforcement preference enabled, traffic restrictions will be enforced based on `sources` in EgressFrom.",
+"Enforcement preference disabled, will not enforce traffic restrictions based on `sources` in EgressFrom."
+],
+"type": "string"
+},
+"sources": {
+"description": "Sources that this EgressPolicy authorizes access from. If this field is not empty, then `source_restriction` must be set to `SOURCE_RESTRICTION_ENABLED`.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1EgressSource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1EgressPolicy": {
+"description": "Policy for egress from perimeter. EgressPolicies match requests based on `egress_from` and `egress_to` stanzas. For an EgressPolicy to match, both `egress_from` and `egress_to` stanzas must be matched. If an EgressPolicy matches a request, the request is allowed to span the ServicePerimeter boundary. For example, an EgressPolicy can be used to allow VMs on networks within the ServicePerimeter to access a defined set of projects outside the perimeter in certain contexts (e.g. to read data from a Cloud Storage bucket or query against a BigQuery dataset). EgressPolicies are concerned with the *resources* that a request relates as well as the API services and API actions being used. They do not related to the direction of data movement. More detailed documentation for this concept can be found in the descriptions of EgressFrom and EgressTo.",
+"id": "GoogleIdentityAccesscontextmanagerV1EgressPolicy",
+"properties": {
+"egressFrom": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1EgressFrom",
+"description": "Defines conditions on the source of a request causing this EgressPolicy to apply."
+},
+"egressTo": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1EgressTo",
+"description": "Defines the conditions on the ApiOperation and destination resources that cause this EgressPolicy to apply."
+},
+"title": {
+"description": "Optional. Human-readable title for the egress rule. The title must be unique within the perimeter and can not exceed 100 characters. Within the access policy, the combined length of all rule titles must not exceed 240,000 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1EgressSource": {
+"description": "The source that EgressPolicy authorizes access from inside the ServicePerimeter to somewhere outside the ServicePerimeter boundaries.",
+"id": "GoogleIdentityAccesscontextmanagerV1EgressSource",
+"properties": {
+"accessLevel": {
+"description": "An AccessLevel resource name that allows protected resources inside the ServicePerimeters to access outside the ServicePerimeter boundaries. AccessLevels listed must be in the same policy as this ServicePerimeter. Referencing a nonexistent AccessLevel will cause an error. If an AccessLevel name is not specified, only resources within the perimeter can be accessed through Google Cloud calls with request origins within the perimeter. Example: `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL`. If a single `*` is specified for `access_level`, then all EgressSources will be allowed.",
+"type": "string"
+},
+"resource": {
+"description": "A Google Cloud resource that you want to allow to egress the perimeter. These resources can access data outside the perimeter. This field only supports projects. The project format is `projects/{project_number}`. The resource can be in any Google Cloud organization, not just the organization where the perimeter is defined. You can't use `*` in this field to allow all Google Cloud resources.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1EgressTo": {
+"description": "Defines the conditions under which an EgressPolicy matches a request. Conditions are based on information about the ApiOperation intended to be performed on the `resources` specified. Note that if the destination of the request is also protected by a ServicePerimeter, then that ServicePerimeter must have an IngressPolicy which allows access in order for this request to succeed. The request must match `operations` AND `resources` fields in order to be allowed egress out of the perimeter.",
+"id": "GoogleIdentityAccesscontextmanagerV1EgressTo",
+"properties": {
+"externalResources": {
+"description": "A list of external resources that are allowed to be accessed. Only AWS and Azure resources are supported. For Amazon S3, the supported formats are s3://BUCKET_NAME, s3a://BUCKET_NAME, and s3n://BUCKET_NAME. For Azure Storage, the supported format is azure://myaccount.blob.core.windows.net/CONTAINER_NAME. A request matches if it contains an external resource in this list (Example: s3://bucket/path). Currently '*' is not allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"operations": {
+"description": "A list of ApiOperations allowed to be performed by the sources specified in the corresponding EgressFrom. A request matches if it uses an operation/service in this list.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1ApiOperation"
+},
+"type": "array"
+},
+"resources": {
+"description": "A list of resources, currently only projects in the form `projects/`, that are allowed to be accessed by sources defined in the corresponding EgressFrom. A request matches if it contains a resource in this list. If `*` is specified for `resources`, then this EgressTo rule will authorize access to all resources outside the perimeter.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1IngressFrom": {
+"description": "Defines the conditions under which an IngressPolicy matches a request. Conditions are based on information about the source of the request. The request must satisfy what is defined in `sources` AND identity related fields in order to match.",
+"id": "GoogleIdentityAccesscontextmanagerV1IngressFrom",
+"properties": {
+"identities": {
+"description": "A list of identities that are allowed access through [IngressPolicy]. Identities can be an individual user, service account, Google group, or third-party identity. For third-party identity, only single identities are supported and other identity types are not supported. The `v1` identities that have the prefix `user`, `group`, `serviceAccount`, and `principal` in https://cloud.google.com/iam/docs/principal-identifiers#v1 are supported.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"identityType": {
+"description": "Specifies the type of identities that are allowed access from outside the perimeter. If left unspecified, then members of `identities` field will be allowed access.",
+"enum": [
+"IDENTITY_TYPE_UNSPECIFIED",
+"ANY_IDENTITY",
+"ANY_USER_ACCOUNT",
+"ANY_SERVICE_ACCOUNT"
+],
+"enumDescriptions": [
+"No blanket identity group specified.",
+"Authorize access from all identities outside the perimeter.",
+"Authorize access from all human users outside the perimeter.",
+"Authorize access from all service accounts outside the perimeter."
+],
+"type": "string"
+},
+"sources": {
+"description": "Sources that this IngressPolicy authorizes access from.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1IngressSource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1IngressPolicy": {
+"description": "Policy for ingress into ServicePerimeter. IngressPolicies match requests based on `ingress_from` and `ingress_to` stanzas. For an ingress policy to match, both the `ingress_from` and `ingress_to` stanzas must be matched. If an IngressPolicy matches a request, the request is allowed through the perimeter boundary from outside the perimeter. For example, access from the internet can be allowed either based on an AccessLevel or, for traffic hosted on Google Cloud, the project of the source network. For access from private networks, using the project of the hosting network is required. Individual ingress policies can be limited by restricting which services and/or actions they match using the `ingress_to` field.",
+"id": "GoogleIdentityAccesscontextmanagerV1IngressPolicy",
+"properties": {
+"ingressFrom": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1IngressFrom",
+"description": "Defines the conditions on the source of a request causing this IngressPolicy to apply."
+},
+"ingressTo": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1IngressTo",
+"description": "Defines the conditions on the ApiOperation and request destination that cause this IngressPolicy to apply."
+},
+"title": {
+"description": "Optional. Human-readable title for the ingress rule. The title must be unique within the perimeter and can not exceed 100 characters. Within the access policy, the combined length of all rule titles must not exceed 240,000 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1IngressSource": {
+"description": "The source that IngressPolicy authorizes access from.",
+"id": "GoogleIdentityAccesscontextmanagerV1IngressSource",
+"properties": {
+"accessLevel": {
+"description": "An AccessLevel resource name that allow resources within the ServicePerimeters to be accessed from the internet. AccessLevels listed must be in the same policy as this ServicePerimeter. Referencing a nonexistent AccessLevel will cause an error. If no AccessLevel names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example: `accessPolicies/MY_POLICY/accessLevels/MY_LEVEL`. If a single `*` is specified for `access_level`, then all IngressSources will be allowed.",
+"type": "string"
+},
+"resource": {
+"description": "A Google Cloud resource that is allowed to ingress the perimeter. Requests from these resources will be allowed to access perimeter data. Currently only projects and VPCs are allowed. Project format: `projects/{project_number}` VPC network format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NAME}`. The project may be in any Google Cloud organization, not just the organization that the perimeter is defined in. `*` is not allowed, the case of allowing all Google Cloud resources only is not supported.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1IngressTo": {
+"description": "Defines the conditions under which an IngressPolicy matches a request. Conditions are based on information about the ApiOperation intended to be performed on the target resource of the request. The request must satisfy what is defined in `operations` AND `resources` in order to match.",
+"id": "GoogleIdentityAccesscontextmanagerV1IngressTo",
+"properties": {
+"operations": {
+"description": "A list of ApiOperations allowed to be performed by the sources specified in corresponding IngressFrom in this ServicePerimeter.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1ApiOperation"
+},
+"type": "array"
+},
+"resources": {
+"description": "A list of resources, currently only projects in the form `projects/`, protected by this ServicePerimeter that are allowed to be accessed by sources defined in the corresponding IngressFrom. If a single `*` is specified, then access to all resources inside the perimeter are allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1MethodSelector": {
+"description": "An allowed method or permission of a service specified in ApiOperation.",
+"id": "GoogleIdentityAccesscontextmanagerV1MethodSelector",
+"properties": {
+"method": {
+"description": "A valid method name for the corresponding `service_name` in ApiOperation. If `*` is used as the value for the `method`, then ALL methods and permissions are allowed.",
+"type": "string"
+},
+"permission": {
+"description": "A valid Cloud IAM permission for the corresponding `service_name` in ApiOperation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1OsConstraint": {
+"description": "A restriction on the OS type and version of devices making requests.",
+"id": "GoogleIdentityAccesscontextmanagerV1OsConstraint",
+"properties": {
+"minimumVersion": {
+"description": "The minimum allowed OS version. If not set, any version of this OS satisfies the constraint. Format: `\"major.minor.patch\"`. Examples: `\"10.5.301\"`, `\"9.2.1\"`.",
+"type": "string"
+},
+"osType": {
+"description": "Required. The allowed OS type.",
+"enum": [
+"OS_UNSPECIFIED",
+"DESKTOP_MAC",
+"DESKTOP_WINDOWS",
+"DESKTOP_LINUX",
+"DESKTOP_CHROME_OS",
+"ANDROID",
+"IOS"
+],
+"enumDescriptions": [
+"The operating system of the device is not specified or not known.",
+"A desktop Mac operating system.",
+"A desktop Windows operating system.",
+"A desktop Linux operating system.",
+"A desktop ChromeOS operating system.",
+"An Android operating system.",
+"An iOS operating system."
+],
+"type": "string"
+},
+"requireVerifiedChromeOs": {
+"description": "Only allows requests from devices with a verified Chrome OS. Verifications includes requirements that the device is enterprise-managed, conformant to domain policies, and the caller has permission to call the API targeted by the request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1ServicePerimeter": {
+"description": "`ServicePerimeter` describes a set of Google Cloud resources which can freely import and export data amongst themselves, but not export outside of the `ServicePerimeter`. If a request with a source within this `ServicePerimeter` has a target outside of the `ServicePerimeter`, the request will be blocked. Otherwise the request is allowed. There are two types of Service Perimeter - Regular and Bridge. Regular Service Perimeters cannot overlap, a single Google Cloud project or VPC network can only belong to a single regular Service Perimeter. Service Perimeter Bridges can contain only Google Cloud projects as members, a single Google Cloud project may belong to multiple Service Perimeter Bridges.",
+"id": "GoogleIdentityAccesscontextmanagerV1ServicePerimeter",
+"properties": {
+"description": {
+"description": "Description of the `ServicePerimeter` and its use. Does not affect behavior.",
+"type": "string"
+},
+"etag": {
+"description": "Optional. An opaque identifier for the current version of the `ServicePerimeter`. This identifier does not follow any specific format. If an etag is not provided, the operation will be performed as if a valid etag is provided.",
+"type": "string"
+},
+"name": {
+"description": "Identifier. Resource name for the `ServicePerimeter`. Format: `accessPolicies/{access_policy}/servicePerimeters/{service_perimeter}`. The `service_perimeter` component must begin with a letter, followed by alphanumeric characters or `_`. After you create a `ServicePerimeter`, you cannot change its `name`.",
+"type": "string"
+},
+"perimeterType": {
+"description": "Perimeter type indicator. A single project or VPC network is allowed to be a member of single regular perimeter, but multiple service perimeter bridges. A project cannot be a included in a perimeter bridge without being included in regular perimeter. For perimeter bridges, the restricted service list as well as access level lists must be empty.",
+"enum": [
+"PERIMETER_TYPE_REGULAR",
+"PERIMETER_TYPE_BRIDGE"
+],
+"enumDescriptions": [
+"Regular Perimeter. When no value is specified, the perimeter uses this type.",
+"Perimeter Bridge."
+],
+"type": "string"
+},
+"spec": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig",
+"description": "Proposed (or dry run) ServicePerimeter configuration. This configuration allows to specify and test ServicePerimeter configuration without enforcing actual access restrictions. Only allowed to be set when the \"use_explicit_dry_run_spec\" flag is set."
+},
+"status": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig",
+"description": "Current ServicePerimeter configuration. Specifies sets of resources, restricted services and access levels that determine perimeter content and boundaries."
+},
+"title": {
+"description": "Human readable title. Must be unique within the Policy.",
+"type": "string"
+},
+"useExplicitDryRunSpec": {
+"description": "Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists for all Service Perimeters, and that spec is identical to the status for those Service Perimeters. When this flag is set, it inhibits the generation of the implicit spec, thereby allowing the user to explicitly provide a configuration (\"spec\") to use in a dry-run version of the Service Perimeter. This allows the user to test changes to the enforced config (\"status\") without actually enforcing them. This testing is done through analyzing the differences between currently enforced and suggested restrictions. use_explicit_dry_run_spec must bet set to True if any of the fields in the spec are set to non-default values.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig": {
+"description": "`ServicePerimeterConfig` specifies a set of Google Cloud resources that describe specific Service Perimeter configuration.",
+"id": "GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig",
+"properties": {
+"accessLevels": {
+"description": "A list of `AccessLevel` resource names that allow resources within the `ServicePerimeter` to be accessed from the internet. `AccessLevels` listed must be in the same policy as this `ServicePerimeter`. Referencing a nonexistent `AccessLevel` is a syntax error. If no `AccessLevel` names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example: `\"accessPolicies/MY_POLICY/accessLevels/MY_LEVEL\"`. For Service Perimeter Bridge, must be empty.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"egressPolicies": {
+"description": "List of EgressPolicies to apply to the perimeter. A perimeter may have multiple EgressPolicies, each of which is evaluated separately. Access is granted if any EgressPolicy grants it. Must be empty for a perimeter bridge.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1EgressPolicy"
+},
+"type": "array"
+},
+"ingressPolicies": {
+"description": "List of IngressPolicies to apply to the perimeter. A perimeter may have multiple IngressPolicies, each of which is evaluated separately. Access is granted if any Ingress Policy grants it. Must be empty for a perimeter bridge.",
+"items": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1IngressPolicy"
+},
+"type": "array"
+},
+"resources": {
+"description": "A list of Google Cloud resources that are inside of the service perimeter. Currently only projects and VPCs are allowed. Project format: `projects/{project_number}` VPC network format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NAME}`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"restrictedServices": {
+"description": "Google Cloud services that are subject to the Service Perimeter restrictions. For example, if `storage.googleapis.com` is specified, access to the storage buckets inside the perimeter must meet the perimeter's access restrictions.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"vpcAccessibleServices": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices",
+"description": "Configuration for APIs allowed within Perimeter."
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices": {
+"description": "Specifies how APIs are allowed to communicate within the Service Perimeter.",
+"id": "GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices",
+"properties": {
+"allowedServices": {
+"description": "The list of APIs usable within the Service Perimeter. Must be empty unless 'enable_restriction' is True. You can specify a list of individual services, as well as include the 'RESTRICTED-SERVICES' value, which automatically includes all of the services protected by the perimeter.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"enableRestriction": {
+"description": "Whether to restrict API calls within the Service Perimeter to the list of APIs specified in 'allowed_services'.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1VpcNetworkSource": {
+"description": "The originating network source in Google Cloud.",
+"id": "GoogleIdentityAccesscontextmanagerV1VpcNetworkSource",
+"properties": {
+"vpcSubnetwork": {
+"$ref": "GoogleIdentityAccesscontextmanagerV1VpcSubNetwork",
+"description": "Sub-segment ranges of a VPC network."
+}
+},
+"type": "object"
+},
+"GoogleIdentityAccesscontextmanagerV1VpcSubNetwork": {
+"description": "Sub-segment ranges inside of a VPC Network.",
+"id": "GoogleIdentityAccesscontextmanagerV1VpcSubNetwork",
+"properties": {
+"network": {
+"description": "Required. Network name. If the network is not part of the organization, the `compute.network.get` permission must be granted to the caller. Format: `//compute.googleapis.com/projects/{PROJECT_ID}/global/networks/{NETWORK_NAME}` Example: `//compute.googleapis.com/projects/my-project/global/networks/network-1`",
+"type": "string"
+},
+"vpcIpSubnetworks": {
+"description": "CIDR block IP subnetwork specification. The IP address must be an IPv4 address and can be a public or private IP address. Note that for a CIDR IP address block, the specified IP address portion must be properly truncated (i.e. all the host bits must be zero) or the input is considered malformed. For example, \"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. If empty, all IP addresses are allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"IamPolicyAnalysis": {
+"description": "An analysis message to group the query and results.",
+"id": "IamPolicyAnalysis",
+"properties": {
+"analysisQuery": {
+"$ref": "IamPolicyAnalysisQuery",
+"description": "The analysis query."
+},
+"analysisResults": {
+"description": "A list of IamPolicyAnalysisResult that matches the analysis query, or empty if no result is found.",
+"items": {
+"$ref": "IamPolicyAnalysisResult"
+},
+"type": "array"
+},
+"fullyExplored": {
+"description": "Represents whether all entries in the analysis_results have been fully explored to answer the query.",
+"type": "boolean"
+},
+"nonCriticalErrors": {
+"description": "A list of non-critical errors happened during the query handling.",
+"items": {
+"$ref": "IamPolicyAnalysisState"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"IamPolicyAnalysisOutputConfig": {
+"description": "Output configuration for export IAM policy analysis destination.",
+"id": "IamPolicyAnalysisOutputConfig",
+"properties": {
+"bigqueryDestination": {
+"$ref": "GoogleCloudAssetV1BigQueryDestination",
+"description": "Destination on BigQuery."
+},
+"gcsDestination": {
+"$ref": "GoogleCloudAssetV1GcsDestination",
+"description": "Destination on Cloud Storage."
+}
+},
+"type": "object"
+},
+"IamPolicyAnalysisQuery": {
+"description": "IAM policy analysis query message.",
+"id": "IamPolicyAnalysisQuery",
+"properties": {
+"accessSelector": {
+"$ref": "AccessSelector",
+"description": "Optional. Specifies roles or permissions for analysis. This is optional."
+},
+"conditionContext": {
+"$ref": "ConditionContext",
+"description": "Optional. The hypothetical context for IAM conditions evaluation."
+},
+"identitySelector": {
+"$ref": "IdentitySelector",
+"description": "Optional. Specifies an identity for analysis."
+},
+"options": {
+"$ref": "Options",
+"description": "Optional. The query options."
+},
+"resourceSelector": {
+"$ref": "ResourceSelector",
+"description": "Optional. Specifies a resource for analysis."
+},
+"scope": {
+"description": "Required. The relative name of the root asset. Only resources and IAM policies within the scope will be analyzed. This can only be an organization number (such as \"organizations/123\"), a folder number (such as \"folders/123\"), a project ID (such as \"projects/my-project-id\"), or a project number (such as \"projects/12345\"). To know how to get organization ID, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-organization#retrieving_your_organization_id). To know how to get folder or project ID, visit [here ](https://cloud.google.com/resource-manager/docs/creating-managing-folders#viewing_or_listing_folders_and_projects).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IamPolicyAnalysisResult": {
+"description": "IAM Policy analysis result, consisting of one IAM policy binding and derived access control lists.",
+"id": "IamPolicyAnalysisResult",
+"properties": {
+"accessControlLists": {
+"description": "The access control lists derived from the iam_binding that match or potentially match resource and access selectors specified in the request.",
+"items": {
+"$ref": "GoogleCloudAssetV1AccessControlList"
+},
+"type": "array"
+},
+"attachedResourceFullName": {
+"description": "The [full resource name](https://cloud.google.com/asset-inventory/docs/resource-name-format) of the resource to which the iam_binding policy attaches.",
+"type": "string"
+},
+"fullyExplored": {
+"description": "Represents whether all analyses on the iam_binding have successfully finished.",
+"type": "boolean"
+},
+"iamBinding": {
+"$ref": "Binding",
+"description": "The IAM policy binding under analysis."
+},
+"identityList": {
+"$ref": "GoogleCloudAssetV1IdentityList",
+"description": "The identity list derived from members of the iam_binding that match or potentially match identity selector specified in the request."
+}
+},
+"type": "object"
+},
+"IamPolicyAnalysisState": {
+"description": "Represents the detailed state of an entity under analysis, such as a resource, an identity or an access.",
+"id": "IamPolicyAnalysisState",
+"properties": {
+"cause": {
+"description": "The human-readable description of the cause of failure.",
+"type": "string"
+},
+"code": {
+"description": "The Google standard error code that best describes the state. For example: - OK means the analysis on this entity has been successfully finished; - PERMISSION_DENIED means an access denied error is encountered; - DEADLINE_EXCEEDED means the analysis on this entity hasn't been started in time;",
+"enum": [
+"OK",
+"CANCELLED",
+"UNKNOWN",
+"INVALID_ARGUMENT",
+"DEADLINE_EXCEEDED",
+"NOT_FOUND",
+"ALREADY_EXISTS",
+"PERMISSION_DENIED",
+"UNAUTHENTICATED",
+"RESOURCE_EXHAUSTED",
+"FAILED_PRECONDITION",
+"ABORTED",
+"OUT_OF_RANGE",
+"UNIMPLEMENTED",
+"INTERNAL",
+"UNAVAILABLE",
+"DATA_LOSS"
+],
+"enumDescriptions": [
+"Not an error; returned on success. HTTP Mapping: 200 OK",
+"The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request",
+"Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error",
+"The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request",
+"The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout",
+"Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found",
+"The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict",
+"The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden",
+"The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized",
+"Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests",
+"The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an \"rmdir\" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request",
+"The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict",
+"The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request",
+"The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented",
+"Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error",
+"The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable",
+"Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"IamPolicySearchResult": {
+"description": "A result of IAM Policy search, containing information of an IAM policy.",
+"id": "IamPolicySearchResult",
+"properties": {
+"assetType": {
+"description": "The type of the resource associated with this IAM policy. Example: `compute.googleapis.com/Disk`. To search against the `asset_type`: * specify the `asset_types` field in your search request.",
+"type": "string"
+},
+"explanation": {
+"$ref": "Explanation",
+"description": "Explanation about the IAM policy search result. It contains additional information to explain why the search result matches the query."
+},
+"folders": {
+"description": "The folder(s) that the IAM policy belongs to, in the form of folders/{FOLDER_NUMBER}. This field is available when the IAM policy belongs to one or more folders. To search against `folders`: * use a field query. Example: `folders:(123 OR 456)` * use a free text query. Example: `123` * specify the `scope` field as this folder in your search request.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"organization": {
+"description": "The organization that the IAM policy belongs to, in the form of organizations/{ORGANIZATION_NUMBER}. This field is available when the IAM policy belongs to an organization. To search against `organization`: * use a field query. Example: `organization:123` * use a free text query. Example: `123` * specify the `scope` field as this organization in your search request.",
+"type": "string"
+},
+"policy": {
+"$ref": "Policy",
+"description": "The IAM policy directly set on the given resource. Note that the original IAM policy can contain multiple bindings. This only contains the bindings that match the given query. For queries that don't contain a constrain on policies (e.g., an empty query), this contains all the bindings. To search against the `policy` bindings: * use a field query: - query by the policy contained members. Example: `policy:amy@gmail.com` - query by the policy contained roles. Example: `policy:roles/compute.admin` - query by the policy contained roles' included permissions. Example: `policy.role.permissions:compute.instances.create`"
+},
+"project": {
+"description": "The project that the associated Google Cloud resource belongs to, in the form of projects/{PROJECT_NUMBER}. If an IAM policy is set on a resource (like VM instance, Cloud Storage bucket), the project field will indicate the project that contains the resource. If an IAM policy is set on a folder or orgnization, this field will be empty. To search against the `project`: * specify the `scope` field as this project in your search request.",
+"type": "string"
+},
+"resource": {
+"description": "The full resource name of the resource associated with this IAM policy. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. See [Cloud Asset Inventory Resource Name Format](https://cloud.google.com/asset-inventory/docs/resource-name-format) for more information. To search against the `resource`: * use a field query. Example: `resource:organizations/123`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentitySelector": {
+"description": "Specifies an identity for which to determine resource access, based on roles assigned either directly to them or to the groups they belong to, directly or indirectly.",
+"id": "IdentitySelector",
+"properties": {
+"identity": {
+"description": "Required. The identity appear in the form of principals in [IAM policy binding](https://cloud.google.com/iam/reference/rest/v1/Binding). The examples of supported forms are: \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\". Notice that wildcard characters (such as * and ?) are not supported. You must give a specific identity.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Inventory": {
+"description": "This API resource represents the available inventory data for a Compute Engine virtual machine (VM) instance at a given point in time. You can use this API resource to determine the inventory data of your VM. For more information, see [Information provided by OS inventory management](https://cloud.google.com/compute/docs/instances/os-inventory-management#data-collected).",
+"id": "Inventory",
+"properties": {
+"items": {
+"additionalProperties": {
+"$ref": "Item"
+},
+"description": "Inventory items related to the VM keyed by an opaque unique identifier for each inventory item. The identifier is unique to each distinct and addressable inventory item and will change, when there is a new package version.",
+"type": "object"
+},
+"name": {
+"description": "Output only. The `Inventory` API resource name. Format: `projects/{project_number}/locations/{location}/instances/{instance_id}/inventory`",
+"readOnly": true,
+"type": "string"
+},
+"osInfo": {
+"$ref": "OsInfo",
+"description": "Base level operating system information for the VM."
+},
+"updateTime": {
+"description": "Output only. Timestamp of the last reported inventory for the VM.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Item": {
+"description": "A single piece of inventory on a VM.",
+"id": "Item",
+"properties": {
+"availablePackage": {
+"$ref": "SoftwarePackage",
+"description": "Software package available to be installed on the VM instance."
+},
+"createTime": {
+"description": "When this inventory item was first detected.",
+"format": "google-datetime",
+"type": "string"
+},
+"id": {
+"description": "Identifier for this item, unique across items for this VM.",
+"type": "string"
+},
+"installedPackage": {
+"$ref": "SoftwarePackage",
+"description": "Software package present on the VM instance."
+},
+"originType": {
+"description": "The origin of this inventory item.",
+"enum": [
+"ORIGIN_TYPE_UNSPECIFIED",
+"INVENTORY_REPORT"
+],
+"enumDescriptions": [
+"Invalid. An origin type must be specified.",
+"This inventory item was discovered as the result of the agent reporting inventory via the reporting API."
+],
+"type": "string"
+},
+"type": {
+"description": "The specific type of inventory, correlating to its specific details.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"INSTALLED_PACKAGE",
+"AVAILABLE_PACKAGE"
+],
+"enumDescriptions": [
+"Invalid. A type must be specified.",
+"This represents a package that is installed on the VM.",
+"This represents an update that is available for a package."
+],
+"type": "string"
+},
+"updateTime": {
+"description": "When this inventory item was last modified.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListAssetsResponse": {
+"description": "ListAssets response.",
+"id": "ListAssetsResponse",
+"properties": {
+"assets": {
+"description": "Assets.",
+"items": {
+"$ref": "Asset"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. It expires 72 hours after the page token for the first page is generated. Set to empty if there are no remaining results.",
+"type": "string"
+},
+"readTime": {
+"description": "Time the snapshot was taken.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListFeedsResponse": {
+"id": "ListFeedsResponse",
+"properties": {
+"feeds": {
+"description": "A list of feeds.",
+"items": {
+"$ref": "Feed"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListSavedQueriesResponse": {
+"description": "Response of listing saved queries.",
+"id": "ListSavedQueriesResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"savedQueries": {
+"description": "A list of savedQueries.",
+"items": {
+"$ref": "SavedQuery"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MoveAnalysis": {
+"description": "A message to group the analysis information.",
+"id": "MoveAnalysis",
+"properties": {
+"analysis": {
+"$ref": "MoveAnalysisResult",
+"description": "Analysis result of moving the target resource."
+},
+"displayName": {
+"description": "The user friendly display name of the analysis. E.g. IAM, organization policy etc.",
+"type": "string"
+},
+"error": {
+"$ref": "Status",
+"description": "Description of error encountered when performing the analysis."
+}
+},
+"type": "object"
+},
+"MoveAnalysisResult": {
+"description": "An analysis result including blockers and warnings.",
+"id": "MoveAnalysisResult",
+"properties": {
+"blockers": {
+"description": "Blocking information that would prevent the target resource from moving to the specified destination at runtime.",
+"items": {
+"$ref": "MoveImpact"
+},
+"type": "array"
+},
+"warnings": {
+"description": "Warning information indicating that moving the target resource to the specified destination might be unsafe. This can include important policy information and configuration changes, but will not block moves at runtime.",
+"items": {
+"$ref": "MoveImpact"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MoveImpact": {
+"description": "A message to group impacts of moving the target resource.",
+"id": "MoveImpact",
+"properties": {
+"detail": {
+"description": "User friendly impact detail in a free form message.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Options": {
+"description": "Contains query options.",
+"id": "Options",
+"properties": {
+"analyzeServiceAccountImpersonation": {
+"description": "Optional. If true, the response will include access analysis from identities to resources via service account impersonation. This is a very expensive operation, because many derived queries will be executed. We highly recommend you use AssetService.AnalyzeIamPolicyLongrunning RPC instead. For example, if the request analyzes for which resources user A has permission P, and there's an IAM policy states user A has iam.serviceAccounts.getAccessToken permission to a service account SA, and there's another IAM policy states service account SA has permission P to a Google Cloud folder F, then user A potentially has access to the Google Cloud folder F. And those advanced analysis results will be included in AnalyzeIamPolicyResponse.service_account_impersonation_analysis. Another example, if the request analyzes for who has permission P to a Google Cloud folder F, and there's an IAM policy states user A has iam.serviceAccounts.actAs permission to a service account SA, and there's another IAM policy states service account SA has permission P to the Google Cloud folder F, then user A potentially has access to the Google Cloud folder F. And those advanced analysis results will be included in AnalyzeIamPolicyResponse.service_account_impersonation_analysis. Only the following permissions are considered in this analysis: * `iam.serviceAccounts.actAs` * `iam.serviceAccounts.signBlob` * `iam.serviceAccounts.signJwt` * `iam.serviceAccounts.getAccessToken` * `iam.serviceAccounts.getOpenIdToken` * `iam.serviceAccounts.implicitDelegation` Default is false.",
+"type": "boolean"
+},
+"expandGroups": {
+"description": "Optional. If true, the identities section of the result will expand any Google groups appearing in an IAM policy binding. If IamPolicyAnalysisQuery.identity_selector is specified, the identity in the result will be determined by the selector, and this flag is not allowed to set. If true, the default max expansion per group is 1000 for AssetService.AnalyzeIamPolicy][]. Default is false.",
+"type": "boolean"
+},
+"expandResources": {
+"description": "Optional. If true and IamPolicyAnalysisQuery.resource_selector is not specified, the resource section of the result will expand any resource attached to an IAM policy to include resources lower in the resource hierarchy. For example, if the request analyzes for which resources user A has permission P, and the results include an IAM policy with P on a Google Cloud folder, the results will also include resources in that folder with permission P. If true and IamPolicyAnalysisQuery.resource_selector is specified, the resource section of the result will expand the specified resource to include resources lower in the resource hierarchy. Only project or lower resources are supported. Folder and organization resources cannot be used together with this option. For example, if the request analyzes for which users have permission P on a Google Cloud project with this option enabled, the results will include all users who have permission P on that project or any lower resource. If true, the default max expansion per resource is 1000 for AssetService.AnalyzeIamPolicy][] and 100000 for AssetService.AnalyzeIamPolicyLongrunning][]. Default is false.",
+"type": "boolean"
+},
+"expandRoles": {
+"description": "Optional. If true, the access section of result will expand any roles appearing in IAM policy bindings to include their permissions. If IamPolicyAnalysisQuery.access_selector is specified, the access section of the result will be determined by the selector, and this flag is not allowed to set. Default is false.",
+"type": "boolean"
+},
+"outputGroupEdges": {
+"description": "Optional. If true, the result will output the relevant membership relationships between groups and other groups, and between groups and principals. Default is false.",
+"type": "boolean"
+},
+"outputResourceEdges": {
+"description": "Optional. If true, the result will output the relevant parent/child relationships between resources. Default is false.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"OrgPolicyResult": {
+"description": "The organization policy result to the query.",
+"id": "OrgPolicyResult",
+"properties": {
+"consolidatedPolicy": {
+"$ref": "AnalyzerOrgPolicy",
+"description": "The consolidated organization policy for the analyzed resource. The consolidated organization policy is computed by merging and evaluating policy_bundle. The evaluation will respect the organization policy [hierarchy rules](https://cloud.google.com/resource-manager/docs/organization-policy/understanding-hierarchy)."
+},
+"folders": {
+"description": "The folder(s) that this consolidated policy belongs to, in the format of folders/{FOLDER_NUMBER}. This field is available when the consolidated policy belongs (directly or cascadingly) to one or more folders.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"organization": {
+"description": "The organization that this consolidated policy belongs to, in the format of organizations/{ORGANIZATION_NUMBER}. This field is available when the consolidated policy belongs (directly or cascadingly) to an organization.",
+"type": "string"
+},
+"policyBundle": {
+"description": "The ordered list of all organization policies from the consolidated_policy.attached_resource. to the scope specified in the request. If the constraint is defined with default policy, it will also appear in the list.",
+"items": {
+"$ref": "AnalyzerOrgPolicy"
+},
+"type": "array"
+},
+"project": {
+"description": "The project that this consolidated policy belongs to, in the format of projects/{PROJECT_NUMBER}. This field is available when the consolidated policy belongs to a project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OsInfo": {
+"description": "Operating system information for the VM.",
+"id": "OsInfo",
+"properties": {
+"architecture": {
+"description": "The system architecture of the operating system.",
+"type": "string"
+},
+"hostname": {
+"description": "The VM hostname.",
+"type": "string"
+},
+"kernelRelease": {
+"description": "The kernel release of the operating system.",
+"type": "string"
+},
+"kernelVersion": {
+"description": "The kernel version of the operating system.",
+"type": "string"
+},
+"longName": {
+"description": "The operating system long name. For example 'Debian GNU/Linux 9' or 'Microsoft Window Server 2019 Datacenter'.",
+"type": "string"
+},
+"osconfigAgentVersion": {
+"description": "The current version of the OS Config agent running on the VM.",
+"type": "string"
+},
+"shortName": {
+"description": "The operating system short name. For example, 'windows' or 'debian'.",
+"type": "string"
+},
+"version": {
+"description": "The version of the operating system.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OutputConfig": {
+"description": "Output configuration for export assets destination.",
+"id": "OutputConfig",
+"properties": {
+"bigqueryDestination": {
+"$ref": "BigQueryDestination",
+"description": "Destination on BigQuery. The output table stores the fields in asset Protobuf as columns in BigQuery."
+},
+"gcsDestination": {
+"$ref": "GcsDestination",
+"description": "Destination on Cloud Storage."
+}
+},
+"type": "object"
+},
+"PartitionSpec": {
+"description": "Specifications of BigQuery partitioned table as export destination.",
+"id": "PartitionSpec",
+"properties": {
+"partitionKey": {
+"description": "The partition key for BigQuery partitioned table.",
+"enum": [
+"PARTITION_KEY_UNSPECIFIED",
+"READ_TIME",
+"REQUEST_TIME"
+],
+"enumDescriptions": [
+"Unspecified partition key. If used, it means using non-partitioned table.",
+"The time when the snapshot is taken. If specified as partition key, the result table(s) is partitoned by the additional timestamp column, readTime. If [read_time] in ExportAssetsRequest is specified, the readTime column's value will be the same as it. Otherwise, its value will be the current time that is used to take the snapshot.",
+"The time when the request is received and started to be processed. If specified as partition key, the result table(s) is partitoned by the requestTime column, an additional timestamp column representing when the request was received."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Permissions": {
+"description": "IAM permissions",
+"id": "Permissions",
+"properties": {
+"permissions": {
+"description": "A list of permissions. A sample permission string: `compute.disk.get`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"PolicyInfo": {
+"description": "The IAM policy and its attached resource.",
+"id": "PolicyInfo",
+"properties": {
+"attachedResource": {
+"description": "The full resource name the policy is directly attached to.",
+"type": "string"
+},
+"policy": {
+"$ref": "Policy",
+"description": "The IAM policy that's directly attached to the attached_resource."
+}
+},
+"type": "object"
+},
+"PubsubDestination": {
+"description": "A Pub/Sub destination.",
+"id": "PubsubDestination",
+"properties": {
+"topic": {
+"description": "The name of the Pub/Sub topic to publish to. Example: `projects/PROJECT_ID/topics/TOPIC_ID`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"QueryAssetsOutputConfig": {
+"description": "Output configuration query assets.",
+"id": "QueryAssetsOutputConfig",
+"properties": {
+"bigqueryDestination": {
+"$ref": "GoogleCloudAssetV1QueryAssetsOutputConfigBigQueryDestination",
+"description": "BigQuery destination where the query results will be saved."
+}
+},
+"type": "object"
+},
+"QueryAssetsRequest": {
+"description": "QueryAssets request.",
+"id": "QueryAssetsRequest",
+"properties": {
+"jobReference": {
+"description": "Optional. Reference to the query job, which is from the `QueryAssetsResponse` of previous `QueryAssets` call.",
+"type": "string"
+},
+"outputConfig": {
+"$ref": "QueryAssetsOutputConfig",
+"description": "Optional. Destination where the query results will be saved. When this field is specified, the query results won't be saved in the [QueryAssetsResponse.query_result]. Instead [QueryAssetsResponse.output_config] will be set. Meanwhile, [QueryAssetsResponse.job_reference] will be set and can be used to check the status of the query job when passed to a following [QueryAssets] API call."
+},
+"pageSize": {
+"description": "Optional. The maximum number of rows to return in the results. Responses are limited to 10 MB and 1000 rows. By default, the maximum row count is 1000. When the byte or row count limit is reached, the rest of the query results will be paginated. The field will be ignored when [output_config] is specified.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token received from previous `QueryAssets`. The field will be ignored when [output_config] is specified.",
+"type": "string"
+},
+"readTime": {
+"description": "Optional. Queries cloud assets as they appeared at the specified point in time.",
+"format": "google-datetime",
+"type": "string"
+},
+"readTimeWindow": {
+"$ref": "TimeWindow",
+"description": "Optional. [start_time] is required. [start_time] must be less than [end_time] Defaults [end_time] to now if [start_time] is set and [end_time] isn't. Maximum permitted time range is 7 days."
+},
+"statement": {
+"description": "Optional. A SQL statement that's compatible with [BigQuery SQL](https://cloud.google.com/bigquery/docs/introduction-sql).",
+"type": "string"
+},
+"timeout": {
+"description": "Optional. Specifies the maximum amount of time that the client is willing to wait for the query to complete. By default, this limit is 5 min for the first query, and 1 minute for the following queries. If the query is complete, the `done` field in the `QueryAssetsResponse` is true, otherwise false. Like BigQuery [jobs.query API](https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query#queryrequest) The call is not guaranteed to wait for the specified timeout; it typically returns after around 200 seconds (200,000 milliseconds), even if the query is not complete. The field will be ignored when [output_config] is specified.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"QueryAssetsResponse": {
+"description": "QueryAssets response.",
+"id": "QueryAssetsResponse",
+"properties": {
+"done": {
+"description": "The query response, which can be either an `error` or a valid `response`. If `done` == `false` and the query result is being saved in an output, the output_config field will be set. If `done` == `true`, exactly one of `error`, `query_result` or `output_config` will be set. [done] is unset unless the [QueryAssetsResponse] contains a [QueryAssetsResponse.job_reference].",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "Error status."
+},
+"jobReference": {
+"description": "Reference to a query job.",
+"type": "string"
+},
+"outputConfig": {
+"$ref": "QueryAssetsOutputConfig",
+"description": "Output configuration, which indicates that instead of being returned in an API response on the fly, the query result will be saved in a specific output."
+},
+"queryResult": {
+"$ref": "QueryResult",
+"description": "Result of the query."
+}
+},
+"type": "object"
+},
+"QueryContent": {
+"description": "The query content.",
+"id": "QueryContent",
+"properties": {
+"iamPolicyAnalysisQuery": {
+"$ref": "IamPolicyAnalysisQuery",
+"description": "An IAM Policy Analysis query, which could be used in the AssetService.AnalyzeIamPolicy RPC or the AssetService.AnalyzeIamPolicyLongrunning RPC."
+}
+},
+"type": "object"
+},
+"QueryResult": {
+"description": "Execution results of the query. The result is formatted as rows represented by BigQuery compatible [schema]. When pagination is necessary, it will contains the page token to retrieve the results of following pages.",
+"id": "QueryResult",
+"properties": {
+"nextPageToken": {
+"description": "Token to retrieve the next page of the results.",
+"type": "string"
+},
+"rows": {
+"description": "Each row hold a query result in the format of `Struct`.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"schema": {
+"$ref": "TableSchema",
+"description": "Describes the format of the [rows]."
+},
+"totalRows": {
+"description": "Total rows of the whole query results.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RelatedAsset": {
+"description": "An asset identifier in Google Cloud which contains its name, type and ancestors. An asset can be any resource in the Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), a resource outside the Google Cloud resource hierarchy (such as Google Kubernetes Engine clusters and objects), or a policy (e.g. IAM policy). See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"id": "RelatedAsset",
+"properties": {
+"ancestors": {
+"description": "The ancestors of an asset in Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), represented as a list of relative resource names. An ancestry path starts with the closest ancestor in the hierarchy and ends at root. Example: `[\"projects/123456789\", \"folders/5432\", \"organizations/1234\"]`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"asset": {
+"description": "The full name of the asset. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1` See [Resource names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information.",
+"type": "string"
+},
+"assetType": {
+"description": "The type of the asset. Example: `compute.googleapis.com/Disk` See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"type": "string"
+},
+"relationshipType": {
+"description": "The unique identifier of the relationship type. Example: `INSTANCE_TO_INSTANCEGROUP`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RelatedAssets": {
+"deprecated": true,
+"description": "DEPRECATED. This message only presents for the purpose of backward-compatibility. The server will never populate this message in responses. The detailed related assets with the `relationship_type`.",
+"id": "RelatedAssets",
+"properties": {
+"assets": {
+"description": "The peer resources of the relationship.",
+"items": {
+"$ref": "RelatedAsset"
+},
+"type": "array"
+},
+"relationshipAttributes": {
+"$ref": "RelationshipAttributes",
+"description": "The detailed relationship attributes."
+}
+},
+"type": "object"
+},
+"RelatedResource": {
+"description": "The detailed related resource.",
+"id": "RelatedResource",
+"properties": {
+"assetType": {
+"description": "The type of the asset. Example: `compute.googleapis.com/Instance`",
+"type": "string"
+},
+"fullResourceName": {
+"description": "The full resource name of the related resource. Example: `//compute.googleapis.com/projects/my_proj_123/zones/instance/instance123`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RelatedResources": {
+"description": "The related resources of the primary resource.",
+"id": "RelatedResources",
+"properties": {
+"relatedResources": {
+"description": "The detailed related resources of the primary resource.",
+"items": {
+"$ref": "RelatedResource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"RelationshipAttributes": {
+"deprecated": true,
+"description": "DEPRECATED. This message only presents for the purpose of backward-compatibility. The server will never populate this message in responses. The relationship attributes which include `type`, `source_resource_type`, `target_resource_type` and `action`.",
+"id": "RelationshipAttributes",
+"properties": {
+"action": {
+"description": "The detail of the relationship, e.g. `contains`, `attaches`",
+"type": "string"
+},
+"sourceResourceType": {
+"description": "The source asset type. Example: `compute.googleapis.com/Instance`",
+"type": "string"
+},
+"targetResourceType": {
+"description": "The target asset type. Example: `compute.googleapis.com/Disk`",
+"type": "string"
+},
+"type": {
+"description": "The unique identifier of the relationship type. Example: `INSTANCE_TO_INSTANCEGROUP`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Resource": {
+"description": "A representation of a Google Cloud resource.",
+"id": "Resource",
+"properties": {
+"data": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The content of the resource, in which some sensitive fields are removed and may not be present.",
+"type": "object"
+},
+"discoveryDocumentUri": {
+"description": "The URL of the discovery document containing the resource's JSON schema. Example: `https://www.googleapis.com/discovery/v1/apis/compute/v1/rest` This value is unspecified for resources that do not have an API based on a discovery document, such as Cloud Bigtable.",
+"type": "string"
+},
+"discoveryName": {
+"description": "The JSON schema name listed in the discovery document. Example: `Project` This value is unspecified for resources that do not have an API based on a discovery document, such as Cloud Bigtable.",
+"type": "string"
+},
+"location": {
+"description": "The location of the resource in Google Cloud, such as its zone and region. For more information, see https://cloud.google.com/about/locations/.",
+"type": "string"
+},
+"parent": {
+"description": "The full name of the immediate parent of this resource. See [Resource Names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information. For Google Cloud assets, this value is the parent resource defined in the [IAM policy hierarchy](https://cloud.google.com/iam/docs/overview#policy_hierarchy). Example: `//cloudresourcemanager.googleapis.com/projects/my_project_123`",
+"type": "string"
+},
+"resourceUrl": {
+"description": "The REST URL for accessing the resource. An HTTP `GET` request using this URL returns the resource itself. Example: `https://cloudresourcemanager.googleapis.com/v1/projects/my-project-123` This value is unspecified for resources without a REST API.",
+"type": "string"
+},
+"version": {
+"description": "The API version. Example: `v1`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResourceOwners": {
+"description": "The resource owners information.",
+"id": "ResourceOwners",
+"properties": {
+"resourceOwners": {
+"description": "List of resource owners.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ResourceSearchResult": {
+"description": "A result of Resource Search, containing information of a cloud resource.",
+"id": "ResourceSearchResult",
+"properties": {
+"additionalAttributes": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The additional searchable attributes of this resource. The attributes may vary from one resource type to another. Examples: `projectId` for Project, `dnsName` for DNS ManagedZone. This field contains a subset of the resource metadata fields that are returned by the List or Get APIs provided by the corresponding Google Cloud service (e.g., Compute Engine). see [API references and supported searchable attributes](https://cloud.google.com/asset-inventory/docs/supported-asset-types) to see which fields are included. You can search values of these fields through free text search. However, you should not consume the field programically as the field names and values may change as the Google Cloud service updates to a new incompatible API version. To search against the `additional_attributes`: * Use a free text query to match the attributes values. Example: to search `additional_attributes = { dnsName: \"foobar\" }`, you can issue a query `foobar`.",
+"type": "object"
+},
+"assetType": {
+"description": "The type of this resource. Example: `compute.googleapis.com/Disk`. To search against the `asset_type`: * Specify the `asset_type` field in your search request.",
+"type": "string"
+},
+"attachedResources": {
+"description": "Attached resources of this resource. For example, an OSConfig Inventory is an attached resource of a Compute Instance. This field is repeated because a resource could have multiple attached resources. This `attached_resources` field is not searchable. Some attributes of the attached resources are exposed in `additional_attributes` field, so as to allow users to search on them.",
+"items": {
+"$ref": "AttachedResource"
+},
+"type": "array"
+},
+"createTime": {
+"description": "The create timestamp of this resource, at which the resource was created. The granularity is in seconds. Timestamp.nanos will always be 0. This field is available only when the resource's Protobuf contains it. To search against `create_time`: * Use a field query. - value in seconds since unix epoch. Example: `createTime > 1609459200` - value in date string. Example: `createTime > 2021-01-01` - value in date-time string (must be quoted). Example: `createTime > \"2021-01-01T00:00:00\"`",
+"format": "google-datetime",
+"type": "string"
+},
+"description": {
+"description": "One or more paragraphs of text description of this resource. Maximum length could be up to 1M bytes. This field is available only when the resource's Protobuf contains it. To search against the `description`: * Use a field query. Example: `description:\"important instance\"` * Use a free text query. Example: `\"important instance\"`",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of this resource. This field is available only when the resource's Protobuf contains it. To search against the `display_name`: * Use a field query. Example: `displayName:\"My Instance\"` * Use a free text query. Example: `\"My Instance\"`",
+"type": "string"
+},
+"effectiveTags": {
+"description": "The effective tags on this resource. All of the tags that are both attached to and inherited by a resource are collectively called the effective tags. For more information, see [tag inheritance](https://cloud.google.com/resource-manager/docs/tags/tags-overview#inheritance). To search against the `effective_tags`: * Use a field query. Example: - `effectiveTagKeys:\"123456789/env*\"` - `effectiveTagKeys=\"123456789/env\"` - `effectiveTagKeys:\"env\"` - `effectiveTagKeyIds=\"tagKeys/123\"` - `effectiveTagValues:\"env\"` - `effectiveTagValues:\"env/prod\"` - `effectiveTagValues:\"123456789/env/prod*\"` - `effectiveTagValues=\"123456789/env/prod\"` - `effectiveTagValueIds=\"tagValues/456\"`",
+"items": {
+"$ref": "EffectiveTagDetails"
+},
+"type": "array"
+},
+"enrichments": {
+"description": "Enrichments of the asset. Currently supported enrichment types with SearchAllResources API: * RESOURCE_OWNERS The corresponding read masks in order to get the enrichment: * enrichments.resource_owners The corresponding required permissions: * cloudasset.assets.searchEnrichmentResourceOwners Example query to get resource owner enrichment: ``` scope: \"projects/my-project\" query: \"name: my-project\" assetTypes: \"cloudresourcemanager.googleapis.com/Project\" readMask: { paths: \"asset_type\" paths: \"name\" paths: \"enrichments.resource_owners\" } ```",
+"items": {
+"$ref": "AssetEnrichment"
+},
+"type": "array"
+},
+"folders": {
+"description": "The folder(s) that this resource belongs to, in the form of folders/{FOLDER_NUMBER}. This field is available when the resource belongs to one or more folders. To search against `folders`: * Use a field query. Example: `folders:(123 OR 456)` * Use a free text query. Example: `123` * Specify the `scope` field as this folder in your search request.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"kmsKey": {
+"deprecated": true,
+"description": "The Cloud KMS [CryptoKey](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys) name or [CryptoKeyVersion](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys.cryptoKeyVersions) name. This field only presents for the purpose of backward compatibility. Use the `kms_keys` field to retrieve Cloud KMS key information. This field is available only when the resource's Protobuf contains it and will only be populated for [these resource types](https://cloud.google.com/asset-inventory/docs/legacy-field-names#resource_types_with_the_to_be_deprecated_kmskey_field) for backward compatible purposes. To search against the `kms_key`: * Use a field query. Example: `kmsKey:key` * Use a free text query. Example: `key`",
+"type": "string"
+},
+"kmsKeys": {
+"description": "The Cloud KMS [CryptoKey](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys) names or [CryptoKeyVersion](https://cloud.google.com/kms/docs/reference/rest/v1/projects.locations.keyRings.cryptoKeys.cryptoKeyVersions) names. This field is available only when the resource's Protobuf contains it. To search against the `kms_keys`: * Use a field query. Example: `kmsKeys:key` * Use a free text query. Example: `key`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "User labels associated with this resource. See [Labelling and grouping Google Cloud resources](https://cloud.google.com/blog/products/gcp/labelling-and-grouping-your-google-cloud-platform-resources) for more information. This field is available only when the resource's Protobuf contains it. To search against the `labels`: * Use a field query: - query on any label's key or value. Example: `labels:prod` - query by a given label. Example: `labels.env:prod` - query by a given label's existence. Example: `labels.env:*` * Use a free text query. Example: `prod`",
+"type": "object"
+},
+"location": {
+"description": "Location can be `global`, regional like `us-east1`, or zonal like `us-west1-b`. This field is available only when the resource's Protobuf contains it. To search against the `location`: * Use a field query. Example: `location:us-west*` * Use a free text query. Example: `us-west*`",
+"type": "string"
+},
+"name": {
+"description": "The full resource name of this resource. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`. See [Cloud Asset Inventory Resource Name Format](https://cloud.google.com/asset-inventory/docs/resource-name-format) for more information. To search against the `name`: * Use a field query. Example: `name:instance1` * Use a free text query. Example: `instance1`",
+"type": "string"
+},
+"networkTags": {
+"description": "Network tags associated with this resource. Like labels, network tags are a type of annotations used to group Google Cloud resources. See [Labelling Google Cloud resources](https://cloud.google.com/blog/products/gcp/labelling-and-grouping-your-google-cloud-platform-resources) for more information. This field is available only when the resource's Protobuf contains it. To search against the `network_tags`: * Use a field query. Example: `networkTags:internal` * Use a free text query. Example: `internal`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"organization": {
+"description": "The organization that this resource belongs to, in the form of organizations/{ORGANIZATION_NUMBER}. This field is available when the resource belongs to an organization. To search against `organization`: * Use a field query. Example: `organization:123` * Use a free text query. Example: `123` * Specify the `scope` field as this organization in your search request.",
+"type": "string"
+},
+"parentAssetType": {
+"description": "The type of this resource's immediate parent, if there is one. To search against the `parent_asset_type`: * Use a field query. Example: `parentAssetType:\"cloudresourcemanager.googleapis.com/Project\"` * Use a free text query. Example: `cloudresourcemanager.googleapis.com/Project`",
+"type": "string"
+},
+"parentFullResourceName": {
+"description": "The full resource name of this resource's parent, if it has one. To search against the `parent_full_resource_name`: * Use a field query. Example: `parentFullResourceName:\"project-name\"` * Use a free text query. Example: `project-name`",
+"type": "string"
+},
+"project": {
+"description": "The project that this resource belongs to, in the form of projects/{PROJECT_NUMBER}. This field is available when the resource belongs to a project. To search against `project`: * Use a field query. Example: `project:12345` * Use a free text query. Example: `12345` * Specify the `scope` field as this project in your search request.",
+"type": "string"
+},
+"relationships": {
+"additionalProperties": {
+"$ref": "RelatedResources"
+},
+"description": "A map of related resources of this resource, keyed by the relationship type. A relationship type is in the format of {SourceType}_{ACTION}_{DestType}. Example: `DISK_TO_INSTANCE`, `DISK_TO_NETWORK`, `INSTANCE_TO_INSTANCEGROUP`. See [supported relationship types](https://cloud.google.com/asset-inventory/docs/supported-asset-types#supported_relationship_types).",
+"type": "object"
+},
+"sccSecurityMarks": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The actual content of Security Command Center security marks associated with the asset. To search against SCC SecurityMarks field: * Use a field query: - query by a given key value pair. Example: `sccSecurityMarks.foo=bar` - query by a given key's existence. Example: `sccSecurityMarks.foo:*`",
+"type": "object"
+},
+"state": {
+"description": "The state of this resource. Different resources types have different state definitions that are mapped from various fields of different resource types. This field is available only when the resource's Protobuf contains it. Example: If the resource is an instance provided by Compute Engine, its state will include PROVISIONING, STAGING, RUNNING, STOPPING, SUSPENDING, SUSPENDED, REPAIRING, and TERMINATED. See `status` definition in [API Reference](https://cloud.google.com/compute/docs/reference/rest/v1/instances). If the resource is a project provided by Resource Manager, its state will include LIFECYCLE_STATE_UNSPECIFIED, ACTIVE, DELETE_REQUESTED and DELETE_IN_PROGRESS. See `lifecycleState` definition in [API Reference](https://cloud.google.com/resource-manager/reference/rest/v1/projects). To search against the `state`: * Use a field query. Example: `state:RUNNING` * Use a free text query. Example: `RUNNING`",
+"type": "string"
+},
+"tagKeys": {
+"deprecated": true,
+"description": "This field is only present for the purpose of backward compatibility. Use the `tags` field instead. TagKey namespaced names, in the format of {ORG_ID}/{TAG_KEY_SHORT_NAME}. To search against the `tagKeys`: * Use a field query. Example: - `tagKeys:\"123456789/env*\"` - `tagKeys=\"123456789/env\"` - `tagKeys:\"env\"` * Use a free text query. Example: - `env`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"tagValueIds": {
+"deprecated": true,
+"description": "This field is only present for the purpose of backward compatibility. Use the `tags` field instead. TagValue IDs, in the format of tagValues/{TAG_VALUE_ID}. To search against the `tagValueIds`: * Use a field query. Example: - `tagValueIds=\"tagValues/456\"` * Use a free text query. Example: - `456`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"tagValues": {
+"deprecated": true,
+"description": "This field is only present for the purpose of backward compatibility. Use the `tags` field instead. TagValue namespaced names, in the format of {ORG_ID}/{TAG_KEY_SHORT_NAME}/{TAG_VALUE_SHORT_NAME}. To search against the `tagValues`: * Use a field query. Example: - `tagValues:\"env\"` - `tagValues:\"env/prod\"` - `tagValues:\"123456789/env/prod*\"` - `tagValues=\"123456789/env/prod\"` * Use a free text query. Example: - `prod`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"tags": {
+"description": "The tags directly attached to this resource. To search against the `tags`: * Use a field query. Example: - `tagKeys:\"123456789/env*\"` - `tagKeys=\"123456789/env\"` - `tagKeys:\"env\"` - `tagKeyIds=\"tagKeys/123\"` - `tagValues:\"env\"` - `tagValues:\"env/prod\"` - `tagValues:\"123456789/env/prod*\"` - `tagValues=\"123456789/env/prod\"` - `tagValueIds=\"tagValues/456\"` * Use a free text query. Example: - `env/prod`",
+"items": {
+"$ref": "Tag"
+},
+"type": "array"
+},
+"updateTime": {
+"description": "The last update timestamp of this resource, at which the resource was last modified or deleted. The granularity is in seconds. Timestamp.nanos will always be 0. This field is available only when the resource's Protobuf contains it. To search against `update_time`: * Use a field query. - value in seconds since unix epoch. Example: `updateTime < 1609459200` - value in date string. Example: `updateTime < 2021-01-01` - value in date-time string (must be quoted). Example: `updateTime < \"2021-01-01T00:00:00\"`",
+"format": "google-datetime",
+"type": "string"
+},
+"versionedResources": {
+"description": "Versioned resource representations of this resource. This is repeated because there could be multiple versions of resource representations during version migration. This `versioned_resources` field is not searchable. Some attributes of the resource representations are exposed in `additional_attributes` field, so as to allow users to search on them.",
+"items": {
+"$ref": "VersionedResource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ResourceSelector": {
+"description": "Specifies the resource to analyze for access policies, which may be set directly on the resource, or on ancestors such as organizations, folders or projects.",
+"id": "ResourceSelector",
+"properties": {
+"fullResourceName": {
+"description": "Required. The [full resource name] (https://cloud.google.com/asset-inventory/docs/resource-name-format) of a resource of [supported resource types](https://cloud.google.com/asset-inventory/docs/supported-asset-types#analyzable_asset_types).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SavedQuery": {
+"description": "A saved query which can be shared with others or used later.",
+"id": "SavedQuery",
+"properties": {
+"content": {
+"$ref": "QueryContent",
+"description": "The query content."
+},
+"createTime": {
+"description": "Output only. The create time of this saved query.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"creator": {
+"description": "Output only. The account's email address who has created this saved query.",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "The description of this saved query. This value should be fewer than 255 characters.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels applied on the resource. This value should not contain more than 10 entries. The key and value of each entry must be non-empty and fewer than 64 characters.",
+"type": "object"
+},
+"lastUpdateTime": {
+"description": "Output only. The last update time of this saved query.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"lastUpdater": {
+"description": "Output only. The account's email address who has updated this saved query most recently.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "The resource name of the saved query. The format must be: * projects/project_number/savedQueries/saved_query_id * folders/folder_number/savedQueries/saved_query_id * organizations/organization_number/savedQueries/saved_query_id",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchAllIamPoliciesResponse": {
+"description": "Search all IAM policies response.",
+"id": "SearchAllIamPoliciesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Set if there are more results than those appearing in this response; to get the next set of results, call this method again, using this value as the `page_token`.",
+"type": "string"
+},
+"results": {
+"description": "A list of IAM policies that match the search query. Related information such as the associated resource is returned along with the policy.",
+"items": {
+"$ref": "IamPolicySearchResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SearchAllResourcesResponse": {
+"description": "Search all resources response.",
+"id": "SearchAllResourcesResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there are more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+},
+"results": {
+"description": "A list of Resources that match the search query. It contains the resource standard metadata information.",
+"items": {
+"$ref": "ResourceSearchResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SoftwarePackage": {
+"description": "Software package information of the operating system.",
+"id": "SoftwarePackage",
+"properties": {
+"aptPackage": {
+"$ref": "VersionedPackage",
+"description": "Details of an APT package. For details about the apt package manager, see https://wiki.debian.org/Apt."
+},
+"cosPackage": {
+"$ref": "VersionedPackage",
+"description": "Details of a COS package."
+},
+"googetPackage": {
+"$ref": "VersionedPackage",
+"description": "Details of a Googet package. For details about the googet package manager, see https://github.com/google/googet."
+},
+"qfePackage": {
+"$ref": "WindowsQuickFixEngineeringPackage",
+"description": "Details of a Windows Quick Fix engineering package. See https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering for info in Windows Quick Fix Engineering."
+},
+"windowsApplication": {
+"$ref": "WindowsApplication",
+"description": "Details of Windows Application."
+},
+"wuaPackage": {
+"$ref": "WindowsUpdatePackage",
+"description": "Details of a Windows Update package. See https://docs.microsoft.com/en-us/windows/win32/api/_wua/ for information about Windows Update."
+},
+"yumPackage": {
+"$ref": "VersionedPackage",
+"description": "Yum package info. For details about the yum package manager, see https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/ch-yum."
+},
+"zypperPackage": {
+"$ref": "VersionedPackage",
+"description": "Details of a Zypper package. For details about the Zypper package manager, see https://en.opensuse.org/SDB:Zypper_manual."
+},
+"zypperPatch": {
+"$ref": "ZypperPatch",
+"description": "Details of a Zypper patch. For details about the Zypper package manager, see https://en.opensuse.org/SDB:Zypper_manual."
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TableFieldSchema": {
+"description": "A field in TableSchema.",
+"id": "TableFieldSchema",
+"properties": {
+"field": {
+"description": "The field name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 128 characters.",
+"type": "string"
+},
+"fields": {
+"description": "Describes the nested schema fields if the type property is set to RECORD.",
+"items": {
+"$ref": "TableFieldSchema"
+},
+"type": "array"
+},
+"mode": {
+"description": "The field mode. Possible values include NULLABLE, REQUIRED and REPEATED. The default value is NULLABLE.",
+"type": "string"
+},
+"type": {
+"description": "The field data type. Possible values include * STRING * BYTES * INTEGER * FLOAT * BOOLEAN * TIMESTAMP * DATE * TIME * DATETIME * GEOGRAPHY, * NUMERIC, * BIGNUMERIC, * RECORD (where RECORD indicates that the field contains a nested schema).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TableSchema": {
+"description": "BigQuery Compatible table schema.",
+"id": "TableSchema",
+"properties": {
+"fields": {
+"description": "Describes the fields in a table.",
+"items": {
+"$ref": "TableFieldSchema"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Tag": {
+"description": "The key and value for a [tag](https://cloud.google.com/resource-manager/docs/tags/tags-overview).",
+"id": "Tag",
+"properties": {
+"tagKey": {
+"description": "TagKey namespaced name, in the format of {ORG_ID}/{TAG_KEY_SHORT_NAME}.",
+"type": "string"
+},
+"tagKeyId": {
+"description": "TagKey ID, in the format of tagKeys/{TAG_KEY_ID}.",
+"type": "string"
+},
+"tagValue": {
+"description": "TagValue namespaced name, in the format of {ORG_ID}/{TAG_KEY_SHORT_NAME}/{TAG_VALUE_SHORT_NAME}.",
+"type": "string"
+},
+"tagValueId": {
+"description": "TagValue ID, in the format of tagValues/{TAG_VALUE_ID}.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TemporalAsset": {
+"description": "An asset in Google Cloud and its temporal metadata, including the time window when it was observed and its status during that window.",
+"id": "TemporalAsset",
+"properties": {
+"asset": {
+"$ref": "Asset",
+"description": "An asset in Google Cloud."
+},
+"deleted": {
+"description": "Whether the asset has been deleted or not.",
+"type": "boolean"
+},
+"priorAsset": {
+"$ref": "Asset",
+"description": "Prior copy of the asset. Populated if prior_asset_state is PRESENT. Currently this is only set for responses in Real-Time Feed."
+},
+"priorAssetState": {
+"description": "State of prior_asset.",
+"enum": [
+"PRIOR_ASSET_STATE_UNSPECIFIED",
+"PRESENT",
+"INVALID",
+"DOES_NOT_EXIST",
+"DELETED"
+],
+"enumDescriptions": [
+"prior_asset is not applicable for the current asset.",
+"prior_asset is populated correctly.",
+"Failed to set prior_asset.",
+"Current asset is the first known state.",
+"prior_asset is a deletion."
+],
+"type": "string"
+},
+"window": {
+"$ref": "TimeWindow",
+"description": "The time window when the asset data and state was observed."
+}
+},
+"type": "object"
+},
+"TimeWindow": {
+"description": "A time window specified by its `start_time` and `end_time`.",
+"id": "TimeWindow",
+"properties": {
+"endTime": {
+"description": "End time of the time window (inclusive). If not specified, the current timestamp is used instead.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "Start time of the time window (exclusive).",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpdateFeedRequest": {
+"description": "Update asset feed request.",
+"id": "UpdateFeedRequest",
+"properties": {
+"feed": {
+"$ref": "Feed",
+"description": "Required. The new values of feed details. It must match an existing feed and the field `name` must be in the format of: projects/project_number/feeds/feed_id or folders/folder_number/feeds/feed_id or organizations/organization_number/feeds/feed_id."
+},
+"updateMask": {
+"description": "Required. Only updates the `feed` fields indicated by this mask. The field mask must not be empty, and it must not contain fields that are immutable or only set by the server.",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VersionedPackage": {
+"description": "Information related to the a standard versioned package. This includes package info for APT, Yum, Zypper, and Googet package managers.",
+"id": "VersionedPackage",
+"properties": {
+"architecture": {
+"description": "The system architecture this package is intended for.",
+"type": "string"
+},
+"packageName": {
+"description": "The name of the package.",
+"type": "string"
+},
+"version": {
+"description": "The version of the package.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VersionedResource": {
+"description": "Resource representation as defined by the corresponding service providing the resource for a given API version.",
+"id": "VersionedResource",
+"properties": {
+"resource": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "JSON representation of the resource as defined by the corresponding service providing this resource. Example: If the resource is an instance provided by Compute Engine, this field will contain the JSON representation of the instance as defined by Compute Engine: `https://cloud.google.com/compute/docs/reference/rest/v1/instances`. You can find the resource definition for each supported resource type in this table: `https://cloud.google.com/asset-inventory/docs/supported-asset-types`",
+"type": "object"
+},
+"version": {
+"description": "API version of the resource. Example: If the resource is an instance provided by Compute Engine v1 API as defined in `https://cloud.google.com/compute/docs/reference/rest/v1/instances`, version will be \"v1\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WindowsApplication": {
+"description": "Contains information about a Windows application that is retrieved from the Windows Registry. For more information about these fields, see: https://docs.microsoft.com/en-us/windows/win32/msi/uninstall-registry-key",
+"id": "WindowsApplication",
+"properties": {
+"displayName": {
+"description": "The name of the application or product.",
+"type": "string"
+},
+"displayVersion": {
+"description": "The version of the product or application in string format.",
+"type": "string"
+},
+"helpLink": {
+"description": "The internet address for technical support.",
+"type": "string"
+},
+"installDate": {
+"$ref": "Date",
+"description": "The last time this product received service. The value of this property is replaced each time a patch is applied or removed from the product or the command-line option is used to repair the product."
+},
+"publisher": {
+"description": "The name of the manufacturer for the product or application.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WindowsQuickFixEngineeringPackage": {
+"description": "Information related to a Quick Fix Engineering package. Fields are taken from Windows QuickFixEngineering Interface and match the source names: https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/win32-quickfixengineering",
+"id": "WindowsQuickFixEngineeringPackage",
+"properties": {
+"caption": {
+"description": "A short textual description of the QFE update.",
+"type": "string"
+},
+"description": {
+"description": "A textual description of the QFE update.",
+"type": "string"
+},
+"hotFixId": {
+"description": "Unique identifier associated with a particular QFE update.",
+"type": "string"
+},
+"installTime": {
+"description": "Date that the QFE update was installed. Mapped from installed_on field.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WindowsUpdateCategory": {
+"description": "Categories specified by the Windows Update.",
+"id": "WindowsUpdateCategory",
+"properties": {
+"id": {
+"description": "The identifier of the windows update category.",
+"type": "string"
+},
+"name": {
+"description": "The name of the windows update category.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WindowsUpdatePackage": {
+"description": "Details related to a Windows Update package. Field data and names are taken from Windows Update API IUpdate Interface: https://docs.microsoft.com/en-us/windows/win32/api/_wua/ Descriptive fields like title, and description are localized based on the locale of the VM being updated.",
+"id": "WindowsUpdatePackage",
+"properties": {
+"categories": {
+"description": "The categories that are associated with this update package.",
+"items": {
+"$ref": "WindowsUpdateCategory"
+},
+"type": "array"
+},
+"description": {
+"description": "The localized description of the update package.",
+"type": "string"
+},
+"kbArticleIds": {
+"description": "A collection of Microsoft Knowledge Base article IDs that are associated with the update package.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"lastDeploymentChangeTime": {
+"description": "The last published date of the update, in (UTC) date and time.",
+"format": "google-datetime",
+"type": "string"
+},
+"moreInfoUrls": {
+"description": "A collection of URLs that provide more information about the update package.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"revisionNumber": {
+"description": "The revision number of this update package.",
+"format": "int32",
+"type": "integer"
+},
+"supportUrl": {
+"description": "A hyperlink to the language-specific support information for the update.",
+"type": "string"
+},
+"title": {
+"description": "The localized title of the update package.",
+"type": "string"
+},
+"updateId": {
+"description": "Gets the identifier of an update package. Stays the same across revisions.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ZypperPatch": {
+"description": "Details related to a Zypper Patch.",
+"id": "ZypperPatch",
+"properties": {
+"category": {
+"description": "The category of the patch.",
+"type": "string"
+},
+"patchName": {
+"description": "The name of the patch.",
+"type": "string"
+},
+"severity": {
+"description": "The severity specified for this patch",
+"type": "string"
+},
+"summary": {
+"description": "Any summary information provided about this patch.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Asset API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudfunctions.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudfunctions.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..41045d69100a5f63353c269bf0da91daae53fa30
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudfunctions.v1.json
@@ -0,0 +1,1409 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudfunctions.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Functions",
+"description": "Manages lightweight user-provided functions executed in response to events.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/functions",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudfunctions:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudfunctions.mtls.googleapis.com/",
+"name": "cloudfunctions",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "cloudfunctions.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/operations",
+"httpMethod": "GET",
+"id": "cloudfunctions.operations.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "cloudfunctions.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"functions": {
+"methods": {
+"call": {
+"description": "Synchronously invokes a deployed Cloud Function. To be used for testing purposes as very limited traffic is allowed. For more information on the actual limits, refer to [Rate Limits](https://cloud.google.com/functions/quotas#rate_limits).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:call",
+"httpMethod": "POST",
+"id": "cloudfunctions.projects.locations.functions.call",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the function to be called.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:call",
+"request": {
+"$ref": "CallFunctionRequest"
+},
+"response": {
+"$ref": "CallFunctionResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a new function. If a function with the given name already exists in the specified project, the long running operation will return `ALREADY_EXISTS` error.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions",
+"httpMethod": "POST",
+"id": "cloudfunctions.projects.locations.functions.create",
+"parameterOrder": [
+"location"
+],
+"parameters": {
+"location": {
+"description": "Required. The project and location in which the function should be created, specified in the format `projects/*/locations/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+location}/functions",
+"request": {
+"$ref": "CloudFunction"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a function with the given name from the specified project. If the given function is used by some trigger, the trigger will be updated to remove this function.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}",
+"httpMethod": "DELETE",
+"id": "cloudfunctions.projects.locations.functions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the function which should be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"generateDownloadUrl": {
+"description": "Returns a signed URL for downloading deployed function source code. The URL is only valid for a limited period and should be used within minutes after generation. For more information about the signed URL usage see: https://cloud.google.com/storage/docs/access-control/signed-urls",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:generateDownloadUrl",
+"httpMethod": "POST",
+"id": "cloudfunctions.projects.locations.functions.generateDownloadUrl",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of function for which source code Google Cloud Storage signed URL should be generated.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:generateDownloadUrl",
+"request": {
+"$ref": "GenerateDownloadUrlRequest"
+},
+"response": {
+"$ref": "GenerateDownloadUrlResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"generateUploadUrl": {
+"description": "Returns a signed URL for uploading a function source code. For more information about the signed URL usage see: https://cloud.google.com/storage/docs/access-control/signed-urls. Once the function source code upload is complete, the used signed URL should be provided in CreateFunction or UpdateFunction request as a reference to the function source code. When uploading source code to the generated signed URL, please follow these restrictions: * Source file type should be a zip file. * Source file size should not exceed 100MB limit. * No credentials should be attached - the signed URLs provide access to the target bucket using internal service identity; if credentials were attached, the identity from the credentials would be used, but that identity does not have permissions to upload files to the URL. When making a HTTP PUT request, these two headers need to be specified: * `content-type: application/zip` * `x-goog-content-length-range: 0,104857600` And this header SHOULD NOT be specified: * `Authorization: Bearer YOUR_TOKEN`",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions:generateUploadUrl",
+"httpMethod": "POST",
+"id": "cloudfunctions.projects.locations.functions.generateUploadUrl",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "The project and location in which the Google Cloud Storage signed URL should be generated, specified in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/functions:generateUploadUrl",
+"request": {
+"$ref": "GenerateUploadUrlRequest"
+},
+"response": {
+"$ref": "GenerateUploadUrlResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns a function with the given name from the requested project.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}",
+"httpMethod": "GET",
+"id": "cloudfunctions.projects.locations.functions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the function which details should be obtained.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"versionId": {
+"description": "Optional. The optional version of the function whose details should be obtained. The version of a 1st Gen function is an integer that starts from 1 and gets incremented on redeployments. Each deployment creates a config version of the underlying function. GCF may keep historical configs for old versions. This field can be specified to fetch the historical configs. Leave it blank or set to 0 to get the latest version of the function.",
+"format": "int64",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "CloudFunction"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the IAM access control policy for a function. Returns an empty policy if the function exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "cloudfunctions.projects.locations.functions.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns a list of functions that belong to the requested project.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions",
+"httpMethod": "GET",
+"id": "cloudfunctions.projects.locations.functions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of functions to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListFunctionsResponse`; indicates that this is a continuation of a prior `ListFunctions` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The project and location from which the function should be listed, specified in the format `projects/*/locations/*` If you want to list functions in all locations, use \"-\" in place of a location. When listing functions in all locations, if one or more location(s) are unreachable, the response will contain functions from all reachable locations along with the names of any unreachable locations.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/functions",
+"response": {
+"$ref": "ListFunctionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates existing function.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}",
+"httpMethod": "PATCH",
+"id": "cloudfunctions.projects.locations.functions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields in `CloudFunction` that have to be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "CloudFunction"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the IAM access control policy on the specified function. Replaces any existing policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "cloudfunctions.projects.locations.functions.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Tests the specified permissions against the IAM access control policy for a function. If the function does not exist, this will return an empty set of permissions, not a NOT_FOUND error.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "cloudfunctions.projects.locations.functions.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20250102",
+"rootUrl": "https://cloudfunctions.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AutomaticUpdatePolicy": {
+"description": "Security patches are applied automatically to the runtime without requiring the function to be redeployed.",
+"id": "AutomaticUpdatePolicy",
+"properties": {},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CallFunctionRequest": {
+"description": "Request for the `CallFunction` method.",
+"id": "CallFunctionRequest",
+"properties": {
+"data": {
+"description": "Required. Input to be passed to the function.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CallFunctionResponse": {
+"description": "Response of `CallFunction` method.",
+"id": "CallFunctionResponse",
+"properties": {
+"error": {
+"description": "Either system or user-function generated error. Set if execution was not successful.",
+"type": "string"
+},
+"executionId": {
+"description": "Execution id of function invocation.",
+"type": "string"
+},
+"result": {
+"description": "Result populated for successful execution of synchronous function. Will not be populated if function does not return a result through context.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudFunction": {
+"description": "Describes a Cloud Function that contains user computation executed in response to an event. It encapsulate function and triggers configurations.",
+"id": "CloudFunction",
+"properties": {
+"automaticUpdatePolicy": {
+"$ref": "AutomaticUpdatePolicy"
+},
+"availableMemoryMb": {
+"description": "The amount of memory in MB available for a function. Defaults to 256MB.",
+"format": "int32",
+"type": "integer"
+},
+"buildEnvironmentVariables": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Build environment variables that shall be available during build time.",
+"type": "object"
+},
+"buildId": {
+"description": "Output only. The Cloud Build ID of the latest successful deployment of the function.",
+"readOnly": true,
+"type": "string"
+},
+"buildName": {
+"description": "Output only. The Cloud Build Name of the function deployment. `projects//locations//builds/`.",
+"readOnly": true,
+"type": "string"
+},
+"buildServiceAccount": {
+"description": "A service account the user provides for use with Cloud Build. The format of this field is `projects/{projectId}/serviceAccounts/{serviceAccountEmail}`.",
+"type": "string"
+},
+"buildWorkerPool": {
+"description": "Name of the Cloud Build Custom Worker Pool that should be used to build the function. The format of this field is `projects/{project}/locations/{region}/workerPools/{workerPool}` where `{project}` and `{region}` are the project id and region respectively where the worker pool is defined and `{workerPool}` is the short name of the worker pool. If the project id is not the same as the function, then the Cloud Functions Service Agent (`service-@gcf-admin-robot.iam.gserviceaccount.com`) must be granted the role Cloud Build Custom Workers Builder (`roles/cloudbuild.customworkers.builder`) in the project.",
+"type": "string"
+},
+"description": {
+"description": "User-provided description of a function.",
+"type": "string"
+},
+"dockerRegistry": {
+"deprecated": true,
+"description": "Docker Registry to use for this deployment. Deprecated: Container Registry option will no longer be available after March 2025: https://cloud.google.com/artifact-registry/docs/transition/transition-from-gcr Please use Artifact Registry instead, which is the default choice. If unspecified, it defaults to `ARTIFACT_REGISTRY`. If `docker_repository` field is specified, this field should either be left unspecified or set to `ARTIFACT_REGISTRY`.",
+"enum": [
+"DOCKER_REGISTRY_UNSPECIFIED",
+"CONTAINER_REGISTRY",
+"ARTIFACT_REGISTRY"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Docker images will be stored in multi-regional Container Registry repositories named `gcf`.",
+"Docker images will be stored in regional Artifact Registry repositories. By default, GCF will create and use repositories named `gcf-artifacts` in every region in which a function is deployed. But the repository to use can also be specified by the user using the `docker_repository` field."
+],
+"type": "string"
+},
+"dockerRepository": {
+"description": "User-managed repository created in Artifact Registry to which the function's Docker image will be pushed after it is built by Cloud Build. May optionally be encrypted with a customer-managed encryption key (CMEK). If unspecified and `docker_registry` is not explicitly set to `CONTAINER_REGISTRY`, GCF will create and use a default Artifact Registry repository named 'gcf-artifacts' in the region. It must match the pattern `projects/{project}/locations/{location}/repositories/{repository}`. Cross-project repositories are not supported. Cross-location repositories are not supported. Repository format must be 'DOCKER'.",
+"type": "string"
+},
+"entryPoint": {
+"description": "The name of the function (as defined in source code) that will be executed. Defaults to the resource name suffix (ID of the function), if not specified.",
+"type": "string"
+},
+"environmentVariables": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Environment variables that shall be available during function execution.",
+"type": "object"
+},
+"eventTrigger": {
+"$ref": "EventTrigger",
+"description": "A source that fires events in response to a condition in another service."
+},
+"httpsTrigger": {
+"$ref": "HttpsTrigger",
+"description": "An HTTPS endpoint type of source that can be triggered via URL."
+},
+"ingressSettings": {
+"description": "The ingress settings for the function, controlling what traffic can reach it.",
+"enum": [
+"INGRESS_SETTINGS_UNSPECIFIED",
+"ALLOW_ALL",
+"ALLOW_INTERNAL_ONLY",
+"ALLOW_INTERNAL_AND_GCLB"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Allow HTTP traffic from public and private sources.",
+"Allow HTTP traffic from only private VPC sources.",
+"Allow HTTP traffic from private VPC sources and through GCLB."
+],
+"type": "string"
+},
+"kmsKeyName": {
+"description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function resources. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`. If specified, you must also provide an artifact registry repository using the `docker_repository` field that was created with the same KMS crypto key. The following service accounts need to be granted the role 'Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter)' on the Key/KeyRing/Project/Organization (least access preferred). 1. Google Cloud Functions service account (service-{project_number}@gcf-admin-robot.iam.gserviceaccount.com) - Required to protect the function's image. 2. Google Storage service account (service-{project_number}@gs-project-accounts.iam.gserviceaccount.com) - Required to protect the function's source code. If this service account does not exist, deploying a function without a KMS key or retrieving the service agent name provisions it. For more information, see https://cloud.google.com/storage/docs/projects#service-agents and https://cloud.google.com/storage/docs/getting-service-agent#gsutil. Google Cloud Functions delegates access to service agents to protect function resources in internal projects that are not accessible by the end user.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels associated with this Cloud Function.",
+"type": "object"
+},
+"maxInstances": {
+"description": "The limit on the maximum number of function instances that may coexist at a given time. In some cases, such as rapid traffic surges, Cloud Functions may, for a short period of time, create more instances than the specified max instances limit. If your function cannot tolerate this temporary behavior, you may want to factor in a safety margin and set a lower max instances value than your function can tolerate. See the [Max Instances](https://cloud.google.com/functions/docs/max-instances) Guide for more details.",
+"format": "int32",
+"type": "integer"
+},
+"minInstances": {
+"description": "A lower bound for the number function instances that may coexist at a given time.",
+"format": "int32",
+"type": "integer"
+},
+"name": {
+"description": "A user-defined name of the function. Function names must be unique globally and match pattern `projects/*/locations/*/functions/*`",
+"type": "string"
+},
+"network": {
+"deprecated": true,
+"description": "Deprecated: use vpc_connector",
+"type": "string"
+},
+"onDeployUpdatePolicy": {
+"$ref": "OnDeployUpdatePolicy"
+},
+"runtime": {
+"description": "The runtime in which to run the function. Required when deploying a new function, optional when updating an existing function. For a complete list of possible choices, see the [`gcloud` command reference](https://cloud.google.com/sdk/gcloud/reference/functions/deploy#--runtime).",
+"type": "string"
+},
+"secretEnvironmentVariables": {
+"description": "Secret environment variables configuration.",
+"items": {
+"$ref": "SecretEnvVar"
+},
+"type": "array"
+},
+"secretVolumes": {
+"description": "Secret volumes configuration.",
+"items": {
+"$ref": "SecretVolume"
+},
+"type": "array"
+},
+"serviceAccountEmail": {
+"description": "The email of the function's service account. If empty, defaults to `{project_id}@appspot.gserviceaccount.com`.",
+"type": "string"
+},
+"sourceArchiveUrl": {
+"description": "The Google Cloud Storage URL, starting with `gs://`, pointing to the zip archive which contains the function.",
+"type": "string"
+},
+"sourceRepository": {
+"$ref": "SourceRepository",
+"description": "**Beta Feature** The source repository where a function is hosted."
+},
+"sourceToken": {
+"description": "Input only. An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments.",
+"type": "string"
+},
+"sourceUploadUrl": {
+"description": "The Google Cloud Storage signed URL used for source uploading, generated by calling [google.cloud.functions.v1.GenerateUploadUrl]. The signature is validated on write methods (Create, Update) The signature is stripped from the Function object on read methods (Get, List)",
+"type": "string"
+},
+"status": {
+"description": "Output only. Status of the function deployment.",
+"enum": [
+"CLOUD_FUNCTION_STATUS_UNSPECIFIED",
+"ACTIVE",
+"OFFLINE",
+"DEPLOY_IN_PROGRESS",
+"DELETE_IN_PROGRESS",
+"UNKNOWN"
+],
+"enumDescriptions": [
+"Not specified. Invalid state.",
+"Function has been successfully deployed and is serving.",
+"Function deployment failed and the function isn\u2019t serving.",
+"Function is being created or updated.",
+"Function is being deleted.",
+"Function deployment failed and the function serving state is undefined. The function should be updated or deleted to move it out of this state."
+],
+"readOnly": true,
+"type": "string"
+},
+"timeout": {
+"description": "The function execution timeout. Execution is considered failed and can be terminated if the function is not completed at the end of the timeout period. Defaults to 60 seconds.",
+"format": "google-duration",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last update timestamp of a Cloud Function.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"versionId": {
+"description": "Output only. The version identifier of the Cloud Function. Each deployment attempt results in a new version of a function being created.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"vpcConnector": {
+"description": "The VPC Network Connector that this cloud function can connect to. It can be either the fully-qualified URI, or the short name of the network connector resource. The format of this field is `projects/*/locations/*/connectors/*` This field is mutually exclusive with `network` field and will eventually replace it. See [the VPC documentation](https://cloud.google.com/compute/docs/vpc) for more information on connecting Cloud projects.",
+"type": "string"
+},
+"vpcConnectorEgressSettings": {
+"description": "The egress settings for the connector, controlling what traffic is diverted through it.",
+"enum": [
+"VPC_CONNECTOR_EGRESS_SETTINGS_UNSPECIFIED",
+"PRIVATE_RANGES_ONLY",
+"ALL_TRAFFIC"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Use the VPC Access Connector only for private IP space from RFC1918.",
+"Force the use of VPC Access Connector for all egress traffic from the function."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventTrigger": {
+"description": "Describes EventTrigger, used to request events be sent from another service.",
+"id": "EventTrigger",
+"properties": {
+"eventType": {
+"description": "Required. The type of event to observe. For example: `providers/cloud.storage/eventTypes/object.change` and `providers/cloud.pubsub/eventTypes/topic.publish`. Event types match pattern `providers/*/eventTypes/*.*`. The pattern contains: 1. namespace: For example, `cloud.storage` and `google.firebase.analytics`. 2. resource type: The type of resource on which event occurs. For example, the Google Cloud Storage API includes the type `object`. 3. action: The action that generates the event. For example, action for a Google Cloud Storage Object is 'change'. These parts are lower case.",
+"type": "string"
+},
+"failurePolicy": {
+"$ref": "FailurePolicy",
+"description": "Specifies policy for failed executions."
+},
+"resource": {
+"description": "Required. The resource(s) from which to observe events, for example, `projects/_/buckets/myBucket`. Not all syntactically correct values are accepted by all services. For example: 1. The authorization model must support it. Google Cloud Functions only allows EventTriggers to be deployed that observe resources in the same project as the `CloudFunction`. 2. The resource type must match the pattern expected for an `event_type`. For example, an `EventTrigger` that has an `event_type` of \"google.pubsub.topic.publish\" should have a resource that matches Google Cloud Pub/Sub topics. Additionally, some services may support short names when creating an `EventTrigger`. These will always be returned in the normalized \"long\" format. See each *service's* documentation for supported formats.",
+"type": "string"
+},
+"service": {
+"description": "The hostname of the service that should be observed. If no string is provided, the default service implementing the API will be used. For example, `storage.googleapis.com` is the default for all event types in the `google.storage` namespace.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FailurePolicy": {
+"description": "Describes the policy in case of function's execution failure. If empty, then defaults to ignoring failures (i.e. not retrying them).",
+"id": "FailurePolicy",
+"properties": {
+"retry": {
+"$ref": "Retry",
+"description": "If specified, then the function will be retried in case of a failure."
+}
+},
+"type": "object"
+},
+"GenerateDownloadUrlRequest": {
+"description": "Request of `GenerateDownloadUrl` method.",
+"id": "GenerateDownloadUrlRequest",
+"properties": {
+"versionId": {
+"description": "The optional version of function. If not set, default, current version is used.",
+"format": "uint64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GenerateDownloadUrlResponse": {
+"description": "Response of `GenerateDownloadUrl` method.",
+"id": "GenerateDownloadUrlResponse",
+"properties": {
+"downloadUrl": {
+"description": "The generated Google Cloud Storage signed URL that should be used for function source code download.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GenerateUploadUrlRequest": {
+"description": "Request of `GenerateSourceUploadUrl` method.",
+"id": "GenerateUploadUrlRequest",
+"properties": {
+"kmsKeyName": {
+"description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt function source code objects in intermediate Cloud Storage buckets. When you generate an upload url and upload your source code, it gets copied to an intermediate Cloud Storage bucket. The source code is then copied to a versioned directory in the sources bucket in the consumer project during the function deployment. It must match the pattern `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{crypto_key}`. The Google Cloud Functions service account (service-{project_number}@gcf-admin-robot.iam.gserviceaccount.com) must be granted the role 'Cloud KMS CryptoKey Encrypter/Decrypter (roles/cloudkms.cryptoKeyEncrypterDecrypter)' on the Key/KeyRing/Project/Organization (least access preferred). GCF will delegate access to the Google Storage service account in the internal project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GenerateUploadUrlResponse": {
+"description": "Response of `GenerateSourceUploadUrl` method.",
+"id": "GenerateUploadUrlResponse",
+"properties": {
+"uploadUrl": {
+"description": "The generated Google Cloud Storage signed URL that should be used for a function source code upload. The uploaded file should be a zip archive which contains a function.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpsTrigger": {
+"description": "Describes HttpsTrigger, could be used to connect web hooks to function.",
+"id": "HttpsTrigger",
+"properties": {
+"securityLevel": {
+"description": "The security level for the function.",
+"enum": [
+"SECURITY_LEVEL_UNSPECIFIED",
+"SECURE_ALWAYS",
+"SECURE_OPTIONAL"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect.",
+"Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly."
+],
+"type": "string"
+},
+"url": {
+"description": "Output only. The deployed url for the function.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListFunctionsResponse": {
+"description": "Response for the `ListFunctions` method.",
+"id": "ListFunctionsResponse",
+"properties": {
+"functions": {
+"description": "The functions that match the request.",
+"items": {
+"$ref": "CloudFunction"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If not empty, indicates that there may be more functions that match the request; this value should be passed in a new google.cloud.functions.v1.ListFunctionsRequest to get more functions.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached. The response does not include any functions from these locations.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OnDeployUpdatePolicy": {
+"description": "Security patches are only applied when a function is redeployed.",
+"id": "OnDeployUpdatePolicy",
+"properties": {
+"runtimeVersion": {
+"description": "Output only. Contains the runtime version which was used during latest function deployment.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadataV1": {
+"description": "Metadata describing an Operation",
+"id": "OperationMetadataV1",
+"properties": {
+"buildId": {
+"description": "The Cloud Build ID of the function created or updated by an API call. This field is only populated for Create and Update operations.",
+"type": "string"
+},
+"buildName": {
+"description": "The Cloud Build Name of the function deployment. This field is only populated for Create and Update operations. `projects//locations//builds/`.",
+"type": "string"
+},
+"request": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The original request that started the operation.",
+"type": "object"
+},
+"sourceToken": {
+"description": "An identifier for Firebase function sources. Disclaimer: This field is only supported for Firebase function deployments.",
+"type": "string"
+},
+"target": {
+"description": "Target of the operation - for example `projects/project-1/locations/region-1/functions/function-1`",
+"type": "string"
+},
+"type": {
+"description": "Type of operation.",
+"enum": [
+"OPERATION_UNSPECIFIED",
+"CREATE_FUNCTION",
+"UPDATE_FUNCTION",
+"DELETE_FUNCTION"
+],
+"enumDescriptions": [
+"Unknown operation type.",
+"Triggered by CreateFunction call",
+"Triggered by UpdateFunction call",
+"Triggered by DeleteFunction call."
+],
+"type": "string"
+},
+"updateTime": {
+"description": "The last update timestamp of the operation.",
+"format": "google-datetime",
+"type": "string"
+},
+"versionId": {
+"description": "Version id of the function created or updated by an API call. This field is only populated for Create and Update operations.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Retry": {
+"description": "Describes the retry policy in case of function's execution failure. A function execution will be retried on any failure. A failed execution will be retried up to 7 days with an exponential backoff (capped at 10 seconds). Retried execution is charged as any other execution.",
+"id": "Retry",
+"properties": {},
+"type": "object"
+},
+"SecretEnvVar": {
+"description": "Configuration for a secret environment variable. It has the information necessary to fetch the secret value from secret manager and expose it as an environment variable.",
+"id": "SecretEnvVar",
+"properties": {
+"key": {
+"description": "Name of the environment variable.",
+"type": "string"
+},
+"projectId": {
+"description": "Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function's project assuming that the secret exists in the same project as of the function.",
+"type": "string"
+},
+"secret": {
+"description": "Name of the secret in secret manager (not the full resource name).",
+"type": "string"
+},
+"version": {
+"description": "Version of the secret (version number or the string 'latest'). It is recommended to use a numeric version for secret environment variables as any updates to the secret value is not reflected until new instances start.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SecretVersion": {
+"description": "Configuration for a single version.",
+"id": "SecretVersion",
+"properties": {
+"path": {
+"description": "Relative path of the file under the mount path where the secret value for this version will be fetched and made available. For example, setting the mount_path as '/etc/secrets' and path as `/secret_foo` would mount the secret value file at `/etc/secrets/secret_foo`.",
+"type": "string"
+},
+"version": {
+"description": "Version of the secret (version number or the string 'latest'). It is preferable to use `latest` version with secret volumes as secret value changes are reflected immediately.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SecretVolume": {
+"description": "Configuration for a secret volume. It has the information necessary to fetch the secret value from secret manager and make it available as files mounted at the requested paths within the application container. Secret value is not a part of the configuration. Every filesystem read operation performs a lookup in secret manager to retrieve the secret value.",
+"id": "SecretVolume",
+"properties": {
+"mountPath": {
+"description": "The path within the container to mount the secret volume. For example, setting the mount_path as `/etc/secrets` would mount the secret value files under the `/etc/secrets` directory. This directory will also be completely shadowed and unavailable to mount any other secrets. Recommended mount paths: /etc/secrets Restricted mount paths: /cloudsql, /dev/log, /pod, /proc, /var/log",
+"type": "string"
+},
+"projectId": {
+"description": "Project identifier (preferrably project number but can also be the project ID) of the project that contains the secret. If not set, it will be populated with the function's project assuming that the secret exists in the same project as of the function.",
+"type": "string"
+},
+"secret": {
+"description": "Name of the secret in secret manager (not the full resource name).",
+"type": "string"
+},
+"versions": {
+"description": "List of secret versions to mount for this secret. If empty, the `latest` version of the secret will be made available in a file named after the secret under the mount point.",
+"items": {
+"$ref": "SecretVersion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SourceRepository": {
+"description": "Describes SourceRepository, used to represent parameters related to source repository where a function is hosted.",
+"id": "SourceRepository",
+"properties": {
+"deployedUrl": {
+"description": "Output only. The URL pointing to the hosted repository where the function were defined at the time of deployment. It always points to a specific commit in the format described above.",
+"readOnly": true,
+"type": "string"
+},
+"url": {
+"description": "The URL pointing to the hosted repository where the function is defined. There are supported Cloud Source Repository URLs in the following formats: To refer to a specific commit: `https://source.developers.google.com/projects/*/repos/*/revisions/*/paths/*` To refer to a moveable alias (branch): `https://source.developers.google.com/projects/*/repos/*/moveable-aliases/*/paths/*` In particular, to refer to HEAD use `master` moveable alias. To refer to a specific fixed alias (tag): `https://source.developers.google.com/projects/*/repos/*/fixed-aliases/*/paths/*` You may omit `paths/*` if you want to use the main directory. The function response may add an empty `/paths/` to the URL.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Functions API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudidentity.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudidentity.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..904a7c95f78974236be094c2916eb447c271d73c
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudidentity.v1.json
@@ -0,0 +1,4473 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-identity.devices": {
+"description": "Private Service: https://www.googleapis.com/auth/cloud-identity.devices"
+},
+"https://www.googleapis.com/auth/cloud-identity.devices.lookup": {
+"description": "See your device details"
+},
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly": {
+"description": "Private Service: https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+},
+"https://www.googleapis.com/auth/cloud-identity.groups": {
+"description": "See, change, create, and delete any of the Cloud Identity Groups that you can access, including the members of each group"
+},
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly": {
+"description": "See any Cloud Identity Groups that you can access, including group members and their emails"
+},
+"https://www.googleapis.com/auth/cloud-identity.inboundsso": {
+"description": "See and edit all of the Inbound SSO profiles and their assignments to any Org Units or Google Groups in your Cloud Identity Organization."
+},
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly": {
+"description": "See all of the Inbound SSO profiles and their assignments to any Org Units or Google Groups in your Cloud Identity Organization."
+},
+"https://www.googleapis.com/auth/cloud-identity.policies": {
+"description": "See and edit policies in your Cloud Identity Organization."
+},
+"https://www.googleapis.com/auth/cloud-identity.policies.readonly": {
+"description": "See policies in your Cloud Identity Organization."
+},
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudidentity.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Identity",
+"description": "API for provisioning and managing identity resources.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/identity/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudidentity:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudidentity.mtls.googleapis.com/",
+"name": "cloudidentity",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"customers": {
+"resources": {
+"userinvitations": {
+"methods": {
+"cancel": {
+"description": "Cancels a UserInvitation that was already sent.",
+"flatPath": "v1/customers/{customersId}/userinvitations/{userinvitationsId}:cancel",
+"httpMethod": "POST",
+"id": "cloudidentity.customers.userinvitations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
+"location": "path",
+"pattern": "^customers/[^/]+/userinvitations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"request": {
+"$ref": "CancelUserInvitationRequest"
+},
+"response": {
+"$ref": "Operation"
+}
+},
+"get": {
+"description": "Retrieves a UserInvitation resource. **Note:** New consumer accounts with the customer's verified domain created within the previous 48 hours will not appear in the result. This delay also applies to newly-verified domains.",
+"flatPath": "v1/customers/{customersId}/userinvitations/{userinvitationsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.customers.userinvitations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
+"location": "path",
+"pattern": "^customers/[^/]+/userinvitations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "UserInvitation"
+}
+},
+"isInvitableUser": {
+"description": "Verifies whether a user account is eligible to receive a UserInvitation (is an unmanaged account). Eligibility is based on the following criteria: * the email address is a consumer account and it's the primary email address of the account, and * the domain of the email address matches an existing verified Google Workspace or Cloud Identity domain If both conditions are met, the user is eligible. **Note:** This method is not supported for Workspace Essentials customers.",
+"flatPath": "v1/customers/{customersId}/userinvitations/{userinvitationsId}:isInvitableUser",
+"httpMethod": "GET",
+"id": "cloudidentity.customers.userinvitations.isInvitableUser",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
+"location": "path",
+"pattern": "^customers/[^/]+/userinvitations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:isInvitableUser",
+"response": {
+"$ref": "IsInvitableUserResponse"
+}
+},
+"list": {
+"description": "Retrieves a list of UserInvitation resources. **Note:** New consumer accounts with the customer's verified domain created within the previous 48 hours will not appear in the result. This delay also applies to newly-verified domains.",
+"flatPath": "v1/customers/{customersId}/userinvitations",
+"httpMethod": "GET",
+"id": "cloudidentity.customers.userinvitations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. A query string for filtering `UserInvitation` results by their current state, in the format: `\"state=='invited'\"`.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. The sort order of the list results. You can sort the results in descending order based on either email or last update timestamp but not both, using `order_by=\"email desc\"`. Currently, sorting is supported for `update_time asc`, `update_time desc`, `email asc`, and `email desc`. If not specified, results will be returned based on `email asc` order.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of UserInvitation resources to return. If unspecified, at most 100 resources will be returned. The maximum value is 200; values above 200 will be set to 200.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListUserInvitations` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBooks` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The customer ID of the Google Workspace or Cloud Identity account the UserInvitation resources are associated with.",
+"location": "path",
+"pattern": "^customers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/userinvitations",
+"response": {
+"$ref": "ListUserInvitationsResponse"
+}
+},
+"send": {
+"description": "Sends a UserInvitation to email. If the `UserInvitation` does not exist for this request and it is a valid request, the request creates a `UserInvitation`. **Note:** The `get` and `list` methods have a 48-hour delay where newly-created consumer accounts will not appear in the results. You can still send a `UserInvitation` to those accounts if you know the unmanaged email address and IsInvitableUser==True.",
+"flatPath": "v1/customers/{customersId}/userinvitations/{userinvitationsId}:send",
+"httpMethod": "POST",
+"id": "cloudidentity.customers.userinvitations.send",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
+"location": "path",
+"pattern": "^customers/[^/]+/userinvitations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:send",
+"request": {
+"$ref": "SendUserInvitationRequest"
+},
+"response": {
+"$ref": "Operation"
+}
+}
+}
+}
+}
+},
+"devices": {
+"methods": {
+"cancelWipe": {
+"description": "Cancels an unfinished device wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped. This operation is possible when the device is in a \"pending wipe\" state. The device enters the \"pending wipe\" state when a wipe device command is issued, but has not yet been sent to the device. The cancel wipe will fail if the wipe command has already been issued to the device.",
+"flatPath": "v1/devices/{devicesId}:cancelWipe",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.cancelWipe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique ID assigned to the Device.",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancelWipe",
+"request": {
+"$ref": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"create": {
+"description": "Creates a device. Only company-owned device may be created. **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium",
+"flatPath": "v1/devices",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.create",
+"parameterOrder": [],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/devices",
+"request": {
+"$ref": "GoogleAppsCloudidentityDevicesV1Device"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"delete": {
+"description": "Deletes the specified device.",
+"flatPath": "v1/devices/{devicesId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.devices.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique ID assigned to the Device.",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"get": {
+"description": "Retrieves the specified device.",
+"flatPath": "v1/devices/{devicesId}",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Customer in the format: `customers/{customer}`, where customer is the customer to whom the device belongs. If you're using this API for your own organization, use `customers/my_customer`. If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in the format: `devices/{device}`, where device is the unique ID assigned to the Device.",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleAppsCloudidentityDevicesV1Device"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"list": {
+"description": "Lists/Searches devices.",
+"flatPath": "v1/devices",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.list",
+"parameterOrder": [],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer in the format: `customers/{customer}`, where customer is the customer to whom the device belongs. If you're using this API for your own organization, use `customers/my_customer`. If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Optional. Additional restrictions when fetching list of devices. For a list of search fields, refer to [Mobile device search fields](https://developers.google.com/admin-sdk/directory/v1/search-operators). Multiple search fields are separated by the space character.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Order specification for devices in the response. Only one of the following field names may be used to specify the order: `create_time`, `last_sync_time`, `model`, `os_version`, `device_type` and `serial_number`. `desc` may be specified optionally at the end to specify results to be sorted in descending order. Default order is ascending.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of Devices to return. If unspecified, at most 20 Devices will be returned. The maximum value is 100; values above 100 will be coerced to 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListDevices` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDevices` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "Optional. The view to use for the List request.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"COMPANY_INVENTORY",
+"USER_ASSIGNED_DEVICES"
+],
+"enumDescriptions": [
+"Default value. The value is unused.",
+"This view contains all devices imported by the company admin. Each device in the response contains all information specified by the company admin when importing the device (i.e. asset tags). This includes devices that may be unassigned or assigned to users.",
+"This view contains all devices with at least one user registered on the device. Each device in the response contains all device information, except for asset tags."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/devices",
+"response": {
+"$ref": "GoogleAppsCloudidentityDevicesV1ListDevicesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"wipe": {
+"description": "Wipes all data on the specified device.",
+"flatPath": "v1/devices/{devicesId}:wipe",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.wipe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:wipe",
+"request": {
+"$ref": "GoogleAppsCloudidentityDevicesV1WipeDeviceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+}
+},
+"resources": {
+"deviceUsers": {
+"methods": {
+"approve": {
+"description": "Approves device to access user data.",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}:approve",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.deviceUsers.approve",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:approve",
+"request": {
+"$ref": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"block": {
+"description": "Blocks device from accessing user data",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}:block",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.deviceUsers.block",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:block",
+"request": {
+"$ref": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"cancelWipe": {
+"description": "Cancels an unfinished user account wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped.",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}:cancelWipe",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.deviceUsers.cancelWipe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancelWipe",
+"request": {
+"$ref": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"delete": {
+"description": "Deletes the specified DeviceUser. This also revokes the user's access to device data.",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.devices.deviceUsers.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"get": {
+"description": "Retrieves the specified DeviceUser",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"list": {
+"description": "Lists/Searches DeviceUsers.",
+"flatPath": "v1/devices/{devicesId}/deviceUsers",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Optional. Additional restrictions when fetching list of devices. For a list of search fields, refer to [Mobile device search fields](https://developers.google.com/admin-sdk/directory/v1/search-operators). Multiple search fields are separated by the space character.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Order specification for devices in the response.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of DeviceUsers to return. If unspecified, at most 5 DeviceUsers will be returned. The maximum value is 20; values above 20 will be coerced to 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListDeviceUsers` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBooks` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. To list all DeviceUsers, set this to \"devices/-\". To list all DeviceUsers owned by a device, set this to the resource name of the device. Format: devices/{device}",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/deviceUsers",
+"response": {
+"$ref": "GoogleAppsCloudidentityDevicesV1ListDeviceUsersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"lookup": {
+"description": "Looks up resource names of the DeviceUsers associated with the caller's credentials, as well as the properties provided in the request. This method must be called with end-user credentials with the scope: https://www.googleapis.com/auth/cloud-identity.devices.lookup If multiple properties are provided, only DeviceUsers having all of these properties are considered as matches - i.e. the query behaves like an AND. Different platforms require different amounts of information from the caller to ensure that the DeviceUser is uniquely identified. - iOS: No properties need to be passed, the caller's credentials are sufficient to identify the corresponding DeviceUser. - Android: Specifying the 'android_id' field is required. - Desktop: Specifying the 'raw_resource_id' field is required.",
+"flatPath": "v1/devices/{devicesId}/deviceUsers:lookup",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.lookup",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"androidId": {
+"description": "Android Id returned by [Settings.Secure#ANDROID_ID](https://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of DeviceUsers to return. If unspecified, at most 20 DeviceUsers will be returned. The maximum value is 20; values above 20 will be coerced to 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `LookupDeviceUsers` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `LookupDeviceUsers` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Must be set to \"devices/-/deviceUsers\" to search across all DeviceUser belonging to the user.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers$",
+"required": true,
+"type": "string"
+},
+"rawResourceId": {
+"description": "Raw Resource Id used by Google Endpoint Verification. If the user is enrolled into Google Endpoint Verification, this id will be saved as the 'device_resource_id' field in the following platform dependent files. * macOS: ~/.secureConnect/context_aware_config.json * Windows: %USERPROFILE%\\AppData\\Local\\Google\\Endpoint Verification\\accounts.json * Linux: ~/.secureConnect/context_aware_config.json",
+"location": "query",
+"type": "string"
+},
+"userId": {
+"description": "The user whose DeviceUser's resource name will be fetched. Must be set to 'me' to fetch the DeviceUser's resource name for the calling user.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}:lookup",
+"response": {
+"$ref": "GoogleAppsCloudidentityDevicesV1LookupSelfDeviceUsersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices.lookup"
+]
+},
+"wipe": {
+"description": "Wipes the user's account on a device. Other data on the device that is not associated with the user's work account is not affected. For example, if a Gmail app is installed on a device that is used for personal and work purposes, and the user is logged in to the Gmail app with their personal account as well as their work account, wiping the \"deviceUser\" by their work administrator will not affect their personal account within Gmail or other apps such as Photos.",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}:wipe",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.deviceUsers.wipe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}/deviceUsers/{device_user}`, where device is the unique ID assigned to the Device, and device_user is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:wipe",
+"request": {
+"$ref": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+}
+},
+"resources": {
+"clientStates": {
+"methods": {
+"get": {
+"description": "Gets the client state for the device user",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}/clientStates/{clientStatesId}",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.clientStates.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device}/deviceUsers/{device_user}/clientStates/{partner}`, where `device` is the unique ID assigned to the Device, `device_user` is the unique ID assigned to the User and `partner` identifies the partner storing the data. To get the client state for devices belonging to your own organization, the `partnerId` is in the format: `customerId-*anystring*`. Where the `customerId` is your organization's customer ID and `anystring` is any suffix. This suffix is used in setting up Custom Access Levels in Context-Aware Access. You may use `my_customer` instead of the customer ID for devices managed by your own organization. You may specify `-` in place of the `{device}`, so the ClientState resource name can be: `devices/-/deviceUsers/{device_user_resource}/clientStates/{partner}`.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+/clientStates/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleAppsCloudidentityDevicesV1ClientState"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"list": {
+"description": "Lists the client states for the given search query.",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}/clientStates",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.clientStates.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Optional. Additional restrictions when fetching list of client states.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Order specification for client states in the response.",
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListClientStates` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListClientStates` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. To list all ClientStates, set this to \"devices/-/deviceUsers/-\". To list all ClientStates owned by a DeviceUser, set this to the resource name of the DeviceUser. Format: devices/{device}/deviceUsers/{deviceUser}",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/clientStates",
+"response": {
+"$ref": "GoogleAppsCloudidentityDevicesV1ListClientStatesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"patch": {
+"description": "Updates the client state for the device user **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium",
+"flatPath": "v1/devices/{devicesId}/deviceUsers/{deviceUsersId}/clientStates/{clientStatesId}",
+"httpMethod": "PATCH",
+"id": "cloudidentity.devices.deviceUsers.clientStates.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device}/deviceUsers/{device_user}/clientState/{partner}`, where partner corresponds to the partner storing the data. For partners belonging to the \"BeyondCorp Alliance\", this is the partner ID specified to you by Google. For all other callers, this is a string of the form: `{customer}-suffix`, where `customer` is your customer ID. The *suffix* is any string the caller specifies. This string will be displayed verbatim in the administration console. This suffix is used in setting up Custom Access Levels in Context-Aware Access. Your organization's customer ID can be obtained from the URL: `GET https://www.googleapis.com/admin/directory/v1/customers/my_customer` The `id` field in the response contains the customer ID starting with the letter 'C'. The customer ID to be used in this API is the string after the letter 'C' (not including 'C')",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+/clientStates/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Comma-separated list of fully qualified names of fields to be updated. If not specified, all updatable fields in ClientState are updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleAppsCloudidentityDevicesV1ClientState"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+}
+}
+}
+}
+}
+}
+},
+"groups": {
+"methods": {
+"create": {
+"description": "Creates a Group.",
+"flatPath": "v1/groups",
+"httpMethod": "POST",
+"id": "cloudidentity.groups.create",
+"parameterOrder": [],
+"parameters": {
+"initialGroupConfig": {
+"description": "Optional. The initial configuration option for the `Group`.",
+"enum": [
+"INITIAL_GROUP_CONFIG_UNSPECIFIED",
+"WITH_INITIAL_OWNER",
+"EMPTY"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"The end user making the request will be added as the initial owner of the `Group`.",
+"An empty group is created without any initial owners. This can only be used by admins of the domain."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/groups",
+"request": {
+"$ref": "Group"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a `Group`.",
+"flatPath": "v1/groups/{groupsId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.groups.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group` to retrieve. Must be of the form `groups/{group}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Retrieves a `Group`.",
+"flatPath": "v1/groups/{groupsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group` to retrieve. Must be of the form `groups/{group}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Group"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getSecuritySettings": {
+"description": "Get Security Settings",
+"flatPath": "v1/groups/{groupsId}/securitySettings",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.getSecuritySettings",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The security settings to retrieve. Format: `groups/{group_id}/securitySettings`",
+"location": "path",
+"pattern": "^groups/[^/]+/securitySettings$",
+"required": true,
+"type": "string"
+},
+"readMask": {
+"description": "Field-level read mask of which fields to return. \"*\" returns all fields. If not specified, all fields will be returned. May only contain the following field: `member_restriction`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "SecuritySettings"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the `Group` resources under a customer or namespace.",
+"flatPath": "v1/groups",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.list",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `View.BASIC` and to 50 for `View.FULL`. Must not be greater than 1000 for `View.BASIC` or 500 for `View.FULL`.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous list request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource under which to list all `Group` resources. Must be of the form `identitysources/{identity_source}` for external- identity-mapped groups or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)",
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "The level of detail to be returned. If unspecified, defaults to `View.BASIC`.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"Only basic resource information is returned.",
+"All resource information is returned."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/groups",
+"response": {
+"$ref": "ListGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"lookup": {
+"description": "Looks up the [resource name](https://cloud.google.com/apis/design/resource_names) of a `Group` by its `EntityKey`.",
+"flatPath": "v1/groups:lookup",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.lookup",
+"parameterOrder": [],
+"parameters": {
+"groupKey.id": {
+"description": "The ID of the entity. For Google-managed entities, the `id` should be the email address of an existing group or user. Email addresses need to adhere to [name guidelines for users and groups](https://support.google.com/a/answer/9193374). For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
+"location": "query",
+"type": "string"
+},
+"groupKey.namespace": {
+"description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source}`.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/groups:lookup",
+"response": {
+"$ref": "LookupGroupNameResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a `Group`.",
+"flatPath": "v1/groups/{groupsId}",
+"httpMethod": "PATCH",
+"id": "cloudidentity.groups.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The names of fields to update. May only contain the following field names: `display_name`, `description`, `labels`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Group"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"search": {
+"description": "Searches for `Group` resources matching a specified query.",
+"flatPath": "v1/groups:search",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.search",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `GroupView.BASIC` and 50 for `GroupView.FULL`. Must not be greater than 1000 for `GroupView.BASIC` or 500 for `GroupView.FULL`.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous search request, if any.",
+"location": "query",
+"type": "string"
+},
+"query": {
+"description": "Required. The search query. * Must be specified in [Common Expression Language](https://opensource.google/projects/cel). * Must contain equality operators on the parent, e.g. `parent == 'customers/{customer_id}'`. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793) * Can contain optional inclusion operators on `labels` such as `'cloudidentity.googleapis.com/groups.discussion_forum' in labels`). * Can contain an optional equality operator on `domain_name`. e.g. `domain_name == 'examplepetstore.com'` * Can contain optional `startsWith/contains/equality` operators on `group_key`, e.g. `group_key.startsWith('dev')`, `group_key.contains('dev'), group_key == 'dev@examplepetstore.com'` * Can contain optional `startsWith/contains/equality` operators on `display_name`, such as `display_name.startsWith('dev')` , `display_name.contains('dev')`, `display_name == 'dev'`",
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "The level of detail to be returned. If unspecified, defaults to `View.BASIC`.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"Only basic resource information is returned.",
+"All resource information is returned."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/groups:search",
+"response": {
+"$ref": "SearchGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updateSecuritySettings": {
+"description": "Update Security Settings",
+"flatPath": "v1/groups/{groupsId}/securitySettings",
+"httpMethod": "PATCH",
+"id": "cloudidentity.groups.updateSecuritySettings",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The resource name of the security settings. Shall be of the form `groups/{group_id}/securitySettings`.",
+"location": "path",
+"pattern": "^groups/[^/]+/securitySettings$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The fully-qualified names of fields to update. May only contain the following field: `member_restriction.query`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "SecuritySettings"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"memberships": {
+"methods": {
+"checkTransitiveMembership": {
+"description": "Check a potential member for membership in a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the member is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. A member has membership to a group as long as there is a single viewable transitive membership between the group and the member. The actor must have view permissions to at least one transitive membership between the member and group.",
+"flatPath": "v1/groups/{groupsId}/memberships:checkTransitiveMembership",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.checkTransitiveMembership",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to check the transitive membership in. Format: `groups/{group}`, where `group` is the unique id assigned to the Group to which the Membership belongs to.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. A CEL expression that MUST include member specification. This is a `required` field. Certain groups are uniquely identified by both a 'member_key_id' and a 'member_key_namespace', which requires an additional query input: 'member_key_namespace'. Example query: `member_key_id == 'member_key_id_value'`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/memberships:checkTransitiveMembership",
+"response": {
+"$ref": "CheckTransitiveMembershipResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a `Membership`.",
+"flatPath": "v1/groups/{groupsId}/memberships",
+"httpMethod": "POST",
+"id": "cloudidentity.groups.memberships.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent `Group` resource under which to create the `Membership`. Must be of the form `groups/{group}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/memberships",
+"request": {
+"$ref": "Membership"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a `Membership`.",
+"flatPath": "v1/groups/{groupsId}/memberships/{membershipsId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.groups.memberships.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` to delete. Must be of the form `groups/{group}/memberships/{membership}`",
+"location": "path",
+"pattern": "^groups/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Retrieves a `Membership`.",
+"flatPath": "v1/groups/{groupsId}/memberships/{membershipsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` to retrieve. Must be of the form `groups/{group}/memberships/{membership}`.",
+"location": "path",
+"pattern": "^groups/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Membership"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getMembershipGraph": {
+"description": "Get a membership graph of just a member or both a member and a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the member is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. Given a member, the response will contain all membership paths from the member. Given both a group and a member, the response will contain all membership paths between the group and the member.",
+"flatPath": "v1/groups/{groupsId}/memberships:getMembershipGraph",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.getMembershipGraph",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group}`, where `group` is the unique ID assigned to the Group to which the Membership belongs to. group can be a wildcard collection id \"-\". When a group is specified, the membership graph will be constrained to paths between the member (defined in the query) and the parent. If a wildcard collection is provided, all membership paths connected to the member will be returned.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. A CEL expression that MUST include member specification AND label(s). Certain groups are uniquely identified by both a 'member_key_id' and a 'member_key_namespace', which requires an additional query input: 'member_key_namespace'. Example query: `member_key_id == 'member_key_id_value' && in labels`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/memberships:getMembershipGraph",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the `Membership`s within a `Group`.",
+"flatPath": "v1/groups/{groupsId}/memberships",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `GroupView.BASIC` and to 50 for `GroupView.FULL`. Must not be greater than 1000 for `GroupView.BASIC` or 500 for `GroupView.FULL`.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous search request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent `Group` resource under which to lookup the `Membership` name. Must be of the form `groups/{group}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "The level of detail to be returned. If unspecified, defaults to `View.BASIC`.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"Only basic resource information is returned.",
+"All resource information is returned."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/memberships",
+"response": {
+"$ref": "ListMembershipsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"lookup": {
+"description": "Looks up the [resource name](https://cloud.google.com/apis/design/resource_names) of a `Membership` by its `EntityKey`.",
+"flatPath": "v1/groups/{groupsId}/memberships:lookup",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.lookup",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"memberKey.id": {
+"description": "The ID of the entity. For Google-managed entities, the `id` should be the email address of an existing group or user. Email addresses need to adhere to [name guidelines for users and groups](https://support.google.com/a/answer/9193374). For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
+"location": "query",
+"type": "string"
+},
+"memberKey.namespace": {
+"description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source}`.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent `Group` resource under which to lookup the `Membership` name. Must be of the form `groups/{group}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/memberships:lookup",
+"response": {
+"$ref": "LookupMembershipNameResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"modifyMembershipRoles": {
+"description": "Modifies the `MembershipRole`s of a `Membership`.",
+"flatPath": "v1/groups/{groupsId}/memberships/{membershipsId}:modifyMembershipRoles",
+"httpMethod": "POST",
+"id": "cloudidentity.groups.memberships.modifyMembershipRoles",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` whose roles are to be modified. Must be of the form `groups/{group}/memberships/{membership}`.",
+"location": "path",
+"pattern": "^groups/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:modifyMembershipRoles",
+"request": {
+"$ref": "ModifyMembershipRolesRequest"
+},
+"response": {
+"$ref": "ModifyMembershipRolesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchDirectGroups": {
+"description": "Searches direct groups of a member.",
+"flatPath": "v1/groups/{groupsId}/memberships:searchDirectGroups",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.searchDirectGroups",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"orderBy": {
+"description": "The ordering of membership relation for the display name or email in the response. The syntax for this field can be found at https://cloud.google.com/apis/design/design_patterns#sorting_order. Example: Sort by the ascending display name: order_by=\"group_name\" or order_by=\"group_name asc\". Sort by the descending display name: order_by=\"group_name desc\". Sort by the ascending group key: order_by=\"group_key\" or order_by=\"group_key asc\". Sort by the descending group key: order_by=\"group_key desc\".",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The default page size is 200 (max 1000).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous list request, if any",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: groups/{group_id}, where group_id is always '-' as this API will search across all groups for a given member.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. A CEL expression that MUST include member specification AND label(s). Users can search on label attributes of groups. CONTAINS match ('in') is supported on labels. Identity-mapped groups are uniquely identified by both a `member_key_id` and a `member_key_namespace`, which requires an additional query input: `member_key_namespace`. Example query: `member_key_id == 'member_key_id_value' && 'label_value' in labels`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/memberships:searchDirectGroups",
+"response": {
+"$ref": "SearchDirectGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchTransitiveGroups": {
+"description": "Search transitive groups of a member. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the member is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. A transitive group is any group that has a direct or indirect membership to the member. Actor must have view permissions all transitive groups.",
+"flatPath": "v1/groups/{groupsId}/memberships:searchTransitiveGroups",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.searchTransitiveGroups",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The default page size is 200 (max 1000).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous list request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group}`, where `group` is always '-' as this API will search across all groups for a given member.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. A CEL expression that MUST include member specification AND label(s). This is a `required` field. Users can search on label attributes of groups. CONTAINS match ('in') is supported on labels. Identity-mapped groups are uniquely identified by both a `member_key_id` and a `member_key_namespace`, which requires an additional query input: `member_key_namespace`. Example query: `member_key_id == 'member_key_id_value' && in labels` Query may optionally contain equality operators on the parent of the group restricting the search within a particular customer, e.g. `parent == 'customers/{customer_id}'`. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). This filtering is only supported for Admins with groups read permissions on the input customer. Example query: `member_key_id == 'member_key_id_value' && in labels && parent == 'customers/C046psxkn'`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/memberships:searchTransitiveGroups",
+"response": {
+"$ref": "SearchTransitiveGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchTransitiveMemberships": {
+"description": "Search transitive memberships of a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. If the account of the group is not one of these, a 403 (PERMISSION_DENIED) HTTP status code will be returned. A transitive membership is any direct or indirect membership of a group. Actor must have view permissions to all transitive memberships.",
+"flatPath": "v1/groups/{groupsId}/memberships:searchTransitiveMemberships",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.searchTransitiveMemberships",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The default page size is 200 (max 1000).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous list request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group}`, where `group` is the unique ID assigned to the Group.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/memberships:searchTransitiveMemberships",
+"response": {
+"$ref": "SearchTransitiveMembershipsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"inboundSamlSsoProfiles": {
+"methods": {
+"create": {
+"description": "Creates an InboundSamlSsoProfile for a customer. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
+"flatPath": "v1/inboundSamlSsoProfiles",
+"httpMethod": "POST",
+"id": "cloudidentity.inboundSamlSsoProfiles.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1/inboundSamlSsoProfiles",
+"request": {
+"$ref": "InboundSamlSsoProfile"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an InboundSamlSsoProfile.",
+"flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.inboundSamlSsoProfiles.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an InboundSamlSsoProfile.",
+"flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSamlSsoProfiles.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to get. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "InboundSamlSsoProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists InboundSamlSsoProfiles for a customer.",
+"flatPath": "v1/inboundSamlSsoProfiles",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSamlSsoProfiles.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "A [Common Expression Language](https://github.com/google/cel-spec) expression to filter the results. The only supported filter is filtering by customer. For example: `customer==\"customers/C0123abc\"`. Omitting the filter or specifying a filter of `customer==\"customers/my_customer\"` will return the profiles for the customer that the caller (authenticated user) belongs to.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of InboundSamlSsoProfiles to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100. Requests with page_size greater than that will be silently interpreted as having this maximum value.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListInboundSamlSsoProfiles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSamlSsoProfiles` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/inboundSamlSsoProfiles",
+"response": {
+"$ref": "ListInboundSamlSsoProfilesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an InboundSamlSsoProfile. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
+"flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}",
+"httpMethod": "PATCH",
+"id": "cloudidentity.inboundSamlSsoProfiles.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "InboundSamlSsoProfile"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"idpCredentials": {
+"methods": {
+"add": {
+"description": "Adds an IdpCredential. Up to 2 credentials are allowed. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
+"flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials:add",
+"httpMethod": "POST",
+"id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.add",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The InboundSamlSsoProfile that owns the IdpCredential. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/idpCredentials:add",
+"request": {
+"$ref": "AddIdpCredentialRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an IdpCredential.",
+"flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an IdpCredential.",
+"flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to retrieve. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "IdpCredential"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns a list of IdpCredentials in an InboundSamlSsoProfile.",
+"flatPath": "v1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of `IdpCredential`s to return. The service may return fewer than this value.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListIdpCredentials` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListIdpCredentials` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of `IdpCredential`s. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/idpCredentials",
+"response": {
+"$ref": "ListIdpCredentialsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"inboundSsoAssignments": {
+"methods": {
+"create": {
+"description": "Creates an InboundSsoAssignment for users and devices in a `Customer` under a given `Group` or `OrgUnit`.",
+"flatPath": "v1/inboundSsoAssignments",
+"httpMethod": "POST",
+"id": "cloudidentity.inboundSsoAssignments.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1/inboundSsoAssignments",
+"request": {
+"$ref": "InboundSsoAssignment"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an InboundSsoAssignment. To disable SSO, Create (or Update) an assignment that has `sso_mode` == `SSO_OFF`.",
+"flatPath": "v1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.inboundSsoAssignments.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to delete. Format: `inboundSsoAssignments/{assignment}`",
+"location": "path",
+"pattern": "^inboundSsoAssignments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an InboundSsoAssignment.",
+"flatPath": "v1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSsoAssignments.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to fetch. Format: `inboundSsoAssignments/{assignment}`",
+"location": "path",
+"pattern": "^inboundSsoAssignments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "InboundSsoAssignment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the InboundSsoAssignments for a `Customer`.",
+"flatPath": "v1/inboundSsoAssignments",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSsoAssignments.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "A CEL expression to filter the results. The only supported filter is filtering by customer. For example: `customer==customers/C0123abc`. Omitting the filter or specifying a filter of `customer==customers/my_customer` will return the assignments for the customer that the caller (authenticated user) belongs to.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of assignments to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100, though requests with page_size greater than that will be silently interpreted as having this maximum value. This may increase in the futue.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListInboundSsoAssignments` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSsoAssignments` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/inboundSsoAssignments",
+"response": {
+"$ref": "ListInboundSsoAssignmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an InboundSsoAssignment. The body of this request is the `inbound_sso_assignment` field and the `update_mask` is relative to that. For example: a PATCH to `/v1/inboundSsoAssignments/0abcdefg1234567&update_mask=rank` with a body of `{ \"rank\": 1 }` moves that (presumably group-targeted) SSO assignment to the highest priority and shifts any other group-targeted assignments down in priority.",
+"flatPath": "v1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
+"httpMethod": "PATCH",
+"id": "cloudidentity.inboundSsoAssignments.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.",
+"location": "path",
+"pattern": "^inboundSsoAssignments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "InboundSsoAssignment"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"policies": {
+"methods": {
+"get": {
+"description": "Get a Policy",
+"flatPath": "v1/policies/{policiesId}",
+"httpMethod": "GET",
+"id": "cloudidentity.policies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the policy to retrieve. Format: \"policies/{policy}\".",
+"location": "path",
+"pattern": "^policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.policies",
+"https://www.googleapis.com/auth/cloud-identity.policies.readonly"
+]
+},
+"list": {
+"description": "List Policies",
+"flatPath": "v1/policies",
+"httpMethod": "GET",
+"id": "cloudidentity.policies.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "Optional. A CEL expression for filtering the results. Policies can be filtered by application with this expression: setting.name = 'settings/gmail.*' Policies can be filtered by setting type with this expression: setting.name = '*.service_status' A maximum of one of the above setting.name clauses can be used. Policies can be filtered by customer with this expression: customer = \"customers/{customer}\" Where `customer` is the `id` from the [Admin SDK `Customer` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/customers). You may use `customers/my_customer` to specify your own organization. When no customer is mentioned it will be default to customers/my_customer. A maximum of one customer clause can be used. The above clauses can only be combined together in a single filter expression with the `&&` operator.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return. The service can return fewer than this number. If omitted or set to 0, the default is 50 results per page. The maximum allowed value is 100. `page_size` values greater than 100 default to 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The pagination token received from a prior call to PoliciesService.ListPolicies to retrieve the next page of results. When paginating, all other parameters provided to `ListPoliciesRequest` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/policies",
+"response": {
+"$ref": "ListPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.policies",
+"https://www.googleapis.com/auth/cloud-identity.policies.readonly"
+]
+}
+}
+}
+},
+"revision": "20241208",
+"rootUrl": "https://cloudidentity.googleapis.com/",
+"schemas": {
+"AddIdpCredentialOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.AddIdpCredential.",
+"id": "AddIdpCredentialOperationMetadata",
+"properties": {
+"state": {
+"description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AddIdpCredentialRequest": {
+"description": "The request for creating an IdpCredential with its associated payload. An InboundSamlSsoProfile can own up to 2 credentials.",
+"id": "AddIdpCredentialRequest",
+"properties": {
+"pemData": {
+"description": "PEM encoded x509 certificate containing the public key for verifying IdP signatures.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelUserInvitationRequest": {
+"description": "Request to cancel sent invitation for target email in UserInvitation.",
+"id": "CancelUserInvitationRequest",
+"properties": {},
+"type": "object"
+},
+"CheckTransitiveMembershipResponse": {
+"description": "The response message for MembershipsService.CheckTransitiveMembership.",
+"id": "CheckTransitiveMembershipResponse",
+"properties": {
+"hasMembership": {
+"description": "Response does not include the possible roles of a member since the behavior of this rpc is not all-or-nothing unlike the other rpcs. So, it may not be possible to list all the roles definitively, due to possible lack of authorization in some of the paths.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"CreateGroupMetadata": {
+"description": "Metadata for CreateGroup LRO.",
+"id": "CreateGroupMetadata",
+"properties": {},
+"type": "object"
+},
+"CreateInboundSamlSsoProfileOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.CreateInboundSamlSsoProfile.",
+"id": "CreateInboundSamlSsoProfileOperationMetadata",
+"properties": {
+"state": {
+"description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateInboundSsoAssignmentOperationMetadata": {
+"description": "LRO response metadata for InboundSsoAssignmentsService.CreateInboundSsoAssignment.",
+"id": "CreateInboundSsoAssignmentOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"CreateMembershipMetadata": {
+"description": "Metadata for CreateMembership LRO.",
+"id": "CreateMembershipMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteGroupMetadata": {
+"description": "Metadata for DeleteGroup LRO.",
+"id": "DeleteGroupMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteIdpCredentialOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.DeleteIdpCredential.",
+"id": "DeleteIdpCredentialOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteInboundSamlSsoProfileOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.DeleteInboundSamlSsoProfile.",
+"id": "DeleteInboundSamlSsoProfileOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteInboundSsoAssignmentOperationMetadata": {
+"description": "LRO response metadata for InboundSsoAssignmentsService.DeleteInboundSsoAssignment.",
+"id": "DeleteInboundSsoAssignmentOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteMembershipMetadata": {
+"description": "Metadata for DeleteMembership LRO.",
+"id": "DeleteMembershipMetadata",
+"properties": {},
+"type": "object"
+},
+"DsaPublicKeyInfo": {
+"description": "Information of a DSA public key.",
+"id": "DsaPublicKeyInfo",
+"properties": {
+"keySize": {
+"description": "Key size in bits (size of parameter P).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"DynamicGroupMetadata": {
+"description": "Dynamic group metadata like queries and status.",
+"id": "DynamicGroupMetadata",
+"properties": {
+"queries": {
+"description": "Memberships will be the union of all queries. Only one entry with USER resource is currently supported. Customers can create up to 500 dynamic groups.",
+"items": {
+"$ref": "DynamicGroupQuery"
+},
+"type": "array"
+},
+"status": {
+"$ref": "DynamicGroupStatus",
+"description": "Output only. Status of the dynamic group.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"DynamicGroupQuery": {
+"description": "Defines a query on a resource.",
+"id": "DynamicGroupQuery",
+"properties": {
+"query": {
+"description": "Query that determines the memberships of the dynamic group. Examples: All users with at least one `organizations.department` of engineering. `user.organizations.exists(org, org.department=='engineering')` All users with at least one location that has `area` of `foo` and `building_id` of `bar`. `user.locations.exists(loc, loc.area=='foo' && loc.building_id=='bar')` All users with any variation of the name John Doe (case-insensitive queries add `equalsIgnoreCase()` to the value being queried). `user.name.value.equalsIgnoreCase('jOhn DoE')`",
+"type": "string"
+},
+"resourceType": {
+"description": "Resource type for the Dynamic Group Query",
+"enum": [
+"RESOURCE_TYPE_UNSPECIFIED",
+"USER"
+],
+"enumDescriptions": [
+"Default value (not valid)",
+"For queries on User"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"DynamicGroupStatus": {
+"description": "The current status of a dynamic group along with timestamp.",
+"id": "DynamicGroupStatus",
+"properties": {
+"status": {
+"description": "Status of the dynamic group.",
+"enum": [
+"STATUS_UNSPECIFIED",
+"UP_TO_DATE",
+"UPDATING_MEMBERSHIPS",
+"INVALID_QUERY"
+],
+"enumDescriptions": [
+"Default.",
+"The dynamic group is up-to-date.",
+"The dynamic group has just been created and memberships are being updated.",
+"Group is in an unrecoverable state and its memberships can't be updated."
+],
+"type": "string"
+},
+"statusTime": {
+"description": "The latest time at which the dynamic group is guaranteed to be in the given status. If status is `UP_TO_DATE`, the latest time at which the dynamic group was confirmed to be up-to-date. If status is `UPDATING_MEMBERSHIPS`, the time at which dynamic group was created.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EntityKey": {
+"description": "A unique identifier for an entity in the Cloud Identity Groups API. An entity can represent either a group with an optional `namespace` or a user without a `namespace`. The combination of `id` and `namespace` must be unique; however, the same `id` can be used with different `namespace`s.",
+"id": "EntityKey",
+"properties": {
+"id": {
+"description": "The ID of the entity. For Google-managed entities, the `id` should be the email address of an existing group or user. Email addresses need to adhere to [name guidelines for users and groups](https://support.google.com/a/answer/9193374). For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
+"type": "string"
+},
+"namespace": {
+"description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExpiryDetail": {
+"description": "The `MembershipRole` expiry details.",
+"id": "ExpiryDetail",
+"properties": {
+"expireTime": {
+"description": "The time at which the `MembershipRole` will expire.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetMembershipGraphMetadata": {
+"description": "Metadata of GetMembershipGraphResponse LRO. This is currently empty to permit future extensibility.",
+"id": "GetMembershipGraphMetadata",
+"properties": {},
+"type": "object"
+},
+"GetMembershipGraphResponse": {
+"description": "The response message for MembershipsService.GetMembershipGraph.",
+"id": "GetMembershipGraphResponse",
+"properties": {
+"adjacencyList": {
+"description": "The membership graph's path information represented as an adjacency list.",
+"items": {
+"$ref": "MembershipAdjacencyList"
+},
+"type": "array"
+},
+"groups": {
+"description": "The resources representing each group in the adjacency list. Each group in this list can be correlated to a 'group' of the MembershipAdjacencyList using the 'name' of the Group resource.",
+"items": {
+"$ref": "Group"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1AndroidAttributes": {
+"description": "Resource representing the Android specific attributes of a Device.",
+"id": "GoogleAppsCloudidentityDevicesV1AndroidAttributes",
+"properties": {
+"ctsProfileMatch": {
+"description": "Whether the device passes Android CTS compliance.",
+"type": "boolean"
+},
+"enabledUnknownSources": {
+"description": "Whether applications from unknown sources can be installed on device.",
+"type": "boolean"
+},
+"hasPotentiallyHarmfulApps": {
+"description": "Whether any potentially harmful apps were detected on the device.",
+"type": "boolean"
+},
+"ownerProfileAccount": {
+"description": "Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles.",
+"type": "boolean"
+},
+"ownershipPrivilege": {
+"description": "Ownership privileges on device.",
+"enum": [
+"OWNERSHIP_PRIVILEGE_UNSPECIFIED",
+"DEVICE_ADMINISTRATOR",
+"PROFILE_OWNER",
+"DEVICE_OWNER"
+],
+"enumDescriptions": [
+"Ownership privilege is not set.",
+"Active device administrator privileges on the device.",
+"Profile Owner privileges. The account is in a managed corporate profile.",
+"Device Owner privileges on the device."
+],
+"type": "string"
+},
+"supportsWorkProfile": {
+"description": "Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the \"Enforce Work Profile\" policy.",
+"type": "boolean"
+},
+"verifiedBoot": {
+"description": "Whether Android verified boot status is GREEN.",
+"type": "boolean"
+},
+"verifyAppsEnabled": {
+"description": "Whether Google Play Protect Verify Apps is enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ApproveDeviceUserMetadata": {
+"description": "Metadata for ApproveDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ApproveDeviceUserRequest": {
+"description": "Request message for approving the device to access user data.",
+"id": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ApproveDeviceUserResponse": {
+"description": "Response message for approving the device to access user data.",
+"id": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BlockDeviceUserMetadata": {
+"description": "Metadata for BlockDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BlockDeviceUserRequest": {
+"description": "Request message for blocking account on device.",
+"id": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BlockDeviceUserResponse": {
+"description": "Response message for blocking the device from accessing user data.",
+"id": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BrowserAttributes": {
+"description": "Contains information about browser profiles reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).",
+"id": "GoogleAppsCloudidentityDevicesV1BrowserAttributes",
+"properties": {
+"chromeBrowserInfo": {
+"$ref": "GoogleAppsCloudidentityDevicesV1BrowserInfo",
+"description": "Represents the current state of the [Chrome browser attributes](https://cloud.google.com/access-context-manager/docs/browser-attributes) sent by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1)."
+},
+"chromeProfileId": {
+"description": "Chrome profile ID that is exposed by the Chrome API. It is unique for each device.",
+"type": "string"
+},
+"lastProfileSyncTime": {
+"description": "Timestamp in milliseconds since the Unix epoch when the profile/gcm id was last synced.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BrowserInfo": {
+"description": "Browser-specific fields reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).",
+"id": "GoogleAppsCloudidentityDevicesV1BrowserInfo",
+"properties": {
+"browserManagementState": {
+"description": "Output only. Browser's management state.",
+"enum": [
+"UNSPECIFIED",
+"UNMANAGED",
+"MANAGED_BY_OTHER_DOMAIN",
+"PROFILE_MANAGED",
+"BROWSER_MANAGED"
+],
+"enumDescriptions": [
+"Management state is not specified.",
+"Browser/Profile is not managed by any customer.",
+"Browser/Profile is managed, but by some other customer.",
+"Profile is managed by customer.",
+"Browser is managed by customer."
+],
+"readOnly": true,
+"type": "string"
+},
+"browserVersion": {
+"description": "Version of the request initiating browser. E.g. `91.0.4442.4`.",
+"type": "string"
+},
+"isBuiltInDnsClientEnabled": {
+"description": "Current state of [built-in DNS client](https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled).",
+"type": "boolean"
+},
+"isBulkDataEntryAnalysisEnabled": {
+"description": "Current state of [bulk data analysis](https://chromeenterprise.google/policies/#OnBulkDataEntryEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isChromeCleanupEnabled": {
+"description": "Current state of [Chrome Cleanup](https://chromeenterprise.google/policies/#ChromeCleanupEnabled).",
+"type": "boolean"
+},
+"isChromeRemoteDesktopAppBlocked": {
+"description": "Current state of [Chrome Remote Desktop app](https://chromeenterprise.google/policies/#URLBlocklist).",
+"type": "boolean"
+},
+"isFileDownloadAnalysisEnabled": {
+"description": "Current state of [file download analysis](https://chromeenterprise.google/policies/#OnFileDownloadedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isFileUploadAnalysisEnabled": {
+"description": "Current state of [file upload analysis](https://chromeenterprise.google/policies/#OnFileAttachedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isRealtimeUrlCheckEnabled": {
+"description": "Current state of [real-time URL check](https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isSecurityEventAnalysisEnabled": {
+"description": "Current state of [security event analysis](https://chromeenterprise.google/policies/#OnSecurityEventEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isSiteIsolationEnabled": {
+"description": "Current state of [site isolation](https://chromeenterprise.google/policies/?policy=IsolateOrigins).",
+"type": "boolean"
+},
+"isThirdPartyBlockingEnabled": {
+"description": "Current state of [third-party blocking](https://chromeenterprise.google/policies/#ThirdPartyBlockingEnabled).",
+"type": "boolean"
+},
+"passwordProtectionWarningTrigger": {
+"description": "Current state of [password protection trigger](https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger).",
+"enum": [
+"PASSWORD_PROTECTION_TRIGGER_UNSPECIFIED",
+"PROTECTION_OFF",
+"PASSWORD_REUSE",
+"PHISHING_REUSE"
+],
+"enumDescriptions": [
+"Password protection is not specified.",
+"Password reuse is never detected.",
+"Warning is shown when the user reuses their protected password on a non-allowed site.",
+"Warning is shown when the user reuses their protected password on a phishing site."
+],
+"type": "string"
+},
+"safeBrowsingProtectionLevel": {
+"description": "Current state of [Safe Browsing protection level](https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel).",
+"enum": [
+"SAFE_BROWSING_LEVEL_UNSPECIFIED",
+"DISABLED",
+"STANDARD",
+"ENHANCED"
+],
+"enumDescriptions": [
+"Browser protection level is not specified.",
+"No protection against dangerous websites, downloads, and extensions.",
+"Standard protection against websites, downloads, and extensions that are known to be dangerous.",
+"Faster, proactive protection against dangerous websites, downloads, and extensions."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceMetadata": {
+"description": "Metadata for CancelWipeDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceRequest": {
+"description": "Request message for cancelling an unfinished device wipe.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceResponse": {
+"description": "Response message for cancelling an unfinished device wipe.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceResponse",
+"properties": {
+"device": {
+"$ref": "GoogleAppsCloudidentityDevicesV1Device",
+"description": "Resultant Device object for the action. Note that asset tags will not be returned in the device object."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserMetadata": {
+"description": "Metadata for CancelWipeDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserRequest": {
+"description": "Request message for cancelling an unfinished user account wipe.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserResponse": {
+"description": "Response message for cancelling an unfinished user account wipe.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CertificateAttributes": {
+"description": "Stores information about a certificate.",
+"id": "GoogleAppsCloudidentityDevicesV1CertificateAttributes",
+"properties": {
+"certificateTemplate": {
+"$ref": "GoogleAppsCloudidentityDevicesV1CertificateTemplate",
+"description": "The X.509 extension for CertificateTemplate."
+},
+"fingerprint": {
+"description": "The encoded certificate fingerprint.",
+"type": "string"
+},
+"issuer": {
+"description": "The name of the issuer of this certificate.",
+"type": "string"
+},
+"serialNumber": {
+"description": "Serial number of the certificate, Example: \"123456789\".",
+"type": "string"
+},
+"subject": {
+"description": "The subject name of this certificate.",
+"type": "string"
+},
+"thumbprint": {
+"description": "The certificate thumbprint.",
+"type": "string"
+},
+"validationState": {
+"description": "Output only. Validation state of this certificate.",
+"enum": [
+"CERTIFICATE_VALIDATION_STATE_UNSPECIFIED",
+"VALIDATION_SUCCESSFUL",
+"VALIDATION_FAILED"
+],
+"enumDescriptions": [
+"Default value.",
+"Certificate validation was successful.",
+"Certificate validation failed."
+],
+"readOnly": true,
+"type": "string"
+},
+"validityExpirationTime": {
+"description": "Certificate not valid at or after this timestamp.",
+"format": "google-datetime",
+"type": "string"
+},
+"validityStartTime": {
+"description": "Certificate not valid before this timestamp.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CertificateTemplate": {
+"description": "CertificateTemplate (v3 Extension in X.509).",
+"id": "GoogleAppsCloudidentityDevicesV1CertificateTemplate",
+"properties": {
+"id": {
+"description": "The template id of the template. Example: \"1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047\".",
+"type": "string"
+},
+"majorVersion": {
+"description": "The Major version of the template. Example: 100.",
+"format": "int32",
+"type": "integer"
+},
+"minorVersion": {
+"description": "The minor version of the template. Example: 12.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ClientState": {
+"description": "Represents the state associated with an API client calling the Devices API. Resource representing ClientState and supports updates from API users",
+"id": "GoogleAppsCloudidentityDevicesV1ClientState",
+"properties": {
+"assetTags": {
+"description": "The caller can specify asset tags for this resource",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"complianceState": {
+"description": "The compliance state of the resource as specified by the API client.",
+"enum": [
+"COMPLIANCE_STATE_UNSPECIFIED",
+"COMPLIANT",
+"NON_COMPLIANT"
+],
+"enumDescriptions": [
+"The compliance state of the resource is unknown or unspecified.",
+"Device is compliant with third party policies",
+"Device is not compliant with third party policies"
+],
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the client state data was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"customId": {
+"description": "This field may be used to store a unique identifier for the API resource within which these CustomAttributes are a field.",
+"type": "string"
+},
+"etag": {
+"description": "The token that needs to be passed back for concurrency control in updates. Token needs to be passed back in UpdateRequest",
+"type": "string"
+},
+"healthScore": {
+"description": "The Health score of the resource. The Health score is the callers specification of the condition of the device from a usability point of view. For example, a third-party device management provider may specify a health score based on its compliance with organizational policies.",
+"enum": [
+"HEALTH_SCORE_UNSPECIFIED",
+"VERY_POOR",
+"POOR",
+"NEUTRAL",
+"GOOD",
+"VERY_GOOD"
+],
+"enumDescriptions": [
+"Default value",
+"The object is in very poor health as defined by the caller.",
+"The object is in poor health as defined by the caller.",
+"The object health is neither good nor poor, as defined by the caller.",
+"The object is in good health as defined by the caller.",
+"The object is in very good health as defined by the caller."
+],
+"type": "string"
+},
+"keyValuePairs": {
+"additionalProperties": {
+"$ref": "GoogleAppsCloudidentityDevicesV1CustomAttributeValue"
+},
+"description": "The map of key-value attributes stored by callers specific to a device. The total serialized length of this map may not exceed 10KB. No limit is placed on the number of attributes in a map.",
+"type": "object"
+},
+"lastUpdateTime": {
+"description": "Output only. The time the client state data was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"managed": {
+"description": "The management state of the resource as specified by the API client.",
+"enum": [
+"MANAGED_STATE_UNSPECIFIED",
+"MANAGED",
+"UNMANAGED"
+],
+"enumDescriptions": [
+"The management state of the resource is unknown or unspecified.",
+"The resource is managed.",
+"The resource is not managed."
+],
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device}/deviceUsers/{device_user}/clientState/{partner}`, where partner corresponds to the partner storing the data. For partners belonging to the \"BeyondCorp Alliance\", this is the partner ID specified to you by Google. For all other callers, this is a string of the form: `{customer}-suffix`, where `customer` is your customer ID. The *suffix* is any string the caller specifies. This string will be displayed verbatim in the administration console. This suffix is used in setting up Custom Access Levels in Context-Aware Access. Your organization's customer ID can be obtained from the URL: `GET https://www.googleapis.com/admin/directory/v1/customers/my_customer` The `id` field in the response contains the customer ID starting with the letter 'C'. The customer ID to be used in this API is the string after the letter 'C' (not including 'C')",
+"readOnly": true,
+"type": "string"
+},
+"ownerType": {
+"description": "Output only. The owner of the ClientState",
+"enum": [
+"OWNER_TYPE_UNSPECIFIED",
+"OWNER_TYPE_CUSTOMER",
+"OWNER_TYPE_PARTNER"
+],
+"enumDescriptions": [
+"Unknown owner type",
+"Customer is the owner",
+"Partner is the owner"
+],
+"readOnly": true,
+"type": "string"
+},
+"scoreReason": {
+"description": "A descriptive cause of the health score.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CreateDeviceMetadata": {
+"description": "Metadata for CreateDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1CreateDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CustomAttributeValue": {
+"description": "Additional custom attribute values may be one of these types",
+"id": "GoogleAppsCloudidentityDevicesV1CustomAttributeValue",
+"properties": {
+"boolValue": {
+"description": "Represents a boolean value.",
+"type": "boolean"
+},
+"numberValue": {
+"description": "Represents a double value.",
+"format": "double",
+"type": "number"
+},
+"stringValue": {
+"description": "Represents a string value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1DeleteDeviceMetadata": {
+"description": "Metadata for DeleteDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1DeleteDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1DeleteDeviceUserMetadata": {
+"description": "Metadata for DeleteDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1DeleteDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1Device": {
+"description": " A Device within the Cloud Identity Devices API. Represents a Device known to Google Cloud, independent of the device ownership, type, and whether it is assigned or in use by a user.",
+"id": "GoogleAppsCloudidentityDevicesV1Device",
+"properties": {
+"androidSpecificAttributes": {
+"$ref": "GoogleAppsCloudidentityDevicesV1AndroidAttributes",
+"description": "Output only. Attributes specific to Android devices.",
+"readOnly": true
+},
+"assetTag": {
+"description": "Asset tag of the device.",
+"type": "string"
+},
+"basebandVersion": {
+"description": "Output only. Baseband version of the device.",
+"readOnly": true,
+"type": "string"
+},
+"bootloaderVersion": {
+"description": "Output only. Device bootloader version. Example: 0.6.7.",
+"readOnly": true,
+"type": "string"
+},
+"brand": {
+"description": "Output only. Device brand. Example: Samsung.",
+"readOnly": true,
+"type": "string"
+},
+"buildNumber": {
+"description": "Output only. Build number of the device.",
+"readOnly": true,
+"type": "string"
+},
+"compromisedState": {
+"description": "Output only. Represents whether the Device is compromised.",
+"enum": [
+"COMPROMISED_STATE_UNSPECIFIED",
+"COMPROMISED",
+"UNCOMPROMISED"
+],
+"enumDescriptions": [
+"Default value.",
+"The device is compromised (currently, this means Android device is rooted).",
+"The device is safe (currently, this means Android device is unrooted)."
+],
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. When the Company-Owned device was imported. This field is empty for BYOD devices.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deviceId": {
+"description": "Unique identifier for the device.",
+"type": "string"
+},
+"deviceType": {
+"description": "Output only. Type of device.",
+"enum": [
+"DEVICE_TYPE_UNSPECIFIED",
+"ANDROID",
+"IOS",
+"GOOGLE_SYNC",
+"WINDOWS",
+"MAC_OS",
+"LINUX",
+"CHROME_OS"
+],
+"enumDescriptions": [
+"Unknown device type",
+"Device is an Android device",
+"Device is an iOS device",
+"Device is a Google Sync device.",
+"Device is a Windows device.",
+"Device is a MacOS device.",
+"Device is a Linux device.",
+"Device is a ChromeOS device."
+],
+"readOnly": true,
+"type": "string"
+},
+"enabledDeveloperOptions": {
+"description": "Output only. Whether developer options is enabled on device.",
+"readOnly": true,
+"type": "boolean"
+},
+"enabledUsbDebugging": {
+"description": "Output only. Whether USB debugging is enabled on device.",
+"readOnly": true,
+"type": "boolean"
+},
+"encryptionState": {
+"description": "Output only. Device encryption state.",
+"enum": [
+"ENCRYPTION_STATE_UNSPECIFIED",
+"UNSUPPORTED_BY_DEVICE",
+"ENCRYPTED",
+"NOT_ENCRYPTED"
+],
+"enumDescriptions": [
+"Encryption Status is not set.",
+"Device doesn't support encryption.",
+"Device is encrypted.",
+"Device is not encrypted."
+],
+"readOnly": true,
+"type": "string"
+},
+"endpointVerificationSpecificAttributes": {
+"$ref": "GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes",
+"description": "Output only. Attributes specific to [Endpoint Verification](https://cloud.google.com/endpoint-verification/docs/overview) devices.",
+"readOnly": true
+},
+"hostname": {
+"description": "Host name of the device.",
+"type": "string"
+},
+"imei": {
+"description": "Output only. IMEI number of device if GSM device; empty otherwise.",
+"readOnly": true,
+"type": "string"
+},
+"kernelVersion": {
+"description": "Output only. Kernel version of the device.",
+"readOnly": true,
+"type": "string"
+},
+"lastSyncTime": {
+"description": "Most recent time when device synced with this service.",
+"format": "google-datetime",
+"type": "string"
+},
+"managementState": {
+"description": "Output only. Management state of the device",
+"enum": [
+"MANAGEMENT_STATE_UNSPECIFIED",
+"APPROVED",
+"BLOCKED",
+"PENDING",
+"UNPROVISIONED",
+"WIPING",
+"WIPED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"Device is approved.",
+"Device is blocked.",
+"Device is pending approval.",
+"The device is not provisioned. Device will start from this state until some action is taken (i.e. a user starts using the device).",
+"Data and settings on the device are being removed.",
+"All data and settings on the device are removed."
+],
+"readOnly": true,
+"type": "string"
+},
+"manufacturer": {
+"description": "Output only. Device manufacturer. Example: Motorola.",
+"readOnly": true,
+"type": "string"
+},
+"meid": {
+"description": "Output only. MEID number of device if CDMA device; empty otherwise.",
+"readOnly": true,
+"type": "string"
+},
+"model": {
+"description": "Output only. Model name of device. Example: Pixel 3.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique id assigned to the Device. Important: Device API scopes require that you use domain-wide delegation to access the API. For more information, see [Set up the Devices API](https://cloud.google.com/identity/docs/how-to/setup-devices).",
+"readOnly": true,
+"type": "string"
+},
+"networkOperator": {
+"description": "Output only. Mobile or network operator of device, if available.",
+"readOnly": true,
+"type": "string"
+},
+"osVersion": {
+"description": "Output only. OS version of the device. Example: Android 8.1.0.",
+"readOnly": true,
+"type": "string"
+},
+"otherAccounts": {
+"description": "Output only. Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account's domain has only one account. Examples: \"com.example\", \"xyz.com\".",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"ownerType": {
+"description": "Output only. Whether the device is owned by the company or an individual",
+"enum": [
+"DEVICE_OWNERSHIP_UNSPECIFIED",
+"COMPANY",
+"BYOD"
+],
+"enumDescriptions": [
+"Default value. The value is unused.",
+"Company owns the device.",
+"Bring Your Own Device (i.e. individual owns the device)"
+],
+"readOnly": true,
+"type": "string"
+},
+"releaseVersion": {
+"description": "Output only. OS release version. Example: 6.0.",
+"readOnly": true,
+"type": "string"
+},
+"securityPatchTime": {
+"description": "Output only. OS security patch update time on device.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"serialNumber": {
+"description": "Serial Number of device. Example: HT82V1A01076.",
+"type": "string"
+},
+"unifiedDeviceId": {
+"description": "Output only. Unified device id of the device.",
+"readOnly": true,
+"type": "string"
+},
+"wifiMacAddresses": {
+"description": "WiFi MAC addresses of device.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1DeviceUser": {
+"description": "Represents a user's use of a Device in the Cloud Identity Devices API. A DeviceUser is a resource representing a user's use of a Device",
+"id": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"properties": {
+"compromisedState": {
+"description": "Compromised State of the DeviceUser object",
+"enum": [
+"COMPROMISED_STATE_UNSPECIFIED",
+"COMPROMISED",
+"NOT_COMPROMISED"
+],
+"enumDescriptions": [
+"Compromised state of Device User account is unknown or unspecified.",
+"Device User Account is compromised.",
+"Device User Account is not compromised."
+],
+"type": "string"
+},
+"createTime": {
+"description": "When the user first signed in to the device",
+"format": "google-datetime",
+"type": "string"
+},
+"firstSyncTime": {
+"description": "Output only. Most recent time when user registered with this service.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"languageCode": {
+"description": "Output only. Default locale used on device, in IETF BCP-47 format.",
+"readOnly": true,
+"type": "string"
+},
+"lastSyncTime": {
+"description": "Output only. Last time when user synced with policies.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"managementState": {
+"description": "Output only. Management state of the user on the device.",
+"enum": [
+"MANAGEMENT_STATE_UNSPECIFIED",
+"WIPING",
+"WIPED",
+"APPROVED",
+"BLOCKED",
+"PENDING_APPROVAL",
+"UNENROLLED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"This user's data and profile is being removed from the device.",
+"This user's data and profile is removed from the device.",
+"User is approved to access data on the device.",
+"User is blocked from accessing data on the device.",
+"User is awaiting approval.",
+"User is unenrolled from Advanced Windows Management, but the Windows account is still intact."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the DeviceUser in format: `devices/{device}/deviceUsers/{device_user}`, where `device_user` uniquely identifies a user's use of a device.",
+"readOnly": true,
+"type": "string"
+},
+"passwordState": {
+"description": "Password state of the DeviceUser object",
+"enum": [
+"PASSWORD_STATE_UNSPECIFIED",
+"PASSWORD_SET",
+"PASSWORD_NOT_SET"
+],
+"enumDescriptions": [
+"Password state not set.",
+"Password set in object.",
+"Password not set in object."
+],
+"type": "string"
+},
+"userAgent": {
+"description": "Output only. User agent on the device for this specific user",
+"readOnly": true,
+"type": "string"
+},
+"userEmail": {
+"description": "Email address of the user registered on the device.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes": {
+"description": "Resource representing the [Endpoint Verification-specific attributes](https://cloud.google.com/endpoint-verification/docs/device-information) of a device.",
+"id": "GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes",
+"properties": {
+"additionalSignals": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "[Additional signals](https://cloud.google.com/endpoint-verification/docs/device-information) reported by Endpoint Verification. It includes the following attributes: * Non-configurable attributes: hotfixes, av_installed, av_enabled, windows_domain_name, is_os_native_firewall_enabled, and is_secure_boot_enabled. * [Configurable attributes](https://cloud.google.com/endpoint-verification/docs/collect-config-attributes): file, folder, and binary attributes; registry entries; and properties in a plist.",
+"type": "object"
+},
+"browserAttributes": {
+"description": "Details of browser profiles reported by Endpoint Verification.",
+"items": {
+"$ref": "GoogleAppsCloudidentityDevicesV1BrowserAttributes"
+},
+"type": "array"
+},
+"certificateAttributes": {
+"description": "Details of certificates.",
+"items": {
+"$ref": "GoogleAppsCloudidentityDevicesV1CertificateAttributes"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ListClientStatesResponse": {
+"description": "Response message that is returned in ListClientStates.",
+"id": "GoogleAppsCloudidentityDevicesV1ListClientStatesResponse",
+"properties": {
+"clientStates": {
+"description": "Client states meeting the list restrictions.",
+"items": {
+"$ref": "GoogleAppsCloudidentityDevicesV1ClientState"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. Empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ListDeviceUsersResponse": {
+"description": "Response message that is returned from the ListDeviceUsers method.",
+"id": "GoogleAppsCloudidentityDevicesV1ListDeviceUsersResponse",
+"properties": {
+"deviceUsers": {
+"description": "Devices meeting the list restrictions.",
+"items": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. Empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ListDevicesResponse": {
+"description": "Response message that is returned from the ListDevices method.",
+"id": "GoogleAppsCloudidentityDevicesV1ListDevicesResponse",
+"properties": {
+"devices": {
+"description": "Devices meeting the list restrictions.",
+"items": {
+"$ref": "GoogleAppsCloudidentityDevicesV1Device"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. Empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ListEndpointAppsMetadata": {
+"description": "Metadata for ListEndpointApps LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1ListEndpointAppsMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1LookupSelfDeviceUsersResponse": {
+"description": "Response containing resource names of the DeviceUsers associated with the caller's credentials.",
+"id": "GoogleAppsCloudidentityDevicesV1LookupSelfDeviceUsersResponse",
+"properties": {
+"customer": {
+"description": "The customer resource name that may be passed back to other Devices API methods such as List, Get, etc.",
+"type": "string"
+},
+"names": {
+"description": "[Resource names](https://cloud.google.com/apis/design/resource_names) of the DeviceUsers in the format: `devices/{device}/deviceUsers/{user_resource}`, where device is the unique ID assigned to a Device and user_resource is the unique user ID",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. Empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1SignoutDeviceUserMetadata": {
+"description": "Metadata for SignoutDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1SignoutDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1UpdateClientStateMetadata": {
+"description": "Metadata for UpdateClientState LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1UpdateClientStateMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1UpdateDeviceMetadata": {
+"description": "Metadata for UpdateDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1UpdateDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceMetadata": {
+"description": "Metadata for WipeDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceRequest": {
+"description": "Request message for wiping all data on the device.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"type": "string"
+},
+"removeResetLock": {
+"description": "Optional. Specifies if a user is able to factory reset a device after a Device Wipe. On iOS, this is called \"Activation Lock\", while on Android, this is known as \"Factory Reset Protection\". If true, this protection will be removed from the device, so that a user can successfully factory reset. If false, the setting is untouched on the device.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceResponse": {
+"description": "Response message for wiping all data on the device.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceResponse",
+"properties": {
+"device": {
+"$ref": "GoogleAppsCloudidentityDevicesV1Device",
+"description": "Resultant Device object for the action. Note that asset tags will not be returned in the device object."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceUserMetadata": {
+"description": "Metadata for WipeDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceUserRequest": {
+"description": "Request message for starting an account wipe on device.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer}`, where customer is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceUserResponse": {
+"description": "Response message for wiping the user's account from the device.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"Group": {
+"description": "A group within the Cloud Identity Groups API. A `Group` is a collection of entities, where each entity is either a user, another group, or a service account.",
+"id": "Group",
+"properties": {
+"additionalGroupKeys": {
+"description": "Output only. Additional group keys associated with the Group.",
+"items": {
+"$ref": "EntityKey"
+},
+"readOnly": true,
+"type": "array"
+},
+"createTime": {
+"description": "Output only. The time when the `Group` was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the `Group`.",
+"type": "string"
+},
+"dynamicGroupMetadata": {
+"$ref": "DynamicGroupMetadata",
+"description": "Optional. Dynamic group metadata like queries and status."
+},
+"groupKey": {
+"$ref": "EntityKey",
+"description": "Required. The `EntityKey` of the `Group`."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Required. One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value.",
+"type": "object"
+},
+"name": {
+"description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group}`.",
+"readOnly": true,
+"type": "string"
+},
+"parent": {
+"description": "Required. Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the `Group` was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GroupRelation": {
+"description": "Message representing a transitive group of a user or a group.",
+"id": "GroupRelation",
+"properties": {
+"displayName": {
+"description": "Display name for this group.",
+"type": "string"
+},
+"group": {
+"description": "Resource name for this group.",
+"type": "string"
+},
+"groupKey": {
+"$ref": "EntityKey",
+"description": "Entity key has an id and a namespace. In case of discussion forums, the id will be an email address without a namespace."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels for Group resource.",
+"type": "object"
+},
+"relationType": {
+"description": "The relation between the member and the transitive group.",
+"enum": [
+"RELATION_TYPE_UNSPECIFIED",
+"DIRECT",
+"INDIRECT",
+"DIRECT_AND_INDIRECT"
+],
+"enumDescriptions": [
+"The relation type is undefined or undetermined.",
+"The two entities have only a direct membership with each other.",
+"The two entities have only an indirect membership with each other.",
+"The two entities have both a direct and an indirect membership with each other."
+],
+"type": "string"
+},
+"roles": {
+"description": "Membership roles of the member for the group.",
+"items": {
+"$ref": "TransitiveMembershipRole"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"IdpCredential": {
+"description": "Credential for verifying signatures produced by the Identity Provider.",
+"id": "IdpCredential",
+"properties": {
+"dsaKeyInfo": {
+"$ref": "DsaPublicKeyInfo",
+"description": "Output only. Information of a DSA public key.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the credential.",
+"readOnly": true,
+"type": "string"
+},
+"rsaKeyInfo": {
+"$ref": "RsaPublicKeyInfo",
+"description": "Output only. Information of a RSA public key.",
+"readOnly": true
+},
+"updateTime": {
+"description": "Output only. Time when the `IdpCredential` was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"InboundSamlSsoProfile": {
+"description": "A [SAML 2.0](https://www.oasis-open.org/standards#samlv2.0) federation between a Google enterprise customer and a SAML identity provider.",
+"id": "InboundSamlSsoProfile",
+"properties": {
+"customer": {
+"description": "Immutable. The customer. For example: `customers/C0123abc`.",
+"type": "string"
+},
+"displayName": {
+"description": "Human-readable name of the SAML SSO profile.",
+"type": "string"
+},
+"idpConfig": {
+"$ref": "SamlIdpConfig",
+"description": "SAML identity provider configuration."
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.",
+"readOnly": true,
+"type": "string"
+},
+"spConfig": {
+"$ref": "SamlSpConfig",
+"description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
+}
+},
+"type": "object"
+},
+"InboundSsoAssignment": {
+"description": "Targets with \"set\" SSO assignments and their respective assignments.",
+"id": "InboundSsoAssignment",
+"properties": {
+"customer": {
+"description": "Immutable. The customer. For example: `customers/C0123abc`.",
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.",
+"readOnly": true,
+"type": "string"
+},
+"rank": {
+"description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set.",
+"format": "int32",
+"type": "integer"
+},
+"samlSsoInfo": {
+"$ref": "SamlSsoInfo",
+"description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
+},
+"signInBehavior": {
+"$ref": "SignInBehavior",
+"description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration."
+},
+"ssoMode": {
+"description": "Inbound SSO behavior.",
+"enum": [
+"SSO_MODE_UNSPECIFIED",
+"SSO_OFF",
+"SAML_SSO",
+"DOMAIN_WIDE_SAML_IF_ENABLED"
+],
+"enumDescriptions": [
+"Not allowed.",
+"Disable SSO for the targeted users.",
+"Use an external SAML Identity Provider for SSO for the targeted users.",
+"Use the domain-wide SAML Identity Provider for the targeted users if one is configured; otherwise, this is equivalent to `SSO_OFF`. Note that this will also be equivalent to `SSO_OFF` if/when support for domain-wide SAML is removed. Google may disallow this mode at that point and existing assignments with this mode may be automatically changed to `SSO_OFF`."
+],
+"type": "string"
+},
+"targetGroup": {
+"description": "Immutable. Must be of the form `groups/{group}`.",
+"type": "string"
+},
+"targetOrgUnit": {
+"description": "Immutable. Must be of the form `orgUnits/{org_unit}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IsInvitableUserResponse": {
+"description": "Response for IsInvitableUser RPC.",
+"id": "IsInvitableUserResponse",
+"properties": {
+"isInvitableUser": {
+"description": "Returns true if the email address is invitable.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ListGroupsResponse": {
+"description": "Response message for ListGroups operation.",
+"id": "ListGroupsResponse",
+"properties": {
+"groups": {
+"description": "Groups returned in response to list request. The results are not sorted.",
+"items": {
+"$ref": "Group"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results available for listing.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListIdpCredentialsResponse": {
+"description": "Response of the InboundSamlSsoProfilesService.ListIdpCredentials method.",
+"id": "ListIdpCredentialsResponse",
+"properties": {
+"idpCredentials": {
+"description": "The IdpCredentials from the specified InboundSamlSsoProfile.",
+"items": {
+"$ref": "IdpCredential"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListInboundSamlSsoProfilesResponse": {
+"description": "Response of the InboundSamlSsoProfilesService.ListInboundSamlSsoProfiles method.",
+"id": "ListInboundSamlSsoProfilesResponse",
+"properties": {
+"inboundSamlSsoProfiles": {
+"description": "List of InboundSamlSsoProfiles.",
+"items": {
+"$ref": "InboundSamlSsoProfile"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListInboundSsoAssignmentsResponse": {
+"description": "Response of the InboundSsoAssignmentsService.ListInboundSsoAssignments method.",
+"id": "ListInboundSsoAssignmentsResponse",
+"properties": {
+"inboundSsoAssignments": {
+"description": "The assignments.",
+"items": {
+"$ref": "InboundSsoAssignment"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMembershipsResponse": {
+"description": "The response message for MembershipsService.ListMemberships.",
+"id": "ListMembershipsResponse",
+"properties": {
+"memberships": {
+"description": "The `Membership`s under the specified `parent`.",
+"items": {
+"$ref": "Membership"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A continuation token to retrieve the next page of results, or empty if there are no more results available.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListPoliciesResponse": {
+"description": "The response message for PoliciesService.ListPolicies.",
+"id": "ListPoliciesResponse",
+"properties": {
+"nextPageToken": {
+"description": "The pagination token to retrieve the next page of results. If this field is empty, there are no subsequent pages.",
+"type": "string"
+},
+"policies": {
+"description": "The results",
+"items": {
+"$ref": "Policy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListUserInvitationsResponse": {
+"description": "Response message for UserInvitation listing request.",
+"id": "ListUserInvitationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The token for the next page. If not empty, indicates that there may be more `UserInvitation` resources that match the listing request; this value can be used in a subsequent ListUserInvitationsRequest to get continued results with the current list call.",
+"type": "string"
+},
+"userInvitations": {
+"description": "The list of UserInvitation resources.",
+"items": {
+"$ref": "UserInvitation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"LookupGroupNameResponse": {
+"description": "The response message for GroupsService.LookupGroupName.",
+"id": "LookupGroupNameResponse",
+"properties": {
+"name": {
+"description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the looked-up `Group`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LookupMembershipNameResponse": {
+"description": "The response message for MembershipsService.LookupMembershipName.",
+"id": "LookupMembershipNameResponse",
+"properties": {
+"name": {
+"description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the looked-up `Membership`. Must be of the form `groups/{group}/memberships/{membership}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MemberRelation": {
+"description": "Message representing a transitive membership of a group.",
+"id": "MemberRelation",
+"properties": {
+"member": {
+"description": "Resource name for this member.",
+"type": "string"
+},
+"preferredMemberKey": {
+"description": "Entity key has an id and a namespace. In case of discussion forums, the id will be an email address without a namespace.",
+"items": {
+"$ref": "EntityKey"
+},
+"type": "array"
+},
+"relationType": {
+"description": "The relation between the group and the transitive member.",
+"enum": [
+"RELATION_TYPE_UNSPECIFIED",
+"DIRECT",
+"INDIRECT",
+"DIRECT_AND_INDIRECT"
+],
+"enumDescriptions": [
+"The relation type is undefined or undetermined.",
+"The two entities have only a direct membership with each other.",
+"The two entities have only an indirect membership with each other.",
+"The two entities have both a direct and an indirect membership with each other."
+],
+"type": "string"
+},
+"roles": {
+"description": "The membership role details (i.e name of role and expiry time).",
+"items": {
+"$ref": "TransitiveMembershipRole"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MemberRestriction": {
+"description": "The definition of MemberRestriction",
+"id": "MemberRestriction",
+"properties": {
+"evaluation": {
+"$ref": "RestrictionEvaluation",
+"description": "The evaluated state of this restriction on a group."
+},
+"query": {
+"description": "Member Restriction as defined by CEL expression. Supported restrictions are: `member.customer_id` and `member.type`. Valid values for `member.type` are `1`, `2` and `3`. They correspond to USER, SERVICE_ACCOUNT, and GROUP respectively. The value for `member.customer_id` only supports `groupCustomerId()` currently which means the customer id of the group will be used for restriction. Supported operators are `&&`, `||` and `==`, corresponding to AND, OR, and EQUAL. Examples: Allow only service accounts of given customer to be members. `member.type == 2 && member.customer_id == groupCustomerId()` Allow only users or groups to be members. `member.type == 1 || member.type == 3`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Membership": {
+"description": "A membership within the Cloud Identity Groups API. A `Membership` defines a relationship between a `Group` and an entity belonging to that `Group`, referred to as a \"member\".",
+"id": "Membership",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the `Membership` was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deliverySetting": {
+"description": "Output only. Delivery setting associated with the membership.",
+"enum": [
+"DELIVERY_SETTING_UNSPECIFIED",
+"ALL_MAIL",
+"DIGEST",
+"DAILY",
+"NONE",
+"DISABLED"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"Represents each mail should be delivered",
+"Represents 1 email for every 25 messages.",
+"Represents daily summary of messages.",
+"Represents no delivery.",
+"Represents disabled state."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group}/memberships/{membership}`.",
+"readOnly": true,
+"type": "string"
+},
+"preferredMemberKey": {
+"$ref": "EntityKey",
+"description": "Required. Immutable. The `EntityKey` of the member."
+},
+"roles": {
+"description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`.",
+"items": {
+"$ref": "MembershipRole"
+},
+"type": "array"
+},
+"type": {
+"description": "Output only. The type of the membership.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"USER",
+"SERVICE_ACCOUNT",
+"GROUP",
+"SHARED_DRIVE",
+"CBCM_BROWSER",
+"OTHER"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"Represents user type.",
+"Represents service account type.",
+"Represents group type.",
+"Represents Shared drive.",
+"Represents a CBCM-managed Chrome Browser type.",
+"Represents other type."
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the `Membership` was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"MembershipAdjacencyList": {
+"description": "Membership graph's path information as an adjacency list.",
+"id": "MembershipAdjacencyList",
+"properties": {
+"edges": {
+"description": "Each edge contains information about the member that belongs to this group. Note: Fields returned here will help identify the specific Membership resource (e.g `name`, `preferred_member_key` and `role`), but may not be a comprehensive list of all fields.",
+"items": {
+"$ref": "Membership"
+},
+"type": "array"
+},
+"group": {
+"description": "Resource name of the group that the members belong to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MembershipRelation": {
+"description": "Message containing membership relation.",
+"id": "MembershipRelation",
+"properties": {
+"description": {
+"description": "An extended description to help users determine the purpose of a `Group`.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the `Group`.",
+"type": "string"
+},
+"group": {
+"description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group_id}`.",
+"type": "string"
+},
+"groupKey": {
+"$ref": "EntityKey",
+"description": "The `EntityKey` of the `Group`."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value.",
+"type": "object"
+},
+"membership": {
+"description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group_id}/memberships/{membership_id}`.",
+"type": "string"
+},
+"roles": {
+"description": "The `MembershipRole`s that apply to the `Membership`.",
+"items": {
+"$ref": "MembershipRole"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MembershipRole": {
+"description": "A membership role within the Cloud Identity Groups API. A `MembershipRole` defines the privileges granted to a `Membership`.",
+"id": "MembershipRole",
+"properties": {
+"expiryDetail": {
+"$ref": "ExpiryDetail",
+"description": "The expiry details of the `MembershipRole`. Expiry details are only supported for `MEMBER` `MembershipRoles`. May be set if `name` is `MEMBER`. Must not be set if `name` is any other value."
+},
+"name": {
+"description": "The name of the `MembershipRole`. Must be one of `OWNER`, `MANAGER`, `MEMBER`.",
+"type": "string"
+},
+"restrictionEvaluations": {
+"$ref": "RestrictionEvaluations",
+"description": "Evaluations of restrictions applied to parent group on this membership."
+}
+},
+"type": "object"
+},
+"MembershipRoleRestrictionEvaluation": {
+"description": "The evaluated state of this restriction.",
+"id": "MembershipRoleRestrictionEvaluation",
+"properties": {
+"state": {
+"description": "Output only. The current state of the restriction",
+"enum": [
+"STATE_UNSPECIFIED",
+"COMPLIANT",
+"FORWARD_COMPLIANT",
+"NON_COMPLIANT",
+"EVALUATING"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"The member adheres to the parent group's restriction.",
+"The group-group membership might be currently violating some parent group's restriction but in future, it will never allow any new member in the child group which can violate parent group's restriction.",
+"The member violates the parent group's restriction.",
+"The state of the membership is under evaluation."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ModifyMembershipRolesRequest": {
+"description": "The request message for MembershipsService.ModifyMembershipRoles.",
+"id": "ModifyMembershipRolesRequest",
+"properties": {
+"addRoles": {
+"description": "The `MembershipRole`s to be added. Adding or removing roles in the same request as updating roles is not supported. Must not be set if `update_roles_params` is set.",
+"items": {
+"$ref": "MembershipRole"
+},
+"type": "array"
+},
+"removeRoles": {
+"description": "The `name`s of the `MembershipRole`s to be removed. Adding or removing roles in the same request as updating roles is not supported. It is not possible to remove the `MEMBER` `MembershipRole`. If you wish to delete a `Membership`, call MembershipsService.DeleteMembership instead. Must not contain `MEMBER`. Must not be set if `update_roles_params` is set.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"updateRolesParams": {
+"description": "The `MembershipRole`s to be updated. Updating roles in the same request as adding or removing roles is not supported. Must not be set if either `add_roles` or `remove_roles` is set.",
+"items": {
+"$ref": "UpdateMembershipRolesParams"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ModifyMembershipRolesResponse": {
+"description": "The response message for MembershipsService.ModifyMembershipRoles.",
+"id": "ModifyMembershipRolesResponse",
+"properties": {
+"membership": {
+"$ref": "Membership",
+"description": "The `Membership` resource after modifying its `MembershipRole`s."
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "A Policy resource binds an instance of a single Setting with the scope of a PolicyQuery. The Setting instance will be applied to all entities that satisfy the query.",
+"id": "Policy",
+"properties": {
+"customer": {
+"description": "Immutable. Customer that the Policy belongs to. The value is in the format 'customers/{customerId}'. The `customerId` must begin with \"C\" To find your customer ID in Admin Console see https://support.google.com/a/answer/10070793.",
+"type": "string"
+},
+"name": {
+"description": "Output only. Identifier. The [resource name](https://cloud.google.com/apis/design/resource_names) of the Policy. Format: policies/{policy}.",
+"readOnly": true,
+"type": "string"
+},
+"policyQuery": {
+"$ref": "PolicyQuery",
+"description": "Required. The PolicyQuery the Setting applies to."
+},
+"setting": {
+"$ref": "Setting",
+"description": "Required. The Setting configured by this Policy."
+},
+"type": {
+"description": "Output only. The type of the policy.",
+"enum": [
+"POLICY_TYPE_UNSPECIFIED",
+"SYSTEM",
+"ADMIN"
+],
+"enumDescriptions": [
+"Unspecified policy type.",
+"Policy type denoting the system-configured policies.",
+"Policy type denoting the admin-configurable policies."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyQuery": {
+"description": "PolicyQuery",
+"id": "PolicyQuery",
+"properties": {
+"group": {
+"description": "Immutable. The group that the query applies to. This field is only set if there is a single value for group that satisfies all clauses of the query. If no group applies, this will be the empty string.",
+"type": "string"
+},
+"orgUnit": {
+"description": "Required. Immutable. Non-empty default. The OrgUnit the query applies to. This field is only set if there is a single value for org_unit that satisfies all clauses of the query.",
+"type": "string"
+},
+"query": {
+"description": "Immutable. The CEL query that defines which entities the Policy applies to (ex. a User entity). For details about CEL see https://opensource.google.com/projects/cel. The OrgUnits the Policy applies to are represented by a clause like so: entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('{orgUnitId}')) The Group the Policy applies to are represented by a clause like so: entity.groups.exists(group, group.group_id == groupId('{groupId}')) The Licenses the Policy applies to are represented by a clause like so: entity.licenses.exists(license, license in ['/product/{productId}/sku/{skuId}']) The above clauses can be present in any combination, and used in conjunction with the &&, || and ! operators. The org_unit and group fields below are helper fields that contain the corresponding value(s) as the query to make the query easier to use.",
+"type": "string"
+},
+"sortOrder": {
+"description": "Output only. The decimal sort order of this PolicyQuery. The value is relative to all other policies with the same setting type for the customer. (There are no duplicates within this set).",
+"format": "double",
+"readOnly": true,
+"type": "number"
+}
+},
+"type": "object"
+},
+"RestrictionEvaluation": {
+"description": "The evaluated state of this restriction.",
+"id": "RestrictionEvaluation",
+"properties": {
+"state": {
+"description": "Output only. The current state of the restriction",
+"enum": [
+"STATE_UNSPECIFIED",
+"EVALUATING",
+"COMPLIANT",
+"FORWARD_COMPLIANT",
+"NON_COMPLIANT"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"The restriction state is currently being evaluated.",
+"All transitive memberships are adhering to restriction.",
+"Some transitive memberships violate the restriction. No new violating memberships can be added.",
+"Some transitive memberships violate the restriction. New violating direct memberships will be denied while indirect memberships may be added."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"RestrictionEvaluations": {
+"description": "Evaluations of restrictions applied to parent group on this membership.",
+"id": "RestrictionEvaluations",
+"properties": {
+"memberRestrictionEvaluation": {
+"$ref": "MembershipRoleRestrictionEvaluation",
+"description": "Evaluation of the member restriction applied to this membership. Empty if the user lacks permission to view the restriction evaluation."
+}
+},
+"type": "object"
+},
+"RsaPublicKeyInfo": {
+"description": "Information of a RSA public key.",
+"id": "RsaPublicKeyInfo",
+"properties": {
+"keySize": {
+"description": "Key size in bits (size of the modulus).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"SamlIdpConfig": {
+"description": "SAML IDP (identity provider) configuration.",
+"id": "SamlIdpConfig",
+"properties": {
+"changePasswordUri": {
+"description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`.",
+"type": "string"
+},
+"entityId": {
+"description": "Required. The SAML **Entity ID** of the identity provider.",
+"type": "string"
+},
+"logoutRedirectUri": {
+"description": "The **Logout Redirect URL** (sign-out page URL) of the identity provider. When a user clicks the sign-out link on a Google page, they will be redirected to this URL. This is a pure redirect with no attached SAML `LogoutRequest` i.e. SAML single logout is not supported. Must use `HTTPS`.",
+"type": "string"
+},
+"singleSignOnServiceUri": {
+"description": "Required. The `SingleSignOnService` endpoint location (sign-in page URL) of the identity provider. This is the URL where the `AuthnRequest` will be sent. Must use `HTTPS`. Assumed to accept the `HTTP-Redirect` binding.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SamlSpConfig": {
+"description": "SAML SP (service provider) configuration.",
+"id": "SamlSpConfig",
+"properties": {
+"assertionConsumerServiceUri": {
+"description": "Output only. The SAML **Assertion Consumer Service (ACS) URL** to be used for the IDP-initiated login. Assumed to accept response messages via the `HTTP-POST` binding.",
+"readOnly": true,
+"type": "string"
+},
+"entityId": {
+"description": "Output only. The SAML **Entity ID** for this service provider.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"SamlSsoInfo": {
+"description": "Details that are applicable when `sso_mode` == `SAML_SSO`.",
+"id": "SamlSsoInfo",
+"properties": {
+"inboundSamlSsoProfile": {
+"description": "Required. Name of the `InboundSamlSsoProfile` to use. Must be of the form `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. ",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchDirectGroupsResponse": {
+"description": "The response message for MembershipsService.SearchDirectGroups.",
+"id": "SearchDirectGroupsResponse",
+"properties": {
+"memberships": {
+"description": "List of direct groups satisfying the query.",
+"items": {
+"$ref": "MembershipRelation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results available for listing.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchGroupsResponse": {
+"description": "The response message for GroupsService.SearchGroups.",
+"id": "SearchGroupsResponse",
+"properties": {
+"groups": {
+"description": "The `Group` resources that match the search query.",
+"items": {
+"$ref": "Group"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A continuation token to retrieve the next page of results, or empty if there are no more results available.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchTransitiveGroupsResponse": {
+"description": "The response message for MembershipsService.SearchTransitiveGroups.",
+"id": "SearchTransitiveGroupsResponse",
+"properties": {
+"memberships": {
+"description": "List of transitive groups satisfying the query.",
+"items": {
+"$ref": "GroupRelation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results available for listing.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchTransitiveMembershipsResponse": {
+"description": "The response message for MembershipsService.SearchTransitiveMemberships.",
+"id": "SearchTransitiveMembershipsResponse",
+"properties": {
+"memberships": {
+"description": "List of transitive members satisfying the query.",
+"items": {
+"$ref": "MemberRelation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SecuritySettings": {
+"description": "The definition of security settings.",
+"id": "SecuritySettings",
+"properties": {
+"memberRestriction": {
+"$ref": "MemberRestriction",
+"description": "The Member Restriction value"
+},
+"name": {
+"description": "Output only. The resource name of the security settings. Shall be of the form `groups/{group_id}/securitySettings`.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"SendUserInvitationRequest": {
+"description": "A request to send email for inviting target user corresponding to the UserInvitation.",
+"id": "SendUserInvitationRequest",
+"properties": {},
+"type": "object"
+},
+"Setting": {
+"description": "Setting",
+"id": "Setting",
+"properties": {
+"type": {
+"description": "Required. Immutable. The type of the Setting. .",
+"type": "string"
+},
+"value": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Required. The value of the Setting.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"SignInBehavior": {
+"description": "Controls sign-in behavior.",
+"id": "SignInBehavior",
+"properties": {
+"redirectCondition": {
+"description": "When to redirect sign-ins to the IdP.",
+"enum": [
+"REDIRECT_CONDITION_UNSPECIFIED",
+"NEVER"
+],
+"enumDescriptions": [
+"Default and means \"always\"",
+"Sign-in flows where the user is prompted for their identity will not redirect to the IdP (so the user will most likely be prompted by Google for a password), but special flows like IdP-initiated SAML and sign-in following automatic redirection to the IdP by domain-specific service URLs will accept the IdP's assertion of the user's identity."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TransitiveMembershipRole": {
+"description": "Message representing the role of a TransitiveMembership.",
+"id": "TransitiveMembershipRole",
+"properties": {
+"role": {
+"description": "TransitiveMembershipRole in string format. Currently supported TransitiveMembershipRoles: `\"MEMBER\"`, `\"OWNER\"`, and `\"MANAGER\"`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpdateGroupMetadata": {
+"description": "Metadata for UpdateGroup LRO.",
+"id": "UpdateGroupMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateInboundSamlSsoProfileOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.UpdateInboundSamlSsoProfile.",
+"id": "UpdateInboundSamlSsoProfileOperationMetadata",
+"properties": {
+"state": {
+"description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpdateInboundSsoAssignmentOperationMetadata": {
+"description": "LRO response metadata for InboundSsoAssignmentsService.UpdateInboundSsoAssignment.",
+"id": "UpdateInboundSsoAssignmentOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateMembershipMetadata": {
+"description": "Metadata for UpdateMembership LRO.",
+"id": "UpdateMembershipMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateMembershipRolesParams": {
+"description": "The details of an update to a `MembershipRole`.",
+"id": "UpdateMembershipRolesParams",
+"properties": {
+"fieldMask": {
+"description": "The fully-qualified names of fields to update. May only contain the field `expiry_detail.expire_time`.",
+"format": "google-fieldmask",
+"type": "string"
+},
+"membershipRole": {
+"$ref": "MembershipRole",
+"description": "The `MembershipRole`s to be updated. Only `MEMBER` `MembershipRole` can currently be updated."
+}
+},
+"type": "object"
+},
+"UserInvitation": {
+"description": "The `UserInvitation` resource represents an email that can be sent to an unmanaged user account inviting them to join the customer's Google Workspace or Cloud Identity account. An unmanaged account shares an email address domain with the Google Workspace or Cloud Identity account but is not managed by it yet. If the user accepts the `UserInvitation`, the user account will become managed.",
+"id": "UserInvitation",
+"properties": {
+"mailsSentCount": {
+"description": "Number of invitation emails sent to the user.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Shall be of the form `customers/{customer}/userinvitations/{user_email_address}`.",
+"type": "string"
+},
+"state": {
+"description": "State of the `UserInvitation`.",
+"enum": [
+"STATE_UNSPECIFIED",
+"NOT_YET_SENT",
+"INVITED",
+"ACCEPTED",
+"DECLINED"
+],
+"enumDescriptions": [
+"The default value. This value is used if the state is omitted.",
+"The `UserInvitation` has been created and is ready for sending as an email.",
+"The user has been invited by email.",
+"The user has accepted the invitation and is part of the organization.",
+"The user declined the invitation."
+],
+"type": "string"
+},
+"updateTime": {
+"description": "Time when the `UserInvitation` was last updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Identity API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudidentity.v1beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudidentity.v1beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..49d2507f588eb3d1aa59f6c8b68c98c229a2ca45
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudidentity.v1beta1.json
@@ -0,0 +1,5400 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-identity.devices": {
+"description": "Private Service: https://www.googleapis.com/auth/cloud-identity.devices"
+},
+"https://www.googleapis.com/auth/cloud-identity.devices.lookup": {
+"description": "See your device details"
+},
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly": {
+"description": "Private Service: https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+},
+"https://www.googleapis.com/auth/cloud-identity.groups": {
+"description": "See, change, create, and delete any of the Cloud Identity Groups that you can access, including the members of each group"
+},
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly": {
+"description": "See any Cloud Identity Groups that you can access, including group members and their emails"
+},
+"https://www.googleapis.com/auth/cloud-identity.inboundsso": {
+"description": "See and edit all of the Inbound SSO profiles and their assignments to any Org Units or Google Groups in your Cloud Identity Organization."
+},
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly": {
+"description": "See all of the Inbound SSO profiles and their assignments to any Org Units or Google Groups in your Cloud Identity Organization."
+},
+"https://www.googleapis.com/auth/cloud-identity.policies": {
+"description": "See and edit policies in your Cloud Identity Organization."
+},
+"https://www.googleapis.com/auth/cloud-identity.policies.readonly": {
+"description": "See policies in your Cloud Identity Organization."
+},
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudidentity.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Identity",
+"description": "API for provisioning and managing identity resources.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/identity/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudidentity:v1beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudidentity.mtls.googleapis.com/",
+"name": "cloudidentity",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"customers": {
+"resources": {
+"userinvitations": {
+"methods": {
+"cancel": {
+"description": "Cancels a UserInvitation that was already sent.",
+"flatPath": "v1beta1/customers/{customersId}/userinvitations/{userinvitationsId}:cancel",
+"httpMethod": "POST",
+"id": "cloudidentity.customers.userinvitations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
+"location": "path",
+"pattern": "^customers/[^/]+/userinvitations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:cancel",
+"request": {
+"$ref": "CancelUserInvitationRequest"
+},
+"response": {
+"$ref": "Operation"
+}
+},
+"get": {
+"description": "Retrieves a UserInvitation resource. **Note:** New consumer accounts with the customer's verified domain created within the previous 48 hours will not appear in the result. This delay also applies to newly-verified domains.",
+"flatPath": "v1beta1/customers/{customersId}/userinvitations/{userinvitationsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.customers.userinvitations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
+"location": "path",
+"pattern": "^customers/[^/]+/userinvitations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "UserInvitation"
+}
+},
+"isInvitableUser": {
+"description": "Verifies whether a user account is eligible to receive a UserInvitation (is an unmanaged account). Eligibility is based on the following criteria: * the email address is a consumer account and it's the primary email address of the account, and * the domain of the email address matches an existing verified Google Workspace or Cloud Identity domain If both conditions are met, the user is eligible. **Note:** This method is not supported for Workspace Essentials customers.",
+"flatPath": "v1beta1/customers/{customersId}/userinvitations/{userinvitationsId}:isInvitableUser",
+"httpMethod": "GET",
+"id": "cloudidentity.customers.userinvitations.isInvitableUser",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
+"location": "path",
+"pattern": "^customers/[^/]+/userinvitations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:isInvitableUser",
+"response": {
+"$ref": "IsInvitableUserResponse"
+}
+},
+"list": {
+"description": "Retrieves a list of UserInvitation resources. **Note:** New consumer accounts with the customer's verified domain created within the previous 48 hours will not appear in the result. This delay also applies to newly-verified domains.",
+"flatPath": "v1beta1/customers/{customersId}/userinvitations",
+"httpMethod": "GET",
+"id": "cloudidentity.customers.userinvitations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. A query string for filtering `UserInvitation` results by their current state, in the format: `\"state=='invited'\"`.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. The sort order of the list results. You can sort the results in descending order based on either email or last update timestamp but not both, using `order_by=\"email desc\"`. Currently, sorting is supported for `update_time asc`, `update_time desc`, `email asc`, and `email desc`. If not specified, results will be returned based on `email asc` order.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of UserInvitation resources to return. If unspecified, at most 100 resources will be returned. The maximum value is 200; values above 200 will be set to 200.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListUserInvitations` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBooks` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The customer ID of the Google Workspace or Cloud Identity account the UserInvitation resources are associated with.",
+"location": "path",
+"pattern": "^customers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/userinvitations",
+"response": {
+"$ref": "ListUserInvitationsResponse"
+}
+},
+"send": {
+"description": "Sends a UserInvitation to email. If the `UserInvitation` does not exist for this request and it is a valid request, the request creates a `UserInvitation`. **Note:** The `get` and `list` methods have a 48-hour delay where newly-created consumer accounts will not appear in the results. You can still send a `UserInvitation` to those accounts if you know the unmanaged email address and IsInvitableUser==True.",
+"flatPath": "v1beta1/customers/{customersId}/userinvitations/{userinvitationsId}:send",
+"httpMethod": "POST",
+"id": "cloudidentity.customers.userinvitations.send",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. `UserInvitation` name in the format `customers/{customer}/userinvitations/{user_email_address}`",
+"location": "path",
+"pattern": "^customers/[^/]+/userinvitations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:send",
+"request": {
+"$ref": "SendUserInvitationRequest"
+},
+"response": {
+"$ref": "Operation"
+}
+}
+}
+}
+}
+},
+"devices": {
+"methods": {
+"cancelWipe": {
+"description": "Cancels an unfinished device wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped.",
+"flatPath": "v1beta1/devices/{devicesId}:cancelWipe",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.cancelWipe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique ID assigned to the Device.",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:cancelWipe",
+"request": {
+"$ref": "CancelWipeDeviceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"create": {
+"description": "Creates a device. Only company-owned device may be created. **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium",
+"flatPath": "v1beta1/devices",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1beta1/devices",
+"request": {
+"$ref": "CreateDeviceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"delete": {
+"description": "Deletes the specified device.",
+"flatPath": "v1beta1/devices/{devicesId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.devices.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique ID assigned to the Device.",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"get": {
+"description": "Retrieves the specified device.",
+"flatPath": "v1beta1/devices/{devicesId}",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Customer in format: `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique ID assigned to the Device.",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Device"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"list": {
+"description": "Lists/Searches devices.",
+"flatPath": "v1beta1/devices",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.list",
+"parameterOrder": [],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Optional. Additional restrictions when fetching list of devices. For a list of search fields, refer to [Mobile device search fields](https://developers.google.com/admin-sdk/directory/v1/search-operators). Multiple search fields are separated by the space character.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Order specification for devices in the response. Only one of the following field names may be used to specify the order: `create_time`, `last_sync_time`, `model`, `os_version`, `device_type` and `serial_number`. `desc` may be specified optionally to specify results to be sorted in descending order. Default order is ascending.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of Devices to return. If unspecified, at most 20 Devices will be returned. The maximum value is 100; values above 100 will be coerced to 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListDevices` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDevices` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "Optional. The view to use for the List request.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"COMPANY_INVENTORY",
+"USER_ASSIGNED_DEVICES"
+],
+"enumDescriptions": [
+"Default value. The value is unused.",
+"This view contains all devices imported by the company admin. Each device in the response contains all information specified by the company admin when importing the device (i.e. asset tags).",
+"This view contains all devices with at least one user registered on the device. Each device in the response contains all device information, except for asset tags."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/devices",
+"response": {
+"$ref": "ListDevicesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"wipe": {
+"description": "Wipes all data on the specified device.",
+"flatPath": "v1beta1/devices/{devicesId}:wipe",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.wipe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where device_id is the unique ID assigned to the Device, and device_user_id is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:wipe",
+"request": {
+"$ref": "WipeDeviceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+}
+},
+"resources": {
+"deviceUsers": {
+"methods": {
+"approve": {
+"description": "Approves device to access user data.",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers/{deviceUsersId}:approve",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.deviceUsers.approve",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where device_id is the unique ID assigned to the Device, and device_user_id is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:approve",
+"request": {
+"$ref": "ApproveDeviceUserRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"block": {
+"description": "Blocks device from accessing user data",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers/{deviceUsersId}:block",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.deviceUsers.block",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where device_id is the unique ID assigned to the Device, and device_user_id is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:block",
+"request": {
+"$ref": "BlockDeviceUserRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"cancelWipe": {
+"description": "Cancels an unfinished user account wipe. This operation can be used to cancel device wipe in the gap between the wipe operation returning success and the device being wiped.",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers/{deviceUsersId}:cancelWipe",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.deviceUsers.cancelWipe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where device_id is the unique ID assigned to the Device, and device_user_id is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:cancelWipe",
+"request": {
+"$ref": "CancelWipeDeviceUserRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"delete": {
+"description": "Deletes the specified DeviceUser. This also revokes the user's access to device data.",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers/{deviceUsersId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.devices.deviceUsers.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where device_id is the unique ID assigned to the Device, and device_user_id is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+},
+"get": {
+"description": "Retrieves the specified DeviceUser",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers/{deviceUsersId}",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where device_id is the unique ID assigned to the Device, and device_user_id is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "DeviceUser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"list": {
+"description": "Lists/Searches DeviceUsers.",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Optional. Additional restrictions when fetching list of devices. For a list of search fields, refer to [Mobile device search fields](https://developers.google.com/admin-sdk/directory/v1/search-operators). Multiple search fields are separated by the space character.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Order specification for devices in the response.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of DeviceUsers to return. If unspecified, at most 5 DeviceUsers will be returned. The maximum value is 20; values above 20 will be coerced to 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListDeviceUsers` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBooks` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. To list all DeviceUsers, set this to \"devices/-\". To list all DeviceUsers owned by a device, set this to the resource name of the device. Format: devices/{device}",
+"location": "path",
+"pattern": "^devices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/deviceUsers",
+"response": {
+"$ref": "ListDeviceUsersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"lookup": {
+"description": "Looks up resource names of the DeviceUsers associated with the caller's credentials, as well as the properties provided in the request. This method must be called with end-user credentials with the scope: https://www.googleapis.com/auth/cloud-identity.devices.lookup If multiple properties are provided, only DeviceUsers having all of these properties are considered as matches - i.e. the query behaves like an AND. Different platforms require different amounts of information from the caller to ensure that the DeviceUser is uniquely identified. - iOS: No properties need to be passed, the caller's credentials are sufficient to identify the corresponding DeviceUser. - Android: Specifying the 'android_id' field is required. - Desktop: Specifying the 'raw_resource_id' field is required.",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers:lookup",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.lookup",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"androidId": {
+"description": "Android Id returned by [Settings.Secure#ANDROID_ID](https://developer.android.com/reference/android/provider/Settings.Secure.html#ANDROID_ID).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of DeviceUsers to return. If unspecified, at most 20 DeviceUsers will be returned. The maximum value is 20; values above 20 will be coerced to 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `LookupDeviceUsers` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `LookupDeviceUsers` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Must be set to \"devices/-/deviceUsers\" to search across all DeviceUser belonging to the user.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers$",
+"required": true,
+"type": "string"
+},
+"rawResourceId": {
+"description": "Raw Resource Id used by Google Endpoint Verification. If the user is enrolled into Google Endpoint Verification, this id will be saved as the 'device_resource_id' field in the following platform dependent files. Mac: ~/.secureConnect/context_aware_config.json Windows: C:\\Users\\%USERPROFILE%\\.secureConnect\\context_aware_config.json Linux: ~/.secureConnect/context_aware_config.json",
+"location": "query",
+"type": "string"
+},
+"userId": {
+"description": "The user whose DeviceUser's resource name will be fetched. Must be set to 'me' to fetch the DeviceUser's resource name for the calling user.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}:lookup",
+"response": {
+"$ref": "LookupSelfDeviceUsersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices.lookup"
+]
+},
+"wipe": {
+"description": "Wipes the user's account on a device.",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers/{deviceUsersId}:wipe",
+"httpMethod": "POST",
+"id": "cloudidentity.devices.deviceUsers.wipe",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where device_id is the unique ID assigned to the Device, and device_user_id is the unique ID assigned to the User.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:wipe",
+"request": {
+"$ref": "WipeDeviceUserRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+}
+},
+"resources": {
+"clientStates": {
+"methods": {
+"get": {
+"description": "Gets the client state for the device user",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers/{deviceUsersId}/clientStates/{clientStatesId}",
+"httpMethod": "GET",
+"id": "cloudidentity.devices.deviceUsers.clientStates.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device_id}/deviceUsers/{device_user_id}/clientStates/{partner_id}`, where `device_id` is the unique ID assigned to the Device, `device_user_id` is the unique ID assigned to the User and `partner_id` identifies the partner storing the data. To get the client state for devices belonging to your own organization, the `partnerId` is in the format: `customerId-*anystring*`. Where the `customerId` is your organization's customer ID and `anystring` is any suffix. This suffix is used in setting up Custom Access Levels in Context-Aware Access. You may use `my_customer` instead of the customer ID for devices managed by your own organization. You may specify `-` in place of the `{device_id}`, so the ClientState resource name can be: `devices/-/deviceUsers/{device_user_resource_id}/clientStates/{partner_id}`.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+/clientStates/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "ClientState"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices",
+"https://www.googleapis.com/auth/cloud-identity.devices.readonly"
+]
+},
+"patch": {
+"description": "Updates the client state for the device user **Note**: This method is available only to customers who have one of the following SKUs: Enterprise Standard, Enterprise Plus, Enterprise for Education, and Cloud Identity Premium",
+"flatPath": "v1beta1/devices/{devicesId}/deviceUsers/{deviceUsersId}/clientStates/{clientStatesId}",
+"httpMethod": "PATCH",
+"id": "cloudidentity.devices.deviceUsers.clientStates.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device_id}/deviceUsers/{device_user_id}/clientState/{partner_id}`, where partner_id corresponds to the partner storing the data.",
+"location": "path",
+"pattern": "^devices/[^/]+/deviceUsers/[^/]+/clientStates/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Comma-separated list of fully qualified names of fields to be updated. If not specified, all updatable fields in ClientState are updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "ClientState"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.devices"
+]
+}
+}
+}
+}
+}
+}
+},
+"groups": {
+"methods": {
+"create": {
+"description": "Creates a `Group`.",
+"flatPath": "v1beta1/groups",
+"httpMethod": "POST",
+"id": "cloudidentity.groups.create",
+"parameterOrder": [],
+"parameters": {
+"initialGroupConfig": {
+"description": "Required. The initial configuration option for the `Group`.",
+"enum": [
+"INITIAL_GROUP_CONFIG_UNSPECIFIED",
+"WITH_INITIAL_OWNER",
+"EMPTY"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"The end user making the request will be added as the initial owner of the `Group`.",
+"An empty group is created without any initial owners. This can only be used by admins of the domain."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/groups",
+"request": {
+"$ref": "Group"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a `Group`.",
+"flatPath": "v1beta1/groups/{groupsId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.groups.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group` to retrieve. Must be of the form `groups/{group_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Retrieves a `Group`.",
+"flatPath": "v1beta1/groups/{groupsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group` to retrieve. Must be of the form `groups/{group_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Group"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getSecuritySettings": {
+"description": "Get Security Settings",
+"flatPath": "v1beta1/groups/{groupsId}/securitySettings",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.getSecuritySettings",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The security settings to retrieve. Format: `groups/{group_id}/securitySettings`",
+"location": "path",
+"pattern": "^groups/[^/]+/securitySettings$",
+"required": true,
+"type": "string"
+},
+"readMask": {
+"description": "Field-level read mask of which fields to return. \"*\" returns all fields. If not specified, all fields will be returned. May only contain the following field: `member_restriction`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "SecuritySettings"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the `Group` resources under a customer or namespace.",
+"flatPath": "v1beta1/groups",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.list",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `View.BASIC` and to 50 for `View.FULL`. Must not be greater than 1000 for `View.BASIC` or 500 for `View.FULL`.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous list request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource under which to list all `Group` resources. Must be of the form `identitysources/{identity_source_id}` for external- identity-mapped groups or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)",
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "The level of detail to be returned. If unspecified, defaults to `View.BASIC`.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"Only basic resource information is returned.",
+"All resource information is returned."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/groups",
+"response": {
+"$ref": "ListGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"lookup": {
+"description": "Looks up the [resource name](https://cloud.google.com/apis/design/resource_names) of a `Group` by its `EntityKey`.",
+"flatPath": "v1beta1/groups:lookup",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.lookup",
+"parameterOrder": [],
+"parameters": {
+"groupKey.id": {
+"description": "The ID of the entity. For Google-managed entities, the `id` must be the email address of an existing group or user. For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
+"location": "query",
+"type": "string"
+},
+"groupKey.namespace": {
+"description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source_id}`.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/groups:lookup",
+"response": {
+"$ref": "LookupGroupNameResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a `Group`.",
+"flatPath": "v1beta1/groups/{groupsId}",
+"httpMethod": "PATCH",
+"id": "cloudidentity.groups.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The names of fields to update. May only contain the following field names: `display_name`, `description`, `labels`, `dynamic_group_metadata`, `posix_groups`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Group"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"search": {
+"description": "Searches for `Group` resources matching a specified query.",
+"flatPath": "v1beta1/groups:search",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.search",
+"parameterOrder": [],
+"parameters": {
+"orderBy": {
+"description": "The ordering of groups for the display name or email in the search groups response. The syntax for this field can be found at https://cloud.google.com/apis/design/design_patterns#sorting_order. Example: Sort by the ascending name: order_by=\"display_name\" Sort by the descending group key email: order_by=\"group_key desc\"",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `GroupView.BASIC` and to 50 for `GroupView.FULL`. Must not be greater than 1000 for `GroupView.BASIC` or 500 for `GroupView.FULL`.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous search request, if any.",
+"location": "query",
+"type": "string"
+},
+"query": {
+"description": "Required. The search query. * Must be specified in [Common Expression Language](https://opensource.google/projects/cel). * Must contain equality operators on the parent, e.g. `parent == 'customers/{customer_id}'`. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793) * Can contain optional inclusion operators on `labels` such as `'cloudidentity.googleapis.com/groups.discussion_forum' in labels`). * Can contain an optional equality operator on `domain_name`. e.g. `domain_name == 'examplepetstore.com'` * Can contain optional `startsWith/contains/equality` operators on `group_key`, e.g. `group_key.startsWith('dev')`, `group_key.contains('dev'), group_key == 'dev@examplepetstore.com'` * Can contain optional `startsWith/contains/equality` operators on `display_name`, such as `display_name.startsWith('dev')` , `display_name.contains('dev')`, `display_name == 'dev'`",
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "The level of detail to be returned. If unspecified, defaults to `View.BASIC`.",
+"enum": [
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Default. Only basic resource information is returned.",
+"All resource information is returned."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/groups:search",
+"response": {
+"$ref": "SearchGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updateSecuritySettings": {
+"description": "Update Security Settings",
+"flatPath": "v1beta1/groups/{groupsId}/securitySettings",
+"httpMethod": "PATCH",
+"id": "cloudidentity.groups.updateSecuritySettings",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The resource name of the security settings. Shall be of the form `groups/{group_id}/securitySettings`.",
+"location": "path",
+"pattern": "^groups/[^/]+/securitySettings$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The fully-qualified names of fields to update. May only contain the following field: `member_restriction.query`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "SecuritySettings"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"memberships": {
+"methods": {
+"checkTransitiveMembership": {
+"description": "Check a potential member for membership in a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. A member has membership to a group as long as there is a single viewable transitive membership between the group and the member. The actor must have view permissions to at least one transitive membership between the member and group.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships:checkTransitiveMembership",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.checkTransitiveMembership",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to check the transitive membership in. Format: `groups/{group_id}`, where `group_id` is the unique id assigned to the Group to which the Membership belongs to.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. A CEL expression that MUST include member specification. This is a `required` field. Certain groups are uniquely identified by both a 'member_key_id' and a 'member_key_namespace', which requires an additional query input: 'member_key_namespace'. Example query: `member_key_id == 'member_key_id_value'`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships:checkTransitiveMembership",
+"response": {
+"$ref": "CheckTransitiveMembershipResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a `Membership`.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships",
+"httpMethod": "POST",
+"id": "cloudidentity.groups.memberships.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent `Group` resource under which to create the `Membership`. Must be of the form `groups/{group_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships",
+"request": {
+"$ref": "Membership"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a `Membership`.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships/{membershipsId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.groups.memberships.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` to delete. Must be of the form `groups/{group_id}/memberships/{membership_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Retrieves a `Membership`.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships/{membershipsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` to retrieve. Must be of the form `groups/{group_id}/memberships/{membership_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Membership"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getMembershipGraph": {
+"description": "Get a membership graph of just a member or both a member and a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. Given a member, the response will contain all membership paths from the member. Given both a group and a member, the response will contain all membership paths between the group and the member.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships:getMembershipGraph",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.getMembershipGraph",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. [Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group_id}`, where `group_id` is the unique ID assigned to the Group to which the Membership belongs to. group_id can be a wildcard collection id \"-\". When `group_id` is specified, the membership graph will be constrained to paths between the member (defined in the query) and the parent. If a wildcard collection is provided, all membership paths connected to the member will be returned.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. A CEL expression that MUST include member specification AND label(s). Certain groups are uniquely identified by both a 'member_key_id' and a 'member_key_namespace', which requires an additional query input: 'member_key_namespace'. Example query: `member_key_id == 'member_key_id_value' && in labels`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships:getMembershipGraph",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the `Membership`s within a `Group`.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return. Note that the number of results returned may be less than this value even if there are more available results. To fetch all results, clients must continue calling this method repeatedly until the response no longer contains a `next_page_token`. If unspecified, defaults to 200 for `GroupView.BASIC` and to 50 for `GroupView.FULL`. Must not be greater than 1000 for `GroupView.BASIC` or 500 for `GroupView.FULL`.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous search request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent `Group` resource under which to lookup the `Membership` name. Must be of the form `groups/{group_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "The level of detail to be returned. If unspecified, defaults to `MembershipView.BASIC`.",
+"enum": [
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Default. Only basic resource information is returned.",
+"All resource information is returned."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships",
+"response": {
+"$ref": "ListMembershipsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"lookup": {
+"description": "Looks up the [resource name](https://cloud.google.com/apis/design/resource_names) of a `Membership` by its `EntityKey`.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships:lookup",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.lookup",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"memberKey.id": {
+"description": "The ID of the entity. For Google-managed entities, the `id` must be the email address of an existing group or user. For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
+"location": "query",
+"type": "string"
+},
+"memberKey.namespace": {
+"description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source_id}`.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent `Group` resource under which to lookup the `Membership` name. Must be of the form `groups/{group_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships:lookup",
+"response": {
+"$ref": "LookupMembershipNameResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"modifyMembershipRoles": {
+"description": "Modifies the `MembershipRole`s of a `Membership`.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships/{membershipsId}:modifyMembershipRoles",
+"httpMethod": "POST",
+"id": "cloudidentity.groups.memberships.modifyMembershipRoles",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership` whose roles are to be modified. Must be of the form `groups/{group_id}/memberships/{membership_id}`.",
+"location": "path",
+"pattern": "^groups/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:modifyMembershipRoles",
+"request": {
+"$ref": "ModifyMembershipRolesRequest"
+},
+"response": {
+"$ref": "ModifyMembershipRolesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchDirectGroups": {
+"description": "Searches direct groups of a member.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships:searchDirectGroups",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.searchDirectGroups",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"orderBy": {
+"description": "The ordering of membership relation for the display name or email in the response. The syntax for this field can be found at https://cloud.google.com/apis/design/design_patterns#sorting_order. Example: Sort by the ascending display name: order_by=\"group_name\" or order_by=\"group_name asc\". Sort by the descending display name: order_by=\"group_name desc\". Sort by the ascending group key: order_by=\"group_key\" or order_by=\"group_key asc\". Sort by the descending group key: order_by=\"group_key desc\".",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The default page size is 200 (max 1000).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: groups/{group_id}, where group_id is always '-' as this API will search across all groups for a given member.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. A CEL expression that MUST include member specification AND label(s). Users can search on label attributes of groups. CONTAINS match ('in') is supported on labels. Identity-mapped groups are uniquely identified by both a `member_key_id` and a `member_key_namespace`, which requires an additional query input: `member_key_namespace`. Example query: `member_key_id == 'member_key_id_value' && 'label_value' in labels`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships:searchDirectGroups",
+"response": {
+"$ref": "SearchDirectGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchTransitiveGroups": {
+"description": "Search transitive groups of a member. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. A transitive group is any group that has a direct or indirect membership to the member. Actor must have view permissions all transitive groups.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships:searchTransitiveGroups",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.searchTransitiveGroups",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The default page size is 200 (max 1000).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous list request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group_id}`, where `group_id` is always '-' as this API will search across all groups for a given member.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. A CEL expression that MUST include member specification AND label(s). This is a `required` field. Users can search on label attributes of groups. CONTAINS match ('in') is supported on labels. Identity-mapped groups are uniquely identified by both a `member_key_id` and a `member_key_namespace`, which requires an additional query input: `member_key_namespace`. Example query: `member_key_id == 'member_key_id_value' && in labels` Query may optionally contain equality operators on the parent of the group restricting the search within a particular customer, e.g. `parent == 'customers/{customer_id}'`. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). This filtering is only supported for Admins with groups read permissions on the input customer. Example query: `member_key_id == 'member_key_id_value' && in labels && parent == 'customers/C046psxkn'`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships:searchTransitiveGroups",
+"response": {
+"$ref": "SearchTransitiveGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchTransitiveMemberships": {
+"description": "Search transitive memberships of a group. **Note:** This feature is only available to Google Workspace Enterprise Standard, Enterprise Plus, and Enterprise for Education; and Cloud Identity Premium accounts. A transitive membership is any direct or indirect membership of a group. Actor must have view permissions to all transitive memberships.",
+"flatPath": "v1beta1/groups/{groupsId}/memberships:searchTransitiveMemberships",
+"httpMethod": "GET",
+"id": "cloudidentity.groups.memberships.searchTransitiveMemberships",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The default page size is 200 (max 1000).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "[Resource name](https://cloud.google.com/apis/design/resource_names) of the group to search transitive memberships in. Format: `groups/{group_id}`, where `group_id` is the unique ID assigned to the Group.",
+"location": "path",
+"pattern": "^groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships:searchTransitiveMemberships",
+"response": {
+"$ref": "SearchTransitiveMembershipsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.groups",
+"https://www.googleapis.com/auth/cloud-identity.groups.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"inboundSamlSsoProfiles": {
+"methods": {
+"create": {
+"description": "Creates an InboundSamlSsoProfile for a customer. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles",
+"httpMethod": "POST",
+"id": "cloudidentity.inboundSamlSsoProfiles.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1beta1/inboundSamlSsoProfiles",
+"request": {
+"$ref": "InboundSamlSsoProfile"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an InboundSamlSsoProfile.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.inboundSamlSsoProfiles.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an InboundSamlSsoProfile.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSamlSsoProfiles.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to get. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "InboundSamlSsoProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists InboundSamlSsoProfiles for a customer.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSamlSsoProfiles.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "A [Common Expression Language](https://github.com/google/cel-spec) expression to filter the results. The only supported filter is filtering by customer. For example: `customer==\"customers/C0123abc\"`. Omitting the filter or specifying a filter of `customer==\"customers/my_customer\"` will return the profiles for the customer that the caller (authenticated user) belongs to.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of InboundSamlSsoProfiles to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100. Requests with page_size greater than that will be silently interpreted as having this maximum value.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListInboundSamlSsoProfiles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSamlSsoProfiles` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/inboundSamlSsoProfiles",
+"response": {
+"$ref": "ListInboundSamlSsoProfilesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an InboundSamlSsoProfile. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}",
+"httpMethod": "PATCH",
+"id": "cloudidentity.inboundSamlSsoProfiles.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "InboundSamlSsoProfile"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"idpCredentials": {
+"methods": {
+"add": {
+"description": "Adds an IdpCredential. Up to 2 credentials are allowed. When the target customer has enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448), the `Operation` in the response will have `\"done\": false`, it will not have a response, and the metadata will have `\"state\": \"awaiting-multi-party-approval\"`.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials:add",
+"httpMethod": "POST",
+"id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.add",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The InboundSamlSsoProfile that owns the IdpCredential. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/idpCredentials:add",
+"request": {
+"$ref": "AddIdpCredentialRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an IdpCredential.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an IdpCredential.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to retrieve. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "IdpCredential"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns a list of IdpCredentials in an InboundSamlSsoProfile.",
+"flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of `IdpCredential`s to return. The service may return fewer than this value.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListIdpCredentials` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListIdpCredentials` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of `IdpCredential`s. Format: `inboundSamlSsoProfiles/{sso_profile_id}`",
+"location": "path",
+"pattern": "^inboundSamlSsoProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/idpCredentials",
+"response": {
+"$ref": "ListIdpCredentialsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"inboundSsoAssignments": {
+"methods": {
+"create": {
+"description": "Creates an InboundSsoAssignment for users and devices in a `Customer` under a given `Group` or `OrgUnit`.",
+"flatPath": "v1beta1/inboundSsoAssignments",
+"httpMethod": "POST",
+"id": "cloudidentity.inboundSsoAssignments.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1beta1/inboundSsoAssignments",
+"request": {
+"$ref": "InboundSsoAssignment"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an InboundSsoAssignment. To disable SSO, Create (or Update) an assignment that has `sso_mode` == `SSO_OFF`.",
+"flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
+"httpMethod": "DELETE",
+"id": "cloudidentity.inboundSsoAssignments.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to delete. Format: `inboundSsoAssignments/{assignment}`",
+"location": "path",
+"pattern": "^inboundSsoAssignments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an InboundSsoAssignment.",
+"flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSsoAssignments.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to fetch. Format: `inboundSsoAssignments/{assignment}`",
+"location": "path",
+"pattern": "^inboundSsoAssignments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "InboundSsoAssignment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the InboundSsoAssignments for a `Customer`.",
+"flatPath": "v1beta1/inboundSsoAssignments",
+"httpMethod": "GET",
+"id": "cloudidentity.inboundSsoAssignments.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "A CEL expression to filter the results. The only supported filter is filtering by customer. For example: `customer==customers/C0123abc`. Omitting the filter or specifying a filter of `customer==customers/my_customer` will return the assignments for the customer that the caller (authenticated user) belongs to.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of assignments to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100, though requests with page_size greater than that will be silently interpreted as having this maximum value. This may increase in the futue.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListInboundSsoAssignments` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSsoAssignments` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/inboundSsoAssignments",
+"response": {
+"$ref": "ListInboundSsoAssignmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-identity.inboundsso.readonly",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an InboundSsoAssignment. The body of this request is the `inbound_sso_assignment` field and the `update_mask` is relative to that. For example: a PATCH to `/v1beta1/inboundSsoAssignments/0abcdefg1234567&update_mask=rank` with a body of `{ \"rank\": 1 }` moves that (presumably group-targeted) SSO assignment to the highest priority and shifts any other group-targeted assignments down in priority.",
+"flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}",
+"httpMethod": "PATCH",
+"id": "cloudidentity.inboundSsoAssignments.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.",
+"location": "path",
+"pattern": "^inboundSsoAssignments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "InboundSsoAssignment"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.inboundsso",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"orgUnits": {
+"resources": {
+"memberships": {
+"methods": {
+"list": {
+"description": "List OrgMembership resources in an OrgUnit treated as 'parent'. Parent format: orgUnits/{$orgUnitId} where `$orgUnitId` is the `orgUnitId` from the [Admin SDK `OrgUnit` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/orgunits)",
+"flatPath": "v1beta1/orgUnits/{orgUnitsId}/memberships",
+"httpMethod": "GET",
+"id": "cloudidentity.orgUnits.memberships.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"customer": {
+"description": "Required. Immutable. Customer that this OrgMembership belongs to. All authorization will happen on the role assignments of this customer. Format: customers/{$customerId} where `$customerId` is the `id` from the [Admin SDK `Customer` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/customers). You may also use `customers/my_customer` to specify your own organization.",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "The search query. Must be specified in [Common Expression Language](https://opensource.google/projects/cel). May only contain equality operators on the `type` (e.g., `type == 'shared_drive'`).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will default to 50. The maximum allowed value is 100, though requests with page_size greater than that will be silently interpreted as 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `OrgMembershipsService.ListOrgMemberships` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListOrgMembershipsRequest` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Immutable. OrgUnit which is queried for a list of memberships. Format: orgUnits/{$orgUnitId} where `$orgUnitId` is the `orgUnitId` from the [Admin SDK `OrgUnit` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/orgunits).",
+"location": "path",
+"pattern": "^orgUnits/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/memberships",
+"response": {
+"$ref": "ListOrgMembershipsResponse"
+}
+},
+"move": {
+"description": "Move an OrgMembership to a new OrgUnit. NOTE: This is an atomic copy-and-delete. The resource will have a new copy under the destination OrgUnit and be deleted from the source OrgUnit. The resource can only be searched under the destination OrgUnit afterwards.",
+"flatPath": "v1beta1/orgUnits/{orgUnitsId}/memberships/{membershipsId}:move",
+"httpMethod": "POST",
+"id": "cloudidentity.orgUnits.memberships.move",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Immutable. The [resource name](https://cloud.google.com/apis/design/resource_names) of the OrgMembership. Format: orgUnits/{$orgUnitId}/memberships/{$membership} The `$orgUnitId` is the `orgUnitId` from the [Admin SDK `OrgUnit` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/orgunits). To manage a Membership without specifying source `orgUnitId`, this API also supports the wildcard character '-' for `$orgUnitId` per https://google.aip.dev/159. The `$membership` shall be of the form `{$entityType};{$memberId}`, where `$entityType` is the enum value of OrgMembership.EntityType, and `memberId` is the `id` from [Drive API (V3) `Drive` resource](https://developers.google.com/drive/api/v3/reference/drives#resource) for OrgMembership.EntityType.SHARED_DRIVE.",
+"location": "path",
+"pattern": "^orgUnits/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:move",
+"request": {
+"$ref": "MoveOrgMembershipRequest"
+},
+"response": {
+"$ref": "Operation"
+}
+}
+}
+}
+}
+},
+"policies": {
+"methods": {
+"get": {
+"description": "Get a Policy",
+"flatPath": "v1beta1/policies/{policiesId}",
+"httpMethod": "GET",
+"id": "cloudidentity.policies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the policy to retrieve. Format: \"policies/{policy}\".",
+"location": "path",
+"pattern": "^policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.policies",
+"https://www.googleapis.com/auth/cloud-identity.policies.readonly"
+]
+},
+"list": {
+"description": "List Policies",
+"flatPath": "v1beta1/policies",
+"httpMethod": "GET",
+"id": "cloudidentity.policies.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "Optional. A CEL expression for filtering the results. Policies can be filtered by application with this expression: setting.name = 'settings/gmail.*' Policies can be filtered by setting type with this expression: setting.name = '*.service_status' A maximum of one of the above setting.name clauses can be used. Policies can be filtered by customer with this expression: customer = \"customers/{customer}\" Where `customer` is the `id` from the [Admin SDK `Customer` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/customers). You may use `customers/my_customer` to specify your own organization. When no customer is mentioned it will be default to customers/my_customer. A maximum of one customer clause can be used. The above clauses can only be combined together in a single filter expression with the `&&` operator.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return. The service can return fewer than this number. If omitted or set to 0, the default is 50 results per page. The maximum allowed value is 100. `page_size` values greater than 100 default to 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The pagination token received from a prior call to PoliciesService.ListPolicies to retrieve the next page of results. When paginating, all other parameters provided to `ListPoliciesRequest` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/policies",
+"response": {
+"$ref": "ListPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-identity.policies",
+"https://www.googleapis.com/auth/cloud-identity.policies.readonly"
+]
+}
+}
+}
+},
+"revision": "20250107",
+"rootUrl": "https://cloudidentity.googleapis.com/",
+"schemas": {
+"AddIdpCredentialOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.AddIdpCredential.",
+"id": "AddIdpCredentialOperationMetadata",
+"properties": {
+"state": {
+"description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AddIdpCredentialRequest": {
+"description": "The request for creating an IdpCredential with its associated payload. An InboundSamlSsoProfile can own up to 2 credentials.",
+"id": "AddIdpCredentialRequest",
+"properties": {
+"pemData": {
+"description": "PEM encoded x509 certificate containing the public key for verifying IdP signatures.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AndroidAttributes": {
+"description": "Resource representing the Android specific attributes of a Device.",
+"id": "AndroidAttributes",
+"properties": {
+"ctsProfileMatch": {
+"description": "Whether the device passes Android CTS compliance.",
+"type": "boolean"
+},
+"enabledUnknownSources": {
+"description": "Whether applications from unknown sources can be installed on device.",
+"type": "boolean"
+},
+"hasPotentiallyHarmfulApps": {
+"description": "Whether any potentially harmful apps were detected on the device.",
+"type": "boolean"
+},
+"ownerProfileAccount": {
+"description": "Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles.",
+"type": "boolean"
+},
+"ownershipPrivilege": {
+"description": "Ownership privileges on device.",
+"enum": [
+"OWNERSHIP_PRIVILEGE_UNSPECIFIED",
+"DEVICE_ADMINISTRATOR",
+"PROFILE_OWNER",
+"DEVICE_OWNER"
+],
+"enumDescriptions": [
+"Ownership privilege is not set.",
+"Active device administrator privileges on the device.",
+"Profile Owner privileges. The account is in a managed corporate profile.",
+"Device Owner privileges on the device."
+],
+"type": "string"
+},
+"supportsWorkProfile": {
+"description": "Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the \"Enforce Work Profile\" policy.",
+"type": "boolean"
+},
+"verifiedBoot": {
+"description": "Whether Android verified boot status is GREEN.",
+"type": "boolean"
+},
+"verifyAppsEnabled": {
+"description": "Whether Google Play Protect Verify Apps is enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ApproveDeviceUserRequest": {
+"description": "Request message for approving the device to access user data.",
+"id": "ApproveDeviceUserRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ApproveDeviceUserResponse": {
+"description": "Response message for approving the device to access user data.",
+"id": "ApproveDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"BlockDeviceUserRequest": {
+"description": "Request message for blocking account on device.",
+"id": "BlockDeviceUserRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BlockDeviceUserResponse": {
+"description": "Response message for blocking the device from accessing user data.",
+"id": "BlockDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"BrowserAttributes": {
+"description": "Contains information about browser profiles reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).",
+"id": "BrowserAttributes",
+"properties": {
+"chromeBrowserInfo": {
+"$ref": "BrowserInfo",
+"description": "Represents the current state of the [Chrome browser attributes](https://cloud.google.com/access-context-manager/docs/browser-attributes) sent by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1)."
+},
+"chromeProfileId": {
+"description": "Chrome profile ID that is exposed by the Chrome API. It is unique for each device.",
+"type": "string"
+},
+"lastProfileSyncTime": {
+"description": "Timestamp in milliseconds since the Unix epoch when the profile/gcm id was last synced.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BrowserInfo": {
+"description": "Browser-specific fields reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).",
+"id": "BrowserInfo",
+"properties": {
+"browserManagementState": {
+"description": "Output only. Browser's management state.",
+"enum": [
+"UNSPECIFIED",
+"UNMANAGED",
+"MANAGED_BY_OTHER_DOMAIN",
+"PROFILE_MANAGED",
+"BROWSER_MANAGED"
+],
+"enumDescriptions": [
+"Management state is not specified.",
+"Browser/Profile is not managed by any customer.",
+"Browser/Profile is managed, but by some other customer.",
+"Profile is managed by customer.",
+"Browser is managed by customer."
+],
+"readOnly": true,
+"type": "string"
+},
+"browserVersion": {
+"description": "Version of the request initiating browser. E.g. `91.0.4442.4`.",
+"type": "string"
+},
+"isBuiltInDnsClientEnabled": {
+"description": "Current state of [built-in DNS client](https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled).",
+"type": "boolean"
+},
+"isBulkDataEntryAnalysisEnabled": {
+"description": "Current state of [bulk data analysis](https://chromeenterprise.google/policies/#OnBulkDataEntryEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isChromeCleanupEnabled": {
+"description": "Current state of [Chrome Cleanup](https://chromeenterprise.google/policies/#ChromeCleanupEnabled).",
+"type": "boolean"
+},
+"isChromeRemoteDesktopAppBlocked": {
+"description": "Current state of [Chrome Remote Desktop app](https://chromeenterprise.google/policies/#URLBlocklist).",
+"type": "boolean"
+},
+"isFileDownloadAnalysisEnabled": {
+"description": "Current state of [file download analysis](https://chromeenterprise.google/policies/#OnFileDownloadedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isFileUploadAnalysisEnabled": {
+"description": "Current state of [file upload analysis](https://chromeenterprise.google/policies/#OnFileAttachedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isRealtimeUrlCheckEnabled": {
+"description": "Current state of [real-time URL check](https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isSecurityEventAnalysisEnabled": {
+"description": "Current state of [security event analysis](https://chromeenterprise.google/policies/#OnSecurityEventEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isSiteIsolationEnabled": {
+"description": "Current state of [site isolation](https://chromeenterprise.google/policies/?policy=IsolateOrigins).",
+"type": "boolean"
+},
+"isThirdPartyBlockingEnabled": {
+"description": "Current state of [third-party blocking](https://chromeenterprise.google/policies/#ThirdPartyBlockingEnabled).",
+"type": "boolean"
+},
+"passwordProtectionWarningTrigger": {
+"description": "Current state of [password protection trigger](https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger).",
+"enum": [
+"PASSWORD_PROTECTION_TRIGGER_UNSPECIFIED",
+"PROTECTION_OFF",
+"PASSWORD_REUSE",
+"PHISHING_REUSE"
+],
+"enumDescriptions": [
+"Password protection is not specified.",
+"Password reuse is never detected.",
+"Warning is shown when the user reuses their protected password on a non-allowed site.",
+"Warning is shown when the user reuses their protected password on a phishing site."
+],
+"type": "string"
+},
+"safeBrowsingProtectionLevel": {
+"description": "Current state of [Safe Browsing protection level](https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel).",
+"enum": [
+"SAFE_BROWSING_LEVEL_UNSPECIFIED",
+"DISABLED",
+"STANDARD",
+"ENHANCED"
+],
+"enumDescriptions": [
+"Browser protection level is not specified.",
+"No protection against dangerous websites, downloads, and extensions.",
+"Standard protection against websites, downloads, and extensions that are known to be dangerous.",
+"Faster, proactive protection against dangerous websites, downloads, and extensions."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelUserInvitationRequest": {
+"description": "Request to cancel sent invitation for target email in UserInvitation.",
+"id": "CancelUserInvitationRequest",
+"properties": {},
+"type": "object"
+},
+"CancelWipeDeviceRequest": {
+"description": "Request message for cancelling an unfinished device wipe.",
+"id": "CancelWipeDeviceRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelWipeDeviceResponse": {
+"description": "Response message for cancelling an unfinished device wipe.",
+"id": "CancelWipeDeviceResponse",
+"properties": {
+"device": {
+"$ref": "Device",
+"description": "Resultant Device object for the action. Note that asset tags will not be returned in the device object."
+}
+},
+"type": "object"
+},
+"CancelWipeDeviceUserRequest": {
+"description": "Request message for cancelling an unfinished user account wipe.",
+"id": "CancelWipeDeviceUserRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelWipeDeviceUserResponse": {
+"description": "Response message for cancelling an unfinished user account wipe.",
+"id": "CancelWipeDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"CertificateAttributes": {
+"description": "Stores information about a certificate.",
+"id": "CertificateAttributes",
+"properties": {
+"certificateTemplate": {
+"$ref": "CertificateTemplate",
+"description": "The X.509 extension for CertificateTemplate."
+},
+"fingerprint": {
+"description": "The encoded certificate fingerprint.",
+"type": "string"
+},
+"issuer": {
+"description": "The name of the issuer of this certificate.",
+"type": "string"
+},
+"serialNumber": {
+"description": "Serial number of the certificate, Example: \"123456789\".",
+"type": "string"
+},
+"subject": {
+"description": "The subject name of this certificate.",
+"type": "string"
+},
+"thumbprint": {
+"description": "The certificate thumbprint.",
+"type": "string"
+},
+"validationState": {
+"description": "Validation state of this certificate.",
+"enum": [
+"CERTIFICATE_VALIDATION_STATE_UNSPECIFIED",
+"VALIDATION_SUCCESSFUL",
+"VALIDATION_FAILED"
+],
+"enumDescriptions": [
+"Default value.",
+"Certificate validation was successful.",
+"Certificate validation failed."
+],
+"type": "string"
+},
+"validityExpirationTime": {
+"description": "Certificate not valid at or after this timestamp.",
+"format": "google-datetime",
+"type": "string"
+},
+"validityStartTime": {
+"description": "Certificate not valid before this timestamp.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CertificateTemplate": {
+"description": "CertificateTemplate (v3 Extension in X.509).",
+"id": "CertificateTemplate",
+"properties": {
+"id": {
+"description": "The template id of the template. Example: \"1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047\".",
+"type": "string"
+},
+"majorVersion": {
+"description": "The Major version of the template. Example: 100.",
+"format": "int32",
+"type": "integer"
+},
+"minorVersion": {
+"description": "The minor version of the template. Example: 12.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"CheckTransitiveMembershipResponse": {
+"description": "The response message for MembershipsService.CheckTransitiveMembership.",
+"id": "CheckTransitiveMembershipResponse",
+"properties": {
+"hasMembership": {
+"description": "Response does not include the possible roles of a member since the behavior of this rpc is not all-or-nothing unlike the other rpcs. So, it may not be possible to list all the roles definitively, due to possible lack of authorization in some of the paths.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ClientState": {
+"description": "Represents the state associated with an API client calling the Devices API. Resource representing ClientState and supports updates from API users",
+"id": "ClientState",
+"properties": {
+"assetTags": {
+"description": "The caller can specify asset tags for this resource",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"complianceState": {
+"description": "The compliance state of the resource as specified by the API client.",
+"enum": [
+"COMPLIANCE_STATE_UNSPECIFIED",
+"COMPLIANT",
+"NON_COMPLIANT"
+],
+"enumDescriptions": [
+"The compliance state of the resource is unknown or unspecified.",
+"Device is compliant with third party policies",
+"Device is not compliant with third party policies"
+],
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the client state data was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"customId": {
+"description": "This field may be used to store a unique identifier for the API resource within which these CustomAttributes are a field.",
+"type": "string"
+},
+"etag": {
+"description": "The token that needs to be passed back for concurrency control in updates. Token needs to be passed back in UpdateRequest",
+"type": "string"
+},
+"healthScore": {
+"description": "The Health score of the resource",
+"enum": [
+"HEALTH_SCORE_UNSPECIFIED",
+"VERY_POOR",
+"POOR",
+"NEUTRAL",
+"GOOD",
+"VERY_GOOD"
+],
+"enumDescriptions": [
+"Default value",
+"The object is in very poor health as defined by the caller.",
+"The object is in poor health as defined by the caller.",
+"The object health is neither good nor poor, as defined by the caller.",
+"The object is in good health as defined by the caller.",
+"The object is in very good health as defined by the caller."
+],
+"type": "string"
+},
+"keyValuePairs": {
+"additionalProperties": {
+"$ref": "CustomAttributeValue"
+},
+"description": "The map of key-value attributes stored by callers specific to a device. The total serialized length of this map may not exceed 10KB. No limit is placed on the number of attributes in a map.",
+"type": "object"
+},
+"lastUpdateTime": {
+"description": "Output only. The time the client state data was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"managed": {
+"description": "The management state of the resource as specified by the API client.",
+"enum": [
+"MANAGED_STATE_UNSPECIFIED",
+"MANAGED",
+"UNMANAGED"
+],
+"enumDescriptions": [
+"The management state of the resource is unknown or unspecified.",
+"The resource is managed.",
+"The resource is not managed."
+],
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device_id}/deviceUsers/{device_user_id}/clientState/{partner_id}`, where partner_id corresponds to the partner storing the data.",
+"readOnly": true,
+"type": "string"
+},
+"ownerType": {
+"description": "Output only. The owner of the ClientState",
+"enum": [
+"OWNER_TYPE_UNSPECIFIED",
+"OWNER_TYPE_CUSTOMER",
+"OWNER_TYPE_PARTNER"
+],
+"enumDescriptions": [
+"Unknown owner type",
+"Customer is the owner",
+"Partner is the owner"
+],
+"readOnly": true,
+"type": "string"
+},
+"scoreReason": {
+"description": "A descriptive cause of the health score.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateDeviceRequest": {
+"description": "Request message for creating a Company Owned device.",
+"id": "CreateDeviceRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"type": "string"
+},
+"device": {
+"$ref": "Device",
+"description": "Required. The device to be created. The name field within this device is ignored in the create method. A new name is created by the method, and returned within the response. Only the fields `device_type`, `serial_number` and `asset_tag` (if present) are used to create the device. All other fields are ignored. The `device_type` and `serial_number` fields are required."
+}
+},
+"type": "object"
+},
+"CreateInboundSamlSsoProfileOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.CreateInboundSamlSsoProfile.",
+"id": "CreateInboundSamlSsoProfileOperationMetadata",
+"properties": {
+"state": {
+"description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateInboundSsoAssignmentOperationMetadata": {
+"description": "LRO response metadata for InboundSsoAssignmentsService.CreateInboundSsoAssignment.",
+"id": "CreateInboundSsoAssignmentOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"CustomAttributeValue": {
+"description": "Additional custom attribute values may be one of these types",
+"id": "CustomAttributeValue",
+"properties": {
+"boolValue": {
+"description": "Represents a boolean value.",
+"type": "boolean"
+},
+"numberValue": {
+"description": "Represents a double value.",
+"format": "double",
+"type": "number"
+},
+"stringValue": {
+"description": "Represents a string value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DeleteIdpCredentialOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.DeleteIdpCredential.",
+"id": "DeleteIdpCredentialOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteInboundSamlSsoProfileOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.DeleteInboundSamlSsoProfile.",
+"id": "DeleteInboundSamlSsoProfileOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteInboundSsoAssignmentOperationMetadata": {
+"description": "LRO response metadata for InboundSsoAssignmentsService.DeleteInboundSsoAssignment.",
+"id": "DeleteInboundSsoAssignmentOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"Device": {
+"description": "A Device within the Cloud Identity Devices API. Represents a Device known to Google Cloud, independent of the device ownership, type, and whether it is assigned or in use by a user. Important: Device API scopes require that you use domain-wide delegation to access the API. For more information, see [Set up the Devices API](https://cloud.google.com/identity/docs/how-to/setup-devices).",
+"id": "Device",
+"properties": {
+"androidSpecificAttributes": {
+"$ref": "AndroidAttributes",
+"description": "Output only. Attributes specific to Android devices.",
+"readOnly": true
+},
+"assetTag": {
+"description": "Asset tag of the device.",
+"type": "string"
+},
+"basebandVersion": {
+"description": "Output only. Baseband version of the device.",
+"readOnly": true,
+"type": "string"
+},
+"bootloaderVersion": {
+"description": "Output only. Device bootloader version. Example: 0.6.7.",
+"readOnly": true,
+"type": "string"
+},
+"brand": {
+"description": "Output only. Device brand. Example: Samsung.",
+"readOnly": true,
+"type": "string"
+},
+"buildNumber": {
+"description": "Output only. Build number of the device.",
+"readOnly": true,
+"type": "string"
+},
+"clientTypes": {
+"description": "List of the clients the device is reporting to.",
+"items": {
+"enum": [
+"CLIENT_TYPE_UNSPECIFIED",
+"DRIVE_FS",
+"FUNDAMENTAL",
+"ENDPOINT_VERIFICATION",
+"WINDOWS_ADVANCED",
+"GOOGLE_CREDENTIALS_PROVIDER_FOR_WINDOWS"
+],
+"enumDescriptions": [
+"Default value",
+"Managed by DriveFS",
+"Management type for every secure device",
+"Managed by Endpoint Verification",
+"Managed by Windows",
+"Managed by Google credential provider for windows"
+],
+"type": "string"
+},
+"type": "array"
+},
+"compromisedState": {
+"description": "Output only. Represents whether the Device is compromised.",
+"enum": [
+"COMPROMISED_STATE_UNSPECIFIED",
+"COMPROMISED",
+"UNCOMPROMISED"
+],
+"enumDescriptions": [
+"Default value.",
+"The device is compromised (currently, this means Android device is rooted).",
+"The device is safe (currently, this means Android device is unrooted)."
+],
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. When the Company-Owned device was imported. This field is empty for BYOD devices.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deviceId": {
+"description": "Unique identifier for the device.",
+"type": "string"
+},
+"deviceType": {
+"description": "Output only. Type of device.",
+"enum": [
+"DEVICE_TYPE_UNSPECIFIED",
+"ANDROID",
+"IOS",
+"GOOGLE_SYNC",
+"WINDOWS",
+"MAC_OS",
+"LINUX",
+"CHROME_OS"
+],
+"enumDescriptions": [
+"Unknown device type",
+"Device is an Android device",
+"Device is an iOS device",
+"Device is a Google Sync device.",
+"Device is a Windows device.",
+"Device is a MacOS device.",
+"Device is a Linux device.",
+"Device is a ChromeOS device."
+],
+"readOnly": true,
+"type": "string"
+},
+"enabledDeveloperOptions": {
+"description": "Output only. Whether developer options is enabled on device.",
+"readOnly": true,
+"type": "boolean"
+},
+"enabledUsbDebugging": {
+"description": "Output only. Whether USB debugging is enabled on device.",
+"readOnly": true,
+"type": "boolean"
+},
+"encryptionState": {
+"description": "Output only. Device encryption state.",
+"enum": [
+"ENCRYPTION_STATE_UNSPECIFIED",
+"UNSUPPORTED_BY_DEVICE",
+"ENCRYPTED",
+"NOT_ENCRYPTED"
+],
+"enumDescriptions": [
+"Encryption Status is not set.",
+"Device doesn't support encryption.",
+"Device is encrypted.",
+"Device is not encrypted."
+],
+"readOnly": true,
+"type": "string"
+},
+"endpointVerificationSpecificAttributes": {
+"$ref": "EndpointVerificationSpecificAttributes",
+"description": "Output only. Attributes specific to [Endpoint Verification](https://cloud.google.com/endpoint-verification/docs/overview) devices.",
+"readOnly": true
+},
+"hostname": {
+"description": "Host name of the device.",
+"type": "string"
+},
+"imei": {
+"description": "Output only. IMEI number of device if GSM device; empty otherwise.",
+"readOnly": true,
+"type": "string"
+},
+"kernelVersion": {
+"description": "Output only. Kernel version of the device.",
+"readOnly": true,
+"type": "string"
+},
+"lastSyncTime": {
+"description": "Most recent time when device synced with this service.",
+"format": "google-datetime",
+"type": "string"
+},
+"managementState": {
+"description": "Output only. Management state of the device",
+"enum": [
+"MANAGEMENT_STATE_UNSPECIFIED",
+"APPROVED",
+"BLOCKED",
+"PENDING",
+"UNPROVISIONED",
+"WIPING",
+"WIPED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"Device is approved.",
+"Device is blocked.",
+"Device is pending approval.",
+"The device is not provisioned. Device will start from this state until some action is taken (i.e. a user starts using the device).",
+"Data and settings on the device are being removed.",
+"All data and settings on the device are removed."
+],
+"readOnly": true,
+"type": "string"
+},
+"manufacturer": {
+"description": "Output only. Device manufacturer. Example: Motorola.",
+"readOnly": true,
+"type": "string"
+},
+"meid": {
+"description": "Output only. MEID number of device if CDMA device; empty otherwise.",
+"readOnly": true,
+"type": "string"
+},
+"model": {
+"description": "Output only. Model name of device. Example: Pixel 3.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device_id}`, where device_id is the unique id assigned to the Device.",
+"readOnly": true,
+"type": "string"
+},
+"networkOperator": {
+"description": "Output only. Mobile or network operator of device, if available.",
+"readOnly": true,
+"type": "string"
+},
+"osVersion": {
+"description": "Output only. OS version of the device. Example: Android 8.1.0.",
+"readOnly": true,
+"type": "string"
+},
+"otherAccounts": {
+"description": "Output only. Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account's domain has only one account. Examples: \"com.example\", \"xyz.com\".",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"ownerType": {
+"description": "Output only. Whether the device is owned by the company or an individual",
+"enum": [
+"DEVICE_OWNERSHIP_UNSPECIFIED",
+"COMPANY",
+"BYOD"
+],
+"enumDescriptions": [
+"Default value. The value is unused.",
+"Company owns the device.",
+"Bring Your Own Device (i.e. individual owns the device)"
+],
+"readOnly": true,
+"type": "string"
+},
+"releaseVersion": {
+"description": "Output only. OS release version. Example: 6.0.",
+"readOnly": true,
+"type": "string"
+},
+"securityPatchTime": {
+"description": "Output only. OS security patch update time on device.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"serialNumber": {
+"description": "Serial Number of device. Example: HT82V1A01076.",
+"type": "string"
+},
+"unifiedDeviceId": {
+"description": "Output only. Unified device id of the device.",
+"readOnly": true,
+"type": "string"
+},
+"wifiMacAddresses": {
+"description": "WiFi MAC addresses of device.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"DeviceUser": {
+"description": "Represents a user's use of a Device in the Cloud Identity Devices API. A DeviceUser is a resource representing a user's use of a Device",
+"id": "DeviceUser",
+"properties": {
+"compromisedState": {
+"description": "Compromised State of the DeviceUser object",
+"enum": [
+"COMPROMISED_STATE_UNSPECIFIED",
+"COMPROMISED",
+"NOT_COMPROMISED"
+],
+"enumDescriptions": [
+"Compromised state of Device User account is unknown or unspecified.",
+"Device User Account is compromised.",
+"Device User Account is not compromised."
+],
+"type": "string"
+},
+"createTime": {
+"description": "When the user first signed in to the device",
+"format": "google-datetime",
+"type": "string"
+},
+"firstSyncTime": {
+"description": "Output only. Most recent time when user registered with this service.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"languageCode": {
+"description": "Output only. Default locale used on device, in IETF BCP-47 format.",
+"readOnly": true,
+"type": "string"
+},
+"lastSyncTime": {
+"description": "Output only. Last time when user synced with policies.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"managementState": {
+"description": "Output only. Management state of the user on the device.",
+"enum": [
+"MANAGEMENT_STATE_UNSPECIFIED",
+"WIPING",
+"WIPED",
+"APPROVED",
+"BLOCKED",
+"PENDING_APPROVAL",
+"UNENROLLED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"This user's data and profile is being removed from the device.",
+"This user's data and profile is removed from the device.",
+"User is approved to access data on the device.",
+"User is blocked from accessing data on the device.",
+"User is awaiting approval.",
+"User is unenrolled from Advanced Windows Management, but the Windows account is still intact."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the DeviceUser in format: `devices/{device_id}/deviceUsers/{device_user_id}`, where `device_user_id` uniquely identifies a user's use of a device.",
+"readOnly": true,
+"type": "string"
+},
+"passwordState": {
+"description": "Password state of the DeviceUser object",
+"enum": [
+"PASSWORD_STATE_UNSPECIFIED",
+"PASSWORD_SET",
+"PASSWORD_NOT_SET"
+],
+"enumDescriptions": [
+"Password state not set.",
+"Password set in object.",
+"Password not set in object."
+],
+"type": "string"
+},
+"userAgent": {
+"description": "Output only. User agent on the device for this specific user",
+"readOnly": true,
+"type": "string"
+},
+"userEmail": {
+"description": "Email address of the user registered on the device.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DsaPublicKeyInfo": {
+"description": "Information of a DSA public key.",
+"id": "DsaPublicKeyInfo",
+"properties": {
+"keySize": {
+"description": "Key size in bits (size of parameter P).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"DynamicGroupMetadata": {
+"description": "Dynamic group metadata like queries and status.",
+"id": "DynamicGroupMetadata",
+"properties": {
+"queries": {
+"description": "Memberships will be the union of all queries. Only one entry with USER resource is currently supported. Customers can create up to 500 dynamic groups.",
+"items": {
+"$ref": "DynamicGroupQuery"
+},
+"type": "array"
+},
+"status": {
+"$ref": "DynamicGroupStatus",
+"description": "Output only. Status of the dynamic group.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"DynamicGroupQuery": {
+"description": "Defines a query on a resource.",
+"id": "DynamicGroupQuery",
+"properties": {
+"query": {
+"description": "Query that determines the memberships of the dynamic group. Examples: All users with at least one `organizations.department` of engineering. `user.organizations.exists(org, org.department=='engineering')` All users with at least one location that has `area` of `foo` and `building_id` of `bar`. `user.locations.exists(loc, loc.area=='foo' && loc.building_id=='bar')` All users with any variation of the name John Doe (case-insensitive queries add `equalsIgnoreCase()` to the value being queried). `user.name.value.equalsIgnoreCase('jOhn DoE')`",
+"type": "string"
+},
+"resourceType": {
+"enum": [
+"RESOURCE_TYPE_UNSPECIFIED",
+"USER"
+],
+"enumDescriptions": [
+"Default value (not valid)",
+"For queries on User"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"DynamicGroupStatus": {
+"description": "The current status of a dynamic group along with timestamp.",
+"id": "DynamicGroupStatus",
+"properties": {
+"status": {
+"description": "Status of the dynamic group.",
+"enum": [
+"STATUS_UNSPECIFIED",
+"UP_TO_DATE",
+"UPDATING_MEMBERSHIPS",
+"INVALID_QUERY"
+],
+"enumDescriptions": [
+"Default.",
+"The dynamic group is up-to-date.",
+"The dynamic group has just been created and memberships are being updated.",
+"Group is in an unrecoverable state and its memberships can't be updated."
+],
+"type": "string"
+},
+"statusTime": {
+"description": "The latest time at which the dynamic group is guaranteed to be in the given status. If status is `UP_TO_DATE`, the latest time at which the dynamic group was confirmed to be up-to-date. If status is `UPDATING_MEMBERSHIPS`, the time at which dynamic group was created.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EndpointVerificationSpecificAttributes": {
+"description": "Resource representing the [Endpoint Verification-specific attributes](https://cloud.google.com/endpoint-verification/docs/device-information) of a device.",
+"id": "EndpointVerificationSpecificAttributes",
+"properties": {
+"additionalSignals": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "[Additional signals](https://cloud.google.com/endpoint-verification/docs/device-information) reported by Endpoint Verification. It includes the following attributes: * Non-configurable attributes: hotfixes, av_installed, av_enabled, windows_domain_name, is_os_native_firewall_enabled, and is_secure_boot_enabled. * [Configurable attributes](https://cloud.google.com/endpoint-verification/docs/collect-config-attributes): file, folder, and binary attributes; registry entries; and properties in a plist.",
+"type": "object"
+},
+"browserAttributes": {
+"description": "Details of browser profiles reported by Endpoint Verification.",
+"items": {
+"$ref": "BrowserAttributes"
+},
+"type": "array"
+},
+"certificateAttributes": {
+"description": "Details of certificates.",
+"items": {
+"$ref": "CertificateAttributes"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"EntityKey": {
+"description": "A unique identifier for an entity in the Cloud Identity Groups API. An entity can represent either a group with an optional `namespace` or a user without a `namespace`. The combination of `id` and `namespace` must be unique; however, the same `id` can be used with different `namespace`s.",
+"id": "EntityKey",
+"properties": {
+"id": {
+"description": "The ID of the entity. For Google-managed entities, the `id` must be the email address of an existing group or user. For external-identity-mapped entities, the `id` must be a string conforming to the Identity Source's requirements. Must be unique within a `namespace`.",
+"type": "string"
+},
+"namespace": {
+"description": "The namespace in which the entity exists. If not specified, the `EntityKey` represents a Google-managed entity such as a Google user or a Google Group. If specified, the `EntityKey` represents an external-identity-mapped group. The namespace must correspond to an identity source created in Admin Console and must be in the form of `identitysources/{identity_source_id}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExpiryDetail": {
+"description": "The `MembershipRole` expiry details.",
+"id": "ExpiryDetail",
+"properties": {
+"expireTime": {
+"description": "The time at which the `MembershipRole` will expire.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetMembershipGraphResponse": {
+"description": "The response message for MembershipsService.GetMembershipGraph.",
+"id": "GetMembershipGraphResponse",
+"properties": {
+"adjacencyList": {
+"description": "The membership graph's path information represented as an adjacency list.",
+"items": {
+"$ref": "MembershipAdjacencyList"
+},
+"type": "array"
+},
+"groups": {
+"description": "The resources representing each group in the adjacency list. Each group in this list can be correlated to a 'group' of the MembershipAdjacencyList using the 'name' of the Group resource.",
+"items": {
+"$ref": "Group"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1AndroidAttributes": {
+"description": "Resource representing the Android specific attributes of a Device.",
+"id": "GoogleAppsCloudidentityDevicesV1AndroidAttributes",
+"properties": {
+"ctsProfileMatch": {
+"description": "Whether the device passes Android CTS compliance.",
+"type": "boolean"
+},
+"enabledUnknownSources": {
+"description": "Whether applications from unknown sources can be installed on device.",
+"type": "boolean"
+},
+"hasPotentiallyHarmfulApps": {
+"description": "Whether any potentially harmful apps were detected on the device.",
+"type": "boolean"
+},
+"ownerProfileAccount": {
+"description": "Whether this account is on an owner/primary profile. For phones, only true for owner profiles. Android 4+ devices can have secondary or restricted user profiles.",
+"type": "boolean"
+},
+"ownershipPrivilege": {
+"description": "Ownership privileges on device.",
+"enum": [
+"OWNERSHIP_PRIVILEGE_UNSPECIFIED",
+"DEVICE_ADMINISTRATOR",
+"PROFILE_OWNER",
+"DEVICE_OWNER"
+],
+"enumDescriptions": [
+"Ownership privilege is not set.",
+"Active device administrator privileges on the device.",
+"Profile Owner privileges. The account is in a managed corporate profile.",
+"Device Owner privileges on the device."
+],
+"type": "string"
+},
+"supportsWorkProfile": {
+"description": "Whether device supports Android work profiles. If false, this service will not block access to corp data even if an administrator turns on the \"Enforce Work Profile\" policy.",
+"type": "boolean"
+},
+"verifiedBoot": {
+"description": "Whether Android verified boot status is GREEN.",
+"type": "boolean"
+},
+"verifyAppsEnabled": {
+"description": "Whether Google Play Protect Verify Apps is enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ApproveDeviceUserMetadata": {
+"description": "Metadata for ApproveDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ApproveDeviceUserResponse": {
+"description": "Response message for approving the device to access user data.",
+"id": "GoogleAppsCloudidentityDevicesV1ApproveDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BlockDeviceUserMetadata": {
+"description": "Metadata for BlockDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BlockDeviceUserResponse": {
+"description": "Response message for blocking the device from accessing user data.",
+"id": "GoogleAppsCloudidentityDevicesV1BlockDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BrowserAttributes": {
+"description": "Contains information about browser profiles reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).",
+"id": "GoogleAppsCloudidentityDevicesV1BrowserAttributes",
+"properties": {
+"chromeBrowserInfo": {
+"$ref": "GoogleAppsCloudidentityDevicesV1BrowserInfo",
+"description": "Represents the current state of the [Chrome browser attributes](https://cloud.google.com/access-context-manager/docs/browser-attributes) sent by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1)."
+},
+"chromeProfileId": {
+"description": "Chrome profile ID that is exposed by the Chrome API. It is unique for each device.",
+"type": "string"
+},
+"lastProfileSyncTime": {
+"description": "Timestamp in milliseconds since the Unix epoch when the profile/gcm id was last synced.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1BrowserInfo": {
+"description": "Browser-specific fields reported by the [Endpoint Verification extension](https://chromewebstore.google.com/detail/endpoint-verification/callobklhcbilhphinckomhgkigmfocg?pli=1).",
+"id": "GoogleAppsCloudidentityDevicesV1BrowserInfo",
+"properties": {
+"browserManagementState": {
+"description": "Output only. Browser's management state.",
+"enum": [
+"UNSPECIFIED",
+"UNMANAGED",
+"MANAGED_BY_OTHER_DOMAIN",
+"PROFILE_MANAGED",
+"BROWSER_MANAGED"
+],
+"enumDescriptions": [
+"Management state is not specified.",
+"Browser/Profile is not managed by any customer.",
+"Browser/Profile is managed, but by some other customer.",
+"Profile is managed by customer.",
+"Browser is managed by customer."
+],
+"readOnly": true,
+"type": "string"
+},
+"browserVersion": {
+"description": "Version of the request initiating browser. E.g. `91.0.4442.4`.",
+"type": "string"
+},
+"isBuiltInDnsClientEnabled": {
+"description": "Current state of [built-in DNS client](https://chromeenterprise.google/policies/#BuiltInDnsClientEnabled).",
+"type": "boolean"
+},
+"isBulkDataEntryAnalysisEnabled": {
+"description": "Current state of [bulk data analysis](https://chromeenterprise.google/policies/#OnBulkDataEntryEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isChromeCleanupEnabled": {
+"description": "Current state of [Chrome Cleanup](https://chromeenterprise.google/policies/#ChromeCleanupEnabled).",
+"type": "boolean"
+},
+"isChromeRemoteDesktopAppBlocked": {
+"description": "Current state of [Chrome Remote Desktop app](https://chromeenterprise.google/policies/#URLBlocklist).",
+"type": "boolean"
+},
+"isFileDownloadAnalysisEnabled": {
+"description": "Current state of [file download analysis](https://chromeenterprise.google/policies/#OnFileDownloadedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isFileUploadAnalysisEnabled": {
+"description": "Current state of [file upload analysis](https://chromeenterprise.google/policies/#OnFileAttachedEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isRealtimeUrlCheckEnabled": {
+"description": "Current state of [real-time URL check](https://chromeenterprise.google/policies/#EnterpriseRealTimeUrlCheckMode). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isSecurityEventAnalysisEnabled": {
+"description": "Current state of [security event analysis](https://chromeenterprise.google/policies/#OnSecurityEventEnterpriseConnector). Set to true if provider list from Chrome is non-empty.",
+"type": "boolean"
+},
+"isSiteIsolationEnabled": {
+"description": "Current state of [site isolation](https://chromeenterprise.google/policies/?policy=IsolateOrigins).",
+"type": "boolean"
+},
+"isThirdPartyBlockingEnabled": {
+"description": "Current state of [third-party blocking](https://chromeenterprise.google/policies/#ThirdPartyBlockingEnabled).",
+"type": "boolean"
+},
+"passwordProtectionWarningTrigger": {
+"description": "Current state of [password protection trigger](https://chromeenterprise.google/policies/#PasswordProtectionWarningTrigger).",
+"enum": [
+"PASSWORD_PROTECTION_TRIGGER_UNSPECIFIED",
+"PROTECTION_OFF",
+"PASSWORD_REUSE",
+"PHISHING_REUSE"
+],
+"enumDescriptions": [
+"Password protection is not specified.",
+"Password reuse is never detected.",
+"Warning is shown when the user reuses their protected password on a non-allowed site.",
+"Warning is shown when the user reuses their protected password on a phishing site."
+],
+"type": "string"
+},
+"safeBrowsingProtectionLevel": {
+"description": "Current state of [Safe Browsing protection level](https://chromeenterprise.google/policies/#SafeBrowsingProtectionLevel).",
+"enum": [
+"SAFE_BROWSING_LEVEL_UNSPECIFIED",
+"DISABLED",
+"STANDARD",
+"ENHANCED"
+],
+"enumDescriptions": [
+"Browser protection level is not specified.",
+"No protection against dangerous websites, downloads, and extensions.",
+"Standard protection against websites, downloads, and extensions that are known to be dangerous.",
+"Faster, proactive protection against dangerous websites, downloads, and extensions."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceMetadata": {
+"description": "Metadata for CancelWipeDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceResponse": {
+"description": "Response message for cancelling an unfinished device wipe.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceResponse",
+"properties": {
+"device": {
+"$ref": "GoogleAppsCloudidentityDevicesV1Device",
+"description": "Resultant Device object for the action. Note that asset tags will not be returned in the device object."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserMetadata": {
+"description": "Metadata for CancelWipeDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserResponse": {
+"description": "Response message for cancelling an unfinished user account wipe.",
+"id": "GoogleAppsCloudidentityDevicesV1CancelWipeDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CertificateAttributes": {
+"description": "Stores information about a certificate.",
+"id": "GoogleAppsCloudidentityDevicesV1CertificateAttributes",
+"properties": {
+"certificateTemplate": {
+"$ref": "GoogleAppsCloudidentityDevicesV1CertificateTemplate",
+"description": "The X.509 extension for CertificateTemplate."
+},
+"fingerprint": {
+"description": "The encoded certificate fingerprint.",
+"type": "string"
+},
+"issuer": {
+"description": "The name of the issuer of this certificate.",
+"type": "string"
+},
+"serialNumber": {
+"description": "Serial number of the certificate, Example: \"123456789\".",
+"type": "string"
+},
+"subject": {
+"description": "The subject name of this certificate.",
+"type": "string"
+},
+"thumbprint": {
+"description": "The certificate thumbprint.",
+"type": "string"
+},
+"validationState": {
+"description": "Output only. Validation state of this certificate.",
+"enum": [
+"CERTIFICATE_VALIDATION_STATE_UNSPECIFIED",
+"VALIDATION_SUCCESSFUL",
+"VALIDATION_FAILED"
+],
+"enumDescriptions": [
+"Default value.",
+"Certificate validation was successful.",
+"Certificate validation failed."
+],
+"readOnly": true,
+"type": "string"
+},
+"validityExpirationTime": {
+"description": "Certificate not valid at or after this timestamp.",
+"format": "google-datetime",
+"type": "string"
+},
+"validityStartTime": {
+"description": "Certificate not valid before this timestamp.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CertificateTemplate": {
+"description": "CertificateTemplate (v3 Extension in X.509).",
+"id": "GoogleAppsCloudidentityDevicesV1CertificateTemplate",
+"properties": {
+"id": {
+"description": "The template id of the template. Example: \"1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047\".",
+"type": "string"
+},
+"majorVersion": {
+"description": "The Major version of the template. Example: 100.",
+"format": "int32",
+"type": "integer"
+},
+"minorVersion": {
+"description": "The minor version of the template. Example: 12.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ClientState": {
+"description": "Represents the state associated with an API client calling the Devices API. Resource representing ClientState and supports updates from API users",
+"id": "GoogleAppsCloudidentityDevicesV1ClientState",
+"properties": {
+"assetTags": {
+"description": "The caller can specify asset tags for this resource",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"complianceState": {
+"description": "The compliance state of the resource as specified by the API client.",
+"enum": [
+"COMPLIANCE_STATE_UNSPECIFIED",
+"COMPLIANT",
+"NON_COMPLIANT"
+],
+"enumDescriptions": [
+"The compliance state of the resource is unknown or unspecified.",
+"Device is compliant with third party policies",
+"Device is not compliant with third party policies"
+],
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the client state data was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"customId": {
+"description": "This field may be used to store a unique identifier for the API resource within which these CustomAttributes are a field.",
+"type": "string"
+},
+"etag": {
+"description": "The token that needs to be passed back for concurrency control in updates. Token needs to be passed back in UpdateRequest",
+"type": "string"
+},
+"healthScore": {
+"description": "The Health score of the resource. The Health score is the callers specification of the condition of the device from a usability point of view. For example, a third-party device management provider may specify a health score based on its compliance with organizational policies.",
+"enum": [
+"HEALTH_SCORE_UNSPECIFIED",
+"VERY_POOR",
+"POOR",
+"NEUTRAL",
+"GOOD",
+"VERY_GOOD"
+],
+"enumDescriptions": [
+"Default value",
+"The object is in very poor health as defined by the caller.",
+"The object is in poor health as defined by the caller.",
+"The object health is neither good nor poor, as defined by the caller.",
+"The object is in good health as defined by the caller.",
+"The object is in very good health as defined by the caller."
+],
+"type": "string"
+},
+"keyValuePairs": {
+"additionalProperties": {
+"$ref": "GoogleAppsCloudidentityDevicesV1CustomAttributeValue"
+},
+"description": "The map of key-value attributes stored by callers specific to a device. The total serialized length of this map may not exceed 10KB. No limit is placed on the number of attributes in a map.",
+"type": "object"
+},
+"lastUpdateTime": {
+"description": "Output only. The time the client state data was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"managed": {
+"description": "The management state of the resource as specified by the API client.",
+"enum": [
+"MANAGED_STATE_UNSPECIFIED",
+"MANAGED",
+"UNMANAGED"
+],
+"enumDescriptions": [
+"The management state of the resource is unknown or unspecified.",
+"The resource is managed.",
+"The resource is not managed."
+],
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the ClientState in format: `devices/{device}/deviceUsers/{device_user}/clientState/{partner}`, where partner corresponds to the partner storing the data. For partners belonging to the \"BeyondCorp Alliance\", this is the partner ID specified to you by Google. For all other callers, this is a string of the form: `{customer}-suffix`, where `customer` is your customer ID. The *suffix* is any string the caller specifies. This string will be displayed verbatim in the administration console. This suffix is used in setting up Custom Access Levels in Context-Aware Access. Your organization's customer ID can be obtained from the URL: `GET https://www.googleapis.com/admin/directory/v1/customers/my_customer` The `id` field in the response contains the customer ID starting with the letter 'C'. The customer ID to be used in this API is the string after the letter 'C' (not including 'C')",
+"readOnly": true,
+"type": "string"
+},
+"ownerType": {
+"description": "Output only. The owner of the ClientState",
+"enum": [
+"OWNER_TYPE_UNSPECIFIED",
+"OWNER_TYPE_CUSTOMER",
+"OWNER_TYPE_PARTNER"
+],
+"enumDescriptions": [
+"Unknown owner type",
+"Customer is the owner",
+"Partner is the owner"
+],
+"readOnly": true,
+"type": "string"
+},
+"scoreReason": {
+"description": "A descriptive cause of the health score.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CreateDeviceMetadata": {
+"description": "Metadata for CreateDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1CreateDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1CustomAttributeValue": {
+"description": "Additional custom attribute values may be one of these types",
+"id": "GoogleAppsCloudidentityDevicesV1CustomAttributeValue",
+"properties": {
+"boolValue": {
+"description": "Represents a boolean value.",
+"type": "boolean"
+},
+"numberValue": {
+"description": "Represents a double value.",
+"format": "double",
+"type": "number"
+},
+"stringValue": {
+"description": "Represents a string value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1DeleteDeviceMetadata": {
+"description": "Metadata for DeleteDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1DeleteDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1DeleteDeviceUserMetadata": {
+"description": "Metadata for DeleteDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1DeleteDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1Device": {
+"description": " A Device within the Cloud Identity Devices API. Represents a Device known to Google Cloud, independent of the device ownership, type, and whether it is assigned or in use by a user.",
+"id": "GoogleAppsCloudidentityDevicesV1Device",
+"properties": {
+"androidSpecificAttributes": {
+"$ref": "GoogleAppsCloudidentityDevicesV1AndroidAttributes",
+"description": "Output only. Attributes specific to Android devices.",
+"readOnly": true
+},
+"assetTag": {
+"description": "Asset tag of the device.",
+"type": "string"
+},
+"basebandVersion": {
+"description": "Output only. Baseband version of the device.",
+"readOnly": true,
+"type": "string"
+},
+"bootloaderVersion": {
+"description": "Output only. Device bootloader version. Example: 0.6.7.",
+"readOnly": true,
+"type": "string"
+},
+"brand": {
+"description": "Output only. Device brand. Example: Samsung.",
+"readOnly": true,
+"type": "string"
+},
+"buildNumber": {
+"description": "Output only. Build number of the device.",
+"readOnly": true,
+"type": "string"
+},
+"compromisedState": {
+"description": "Output only. Represents whether the Device is compromised.",
+"enum": [
+"COMPROMISED_STATE_UNSPECIFIED",
+"COMPROMISED",
+"UNCOMPROMISED"
+],
+"enumDescriptions": [
+"Default value.",
+"The device is compromised (currently, this means Android device is rooted).",
+"The device is safe (currently, this means Android device is unrooted)."
+],
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. When the Company-Owned device was imported. This field is empty for BYOD devices.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deviceId": {
+"description": "Unique identifier for the device.",
+"type": "string"
+},
+"deviceType": {
+"description": "Output only. Type of device.",
+"enum": [
+"DEVICE_TYPE_UNSPECIFIED",
+"ANDROID",
+"IOS",
+"GOOGLE_SYNC",
+"WINDOWS",
+"MAC_OS",
+"LINUX",
+"CHROME_OS"
+],
+"enumDescriptions": [
+"Unknown device type",
+"Device is an Android device",
+"Device is an iOS device",
+"Device is a Google Sync device.",
+"Device is a Windows device.",
+"Device is a MacOS device.",
+"Device is a Linux device.",
+"Device is a ChromeOS device."
+],
+"readOnly": true,
+"type": "string"
+},
+"enabledDeveloperOptions": {
+"description": "Output only. Whether developer options is enabled on device.",
+"readOnly": true,
+"type": "boolean"
+},
+"enabledUsbDebugging": {
+"description": "Output only. Whether USB debugging is enabled on device.",
+"readOnly": true,
+"type": "boolean"
+},
+"encryptionState": {
+"description": "Output only. Device encryption state.",
+"enum": [
+"ENCRYPTION_STATE_UNSPECIFIED",
+"UNSUPPORTED_BY_DEVICE",
+"ENCRYPTED",
+"NOT_ENCRYPTED"
+],
+"enumDescriptions": [
+"Encryption Status is not set.",
+"Device doesn't support encryption.",
+"Device is encrypted.",
+"Device is not encrypted."
+],
+"readOnly": true,
+"type": "string"
+},
+"endpointVerificationSpecificAttributes": {
+"$ref": "GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes",
+"description": "Output only. Attributes specific to [Endpoint Verification](https://cloud.google.com/endpoint-verification/docs/overview) devices.",
+"readOnly": true
+},
+"hostname": {
+"description": "Host name of the device.",
+"type": "string"
+},
+"imei": {
+"description": "Output only. IMEI number of device if GSM device; empty otherwise.",
+"readOnly": true,
+"type": "string"
+},
+"kernelVersion": {
+"description": "Output only. Kernel version of the device.",
+"readOnly": true,
+"type": "string"
+},
+"lastSyncTime": {
+"description": "Most recent time when device synced with this service.",
+"format": "google-datetime",
+"type": "string"
+},
+"managementState": {
+"description": "Output only. Management state of the device",
+"enum": [
+"MANAGEMENT_STATE_UNSPECIFIED",
+"APPROVED",
+"BLOCKED",
+"PENDING",
+"UNPROVISIONED",
+"WIPING",
+"WIPED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"Device is approved.",
+"Device is blocked.",
+"Device is pending approval.",
+"The device is not provisioned. Device will start from this state until some action is taken (i.e. a user starts using the device).",
+"Data and settings on the device are being removed.",
+"All data and settings on the device are removed."
+],
+"readOnly": true,
+"type": "string"
+},
+"manufacturer": {
+"description": "Output only. Device manufacturer. Example: Motorola.",
+"readOnly": true,
+"type": "string"
+},
+"meid": {
+"description": "Output only. MEID number of device if CDMA device; empty otherwise.",
+"readOnly": true,
+"type": "string"
+},
+"model": {
+"description": "Output only. Model name of device. Example: Pixel 3.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Device in format: `devices/{device}`, where device is the unique id assigned to the Device. Important: Device API scopes require that you use domain-wide delegation to access the API. For more information, see [Set up the Devices API](https://cloud.google.com/identity/docs/how-to/setup-devices).",
+"readOnly": true,
+"type": "string"
+},
+"networkOperator": {
+"description": "Output only. Mobile or network operator of device, if available.",
+"readOnly": true,
+"type": "string"
+},
+"osVersion": {
+"description": "Output only. OS version of the device. Example: Android 8.1.0.",
+"readOnly": true,
+"type": "string"
+},
+"otherAccounts": {
+"description": "Output only. Domain name for Google accounts on device. Type for other accounts on device. On Android, will only be populated if |ownership_privilege| is |PROFILE_OWNER| or |DEVICE_OWNER|. Does not include the account signed in to the device policy app if that account's domain has only one account. Examples: \"com.example\", \"xyz.com\".",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"ownerType": {
+"description": "Output only. Whether the device is owned by the company or an individual",
+"enum": [
+"DEVICE_OWNERSHIP_UNSPECIFIED",
+"COMPANY",
+"BYOD"
+],
+"enumDescriptions": [
+"Default value. The value is unused.",
+"Company owns the device.",
+"Bring Your Own Device (i.e. individual owns the device)"
+],
+"readOnly": true,
+"type": "string"
+},
+"releaseVersion": {
+"description": "Output only. OS release version. Example: 6.0.",
+"readOnly": true,
+"type": "string"
+},
+"securityPatchTime": {
+"description": "Output only. OS security patch update time on device.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"serialNumber": {
+"description": "Serial Number of device. Example: HT82V1A01076.",
+"type": "string"
+},
+"unifiedDeviceId": {
+"description": "Output only. Unified device id of the device.",
+"readOnly": true,
+"type": "string"
+},
+"wifiMacAddresses": {
+"description": "WiFi MAC addresses of device.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1DeviceUser": {
+"description": "Represents a user's use of a Device in the Cloud Identity Devices API. A DeviceUser is a resource representing a user's use of a Device",
+"id": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"properties": {
+"compromisedState": {
+"description": "Compromised State of the DeviceUser object",
+"enum": [
+"COMPROMISED_STATE_UNSPECIFIED",
+"COMPROMISED",
+"NOT_COMPROMISED"
+],
+"enumDescriptions": [
+"Compromised state of Device User account is unknown or unspecified.",
+"Device User Account is compromised.",
+"Device User Account is not compromised."
+],
+"type": "string"
+},
+"createTime": {
+"description": "When the user first signed in to the device",
+"format": "google-datetime",
+"type": "string"
+},
+"firstSyncTime": {
+"description": "Output only. Most recent time when user registered with this service.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"languageCode": {
+"description": "Output only. Default locale used on device, in IETF BCP-47 format.",
+"readOnly": true,
+"type": "string"
+},
+"lastSyncTime": {
+"description": "Output only. Last time when user synced with policies.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"managementState": {
+"description": "Output only. Management state of the user on the device.",
+"enum": [
+"MANAGEMENT_STATE_UNSPECIFIED",
+"WIPING",
+"WIPED",
+"APPROVED",
+"BLOCKED",
+"PENDING_APPROVAL",
+"UNENROLLED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"This user's data and profile is being removed from the device.",
+"This user's data and profile is removed from the device.",
+"User is approved to access data on the device.",
+"User is blocked from accessing data on the device.",
+"User is awaiting approval.",
+"User is unenrolled from Advanced Windows Management, but the Windows account is still intact."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the DeviceUser in format: `devices/{device}/deviceUsers/{device_user}`, where `device_user` uniquely identifies a user's use of a device.",
+"readOnly": true,
+"type": "string"
+},
+"passwordState": {
+"description": "Password state of the DeviceUser object",
+"enum": [
+"PASSWORD_STATE_UNSPECIFIED",
+"PASSWORD_SET",
+"PASSWORD_NOT_SET"
+],
+"enumDescriptions": [
+"Password state not set.",
+"Password set in object.",
+"Password not set in object."
+],
+"type": "string"
+},
+"userAgent": {
+"description": "Output only. User agent on the device for this specific user",
+"readOnly": true,
+"type": "string"
+},
+"userEmail": {
+"description": "Email address of the user registered on the device.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes": {
+"description": "Resource representing the [Endpoint Verification-specific attributes](https://cloud.google.com/endpoint-verification/docs/device-information) of a device.",
+"id": "GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes",
+"properties": {
+"additionalSignals": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "[Additional signals](https://cloud.google.com/endpoint-verification/docs/device-information) reported by Endpoint Verification. It includes the following attributes: * Non-configurable attributes: hotfixes, av_installed, av_enabled, windows_domain_name, is_os_native_firewall_enabled, and is_secure_boot_enabled. * [Configurable attributes](https://cloud.google.com/endpoint-verification/docs/collect-config-attributes): file, folder, and binary attributes; registry entries; and properties in a plist.",
+"type": "object"
+},
+"browserAttributes": {
+"description": "Details of browser profiles reported by Endpoint Verification.",
+"items": {
+"$ref": "GoogleAppsCloudidentityDevicesV1BrowserAttributes"
+},
+"type": "array"
+},
+"certificateAttributes": {
+"description": "Details of certificates.",
+"items": {
+"$ref": "GoogleAppsCloudidentityDevicesV1CertificateAttributes"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1ListEndpointAppsMetadata": {
+"description": "Metadata for ListEndpointApps LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1ListEndpointAppsMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1SignoutDeviceUserMetadata": {
+"description": "Metadata for SignoutDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1SignoutDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1UpdateClientStateMetadata": {
+"description": "Metadata for UpdateClientState LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1UpdateClientStateMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1UpdateDeviceMetadata": {
+"description": "Metadata for UpdateDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1UpdateDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceMetadata": {
+"description": "Metadata for WipeDevice LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceResponse": {
+"description": "Response message for wiping all data on the device.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceResponse",
+"properties": {
+"device": {
+"$ref": "GoogleAppsCloudidentityDevicesV1Device",
+"description": "Resultant Device object for the action. Note that asset tags will not be returned in the device object."
+}
+},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceUserMetadata": {
+"description": "Metadata for WipeDeviceUser LRO.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleAppsCloudidentityDevicesV1WipeDeviceUserResponse": {
+"description": "Response message for wiping the user's account from the device.",
+"id": "GoogleAppsCloudidentityDevicesV1WipeDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "GoogleAppsCloudidentityDevicesV1DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+},
+"Group": {
+"description": "A group within the Cloud Identity Groups API. A `Group` is a collection of entities, where each entity is either a user, another group, or a service account.",
+"id": "Group",
+"properties": {
+"additionalGroupKeys": {
+"description": "Output only. Additional group keys associated with the Group.",
+"items": {
+"$ref": "EntityKey"
+},
+"readOnly": true,
+"type": "array"
+},
+"createTime": {
+"description": "Output only. The time when the `Group` was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "An extended description to help users determine the purpose of a `Group`. Must not be longer than 4,096 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the `Group`.",
+"type": "string"
+},
+"dynamicGroupMetadata": {
+"$ref": "DynamicGroupMetadata",
+"description": "Optional. Dynamic group metadata like queries and status."
+},
+"groupKey": {
+"$ref": "EntityKey",
+"description": "Required. The `EntityKey` of the `Group`."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Required. One or more label entries that apply to the Group. Labels contain a key with an empty value. Google Groups are the default type of group and have a label with a key of `cloudidentity.googleapis.com/groups.discussion_forum` and an empty value. Existing Google Groups can have an additional label with a key of `cloudidentity.googleapis.com/groups.security` and an empty value added to them. **This is an immutable change and the security label cannot be removed once added.** Dynamic groups have a label with a key of `cloudidentity.googleapis.com/groups.dynamic`. Identity-mapped groups for Cloud Search have a label with a key of `system/groups/external` and an empty value. (Beta) Google Groups can be [locked](https://support.google.com/a?p=locked-groups). To lock a group, add a label with a key of `cloudidentity.googleapis.com/groups.locked` and an empty value. Doing so locks the group. To unlock the group, remove this label.",
+"type": "object"
+},
+"name": {
+"description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group_id}`.",
+"readOnly": true,
+"type": "string"
+},
+"parent": {
+"description": "Required. Immutable. The resource name of the entity under which this `Group` resides in the Cloud Identity resource hierarchy. Must be of the form `identitysources/{identity_source}` for external [identity-mapped groups](https://support.google.com/a/answer/9039510) or `customers/{customer_id}` for Google Groups. The `customer_id` must begin with \"C\" (for example, 'C046psxkn'). [Find your customer ID.] (https://support.google.com/cloudidentity/answer/10070793)",
+"type": "string"
+},
+"posixGroups": {
+"description": "Optional. The POSIX groups associated with the `Group`.",
+"items": {
+"$ref": "PosixGroup"
+},
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. The time when the `Group` was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GroupRelation": {
+"description": "Message representing a transitive group of a user or a group.",
+"id": "GroupRelation",
+"properties": {
+"displayName": {
+"description": "Display name for this group.",
+"type": "string"
+},
+"group": {
+"description": "Resource name for this group.",
+"type": "string"
+},
+"groupKey": {
+"$ref": "EntityKey",
+"description": "Entity key has an id and a namespace. In case of discussion forums, the id will be an email address without a namespace."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels for Group resource.",
+"type": "object"
+},
+"relationType": {
+"description": "The relation between the member and the transitive group.",
+"enum": [
+"RELATION_TYPE_UNSPECIFIED",
+"DIRECT",
+"INDIRECT",
+"DIRECT_AND_INDIRECT"
+],
+"enumDescriptions": [
+"The relation type is undefined or undetermined.",
+"The two entities have only a direct membership with each other.",
+"The two entities have only an indirect membership with each other.",
+"The two entities have both a direct and an indirect membership with each other."
+],
+"type": "string"
+},
+"roles": {
+"description": "Membership roles of the member for the group.",
+"items": {
+"$ref": "TransitiveMembershipRole"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"IdpCredential": {
+"description": "Credential for verifying signatures produced by the Identity Provider.",
+"id": "IdpCredential",
+"properties": {
+"dsaKeyInfo": {
+"$ref": "DsaPublicKeyInfo",
+"description": "Output only. Information of a DSA public key.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the credential.",
+"readOnly": true,
+"type": "string"
+},
+"rsaKeyInfo": {
+"$ref": "RsaPublicKeyInfo",
+"description": "Output only. Information of a RSA public key.",
+"readOnly": true
+},
+"updateTime": {
+"description": "Output only. Time when the `IdpCredential` was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"InboundSamlSsoProfile": {
+"description": "A [SAML 2.0](https://www.oasis-open.org/standards#samlv2.0) federation between a Google enterprise customer and a SAML identity provider.",
+"id": "InboundSamlSsoProfile",
+"properties": {
+"customer": {
+"description": "Immutable. The customer. For example: `customers/C0123abc`.",
+"type": "string"
+},
+"displayName": {
+"description": "Human-readable name of the SAML SSO profile.",
+"type": "string"
+},
+"idpConfig": {
+"$ref": "SamlIdpConfig",
+"description": "SAML identity provider configuration."
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.",
+"readOnly": true,
+"type": "string"
+},
+"spConfig": {
+"$ref": "SamlSpConfig",
+"description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider."
+}
+},
+"type": "object"
+},
+"InboundSsoAssignment": {
+"description": "Targets with \"set\" SSO assignments and their respective assignments.",
+"id": "InboundSsoAssignment",
+"properties": {
+"customer": {
+"description": "Immutable. The customer. For example: `customers/C0123abc`.",
+"type": "string"
+},
+"name": {
+"description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.",
+"readOnly": true,
+"type": "string"
+},
+"rank": {
+"description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set.",
+"format": "int32",
+"type": "integer"
+},
+"samlSsoInfo": {
+"$ref": "SamlSsoInfo",
+"description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`."
+},
+"signInBehavior": {
+"$ref": "SignInBehavior",
+"description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration."
+},
+"ssoMode": {
+"description": "Inbound SSO behavior.",
+"enum": [
+"SSO_MODE_UNSPECIFIED",
+"SSO_OFF",
+"SAML_SSO",
+"DOMAIN_WIDE_SAML_IF_ENABLED"
+],
+"enumDescriptions": [
+"Not allowed.",
+"Disable SSO for the targeted users.",
+"Use an external SAML Identity Provider for SSO for the targeted users.",
+"Use the domain-wide SAML Identity Provider for the targeted users if one is configured; otherwise, this is equivalent to `SSO_OFF`. Note that this will also be equivalent to `SSO_OFF` if/when support for domain-wide SAML is removed. Google may disallow this mode at that point and existing assignments with this mode may be automatically changed to `SSO_OFF`."
+],
+"type": "string"
+},
+"targetGroup": {
+"description": "Immutable. Must be of the form `groups/{group}`.",
+"type": "string"
+},
+"targetOrgUnit": {
+"description": "Immutable. Must be of the form `orgUnits/{org_unit}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IsInvitableUserResponse": {
+"description": "Response for IsInvitableUser RPC.",
+"id": "IsInvitableUserResponse",
+"properties": {
+"isInvitableUser": {
+"description": "Returns true if the email address is invitable.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ListClientStatesResponse": {
+"description": "Response message that is returned in LRO result of ListClientStates Operation.",
+"id": "ListClientStatesResponse",
+"properties": {
+"clientStates": {
+"description": "Client states meeting the list restrictions.",
+"items": {
+"$ref": "ClientState"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. Empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListDeviceUsersResponse": {
+"description": "Response message that is returned from the ListDeviceUsers method.",
+"id": "ListDeviceUsersResponse",
+"properties": {
+"deviceUsers": {
+"description": "Devices meeting the list restrictions.",
+"items": {
+"$ref": "DeviceUser"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. Empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListDevicesResponse": {
+"description": "Response message that is returned from the ListDevices method.",
+"id": "ListDevicesResponse",
+"properties": {
+"devices": {
+"description": "Devices meeting the list restrictions.",
+"items": {
+"$ref": "Device"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. Empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListGroupsResponse": {
+"description": "The response message for GroupsService.ListGroups.",
+"id": "ListGroupsResponse",
+"properties": {
+"groups": {
+"description": "The `Group` resources under the specified `parent`.",
+"items": {
+"$ref": "Group"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A continuation token to retrieve the next page of results, or empty if there are no more results available.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListIdpCredentialsResponse": {
+"description": "Response of the InboundSamlSsoProfilesService.ListIdpCredentials method.",
+"id": "ListIdpCredentialsResponse",
+"properties": {
+"idpCredentials": {
+"description": "The IdpCredentials from the specified InboundSamlSsoProfile.",
+"items": {
+"$ref": "IdpCredential"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListInboundSamlSsoProfilesResponse": {
+"description": "Response of the InboundSamlSsoProfilesService.ListInboundSamlSsoProfiles method.",
+"id": "ListInboundSamlSsoProfilesResponse",
+"properties": {
+"inboundSamlSsoProfiles": {
+"description": "List of InboundSamlSsoProfiles.",
+"items": {
+"$ref": "InboundSamlSsoProfile"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListInboundSsoAssignmentsResponse": {
+"description": "Response of the InboundSsoAssignmentsService.ListInboundSsoAssignments method.",
+"id": "ListInboundSsoAssignmentsResponse",
+"properties": {
+"inboundSsoAssignments": {
+"description": "The assignments.",
+"items": {
+"$ref": "InboundSsoAssignment"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMembershipsResponse": {
+"description": "The response message for MembershipsService.ListMemberships.",
+"id": "ListMembershipsResponse",
+"properties": {
+"memberships": {
+"description": "The `Membership`s under the specified `parent`.",
+"items": {
+"$ref": "Membership"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A continuation token to retrieve the next page of results, or empty if there are no more results available.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOrgMembershipsResponse": {
+"description": "The response message for OrgMembershipsService.ListOrgMemberships.",
+"id": "ListOrgMembershipsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is empty, there are no subsequent pages.",
+"type": "string"
+},
+"orgMemberships": {
+"description": "The non-vacuous membership in an orgUnit.",
+"items": {
+"$ref": "OrgMembership"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListPoliciesResponse": {
+"description": "The response message for PoliciesService.ListPolicies.",
+"id": "ListPoliciesResponse",
+"properties": {
+"nextPageToken": {
+"description": "The pagination token to retrieve the next page of results. If this field is empty, there are no subsequent pages.",
+"type": "string"
+},
+"policies": {
+"description": "The results",
+"items": {
+"$ref": "Policy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListUserInvitationsResponse": {
+"description": "Response message for UserInvitation listing request.",
+"id": "ListUserInvitationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The token for the next page. If not empty, indicates that there may be more `UserInvitation` resources that match the listing request; this value can be used in a subsequent ListUserInvitationsRequest to get continued results with the current list call.",
+"type": "string"
+},
+"userInvitations": {
+"description": "The list of UserInvitation resources.",
+"items": {
+"$ref": "UserInvitation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"LookupGroupNameResponse": {
+"description": "The response message for GroupsService.LookupGroupName.",
+"id": "LookupGroupNameResponse",
+"properties": {
+"name": {
+"description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the looked-up `Group`.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"LookupMembershipNameResponse": {
+"description": "The response message for MembershipsService.LookupMembershipName.",
+"id": "LookupMembershipNameResponse",
+"properties": {
+"name": {
+"description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the looked-up `Membership`. Must be of the form `groups/{group_id}/memberships/{membership_id}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LookupSelfDeviceUsersResponse": {
+"description": "Response containing resource names of the DeviceUsers associated with the caller's credentials.",
+"id": "LookupSelfDeviceUsersResponse",
+"properties": {
+"customer": {
+"description": "The customer Id that may be passed back to other Devices API methods such as List, Get, etc.",
+"type": "string"
+},
+"names": {
+"description": "[Resource names](https://cloud.google.com/apis/design/resource_names) of the DeviceUsers in the format: `devices/{device_id}/deviceUsers/{user_resource_id}`, where device_id is the unique ID assigned to a Device and user_resource_id is the unique user ID",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results. Empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MemberRelation": {
+"description": "Message representing a transitive membership of a group.",
+"id": "MemberRelation",
+"properties": {
+"member": {
+"description": "Resource name for this member.",
+"type": "string"
+},
+"preferredMemberKey": {
+"description": "Entity key has an id and a namespace. In case of discussion forums, the id will be an email address without a namespace.",
+"items": {
+"$ref": "EntityKey"
+},
+"type": "array"
+},
+"relationType": {
+"description": "The relation between the group and the transitive membership.",
+"enum": [
+"RELATION_TYPE_UNSPECIFIED",
+"DIRECT",
+"INDIRECT",
+"DIRECT_AND_INDIRECT"
+],
+"enumDescriptions": [
+"The relation type is undefined or undetermined.",
+"The two entities have only a direct membership with each other.",
+"The two entities have only an indirect membership with each other.",
+"The two entities have both a direct and an indirect membership with each other."
+],
+"type": "string"
+},
+"roles": {
+"description": "The membership role details (i.e name of role and expiry time).",
+"items": {
+"$ref": "TransitiveMembershipRole"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MemberRestriction": {
+"description": "The definition of MemberRestriction",
+"id": "MemberRestriction",
+"properties": {
+"evaluation": {
+"$ref": "RestrictionEvaluation",
+"description": "The evaluated state of this restriction on a group."
+},
+"query": {
+"description": "Member Restriction as defined by CEL expression. Supported restrictions are: `member.customer_id` and `member.type`. Valid values for `member.type` are `1`, `2` and `3`. They correspond to USER, SERVICE_ACCOUNT, and GROUP respectively. The value for `member.customer_id` only supports `groupCustomerId()` currently which means the customer id of the group will be used for restriction. Supported operators are `&&`, `||` and `==`, corresponding to AND, OR, and EQUAL. Examples: Allow only service accounts of given customer to be members. `member.type == 2 && member.customer_id == groupCustomerId()` Allow only users or groups to be members. `member.type == 1 || member.type == 3`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Membership": {
+"description": "A membership within the Cloud Identity Groups API. A `Membership` defines a relationship between a `Group` and an entity belonging to that `Group`, referred to as a \"member\".",
+"id": "Membership",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the `Membership` was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deliverySetting": {
+"description": "Output only. Delivery setting associated with the membership.",
+"enum": [
+"DELIVERY_SETTING_UNSPECIFIED",
+"ALL_MAIL",
+"DIGEST",
+"DAILY",
+"NONE",
+"DISABLED"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"Represents each mail should be delivered",
+"Represents 1 email for every 25 messages.",
+"Represents daily summary of messages.",
+"Represents no delivery.",
+"Represents disabled state."
+],
+"readOnly": true,
+"type": "string"
+},
+"memberKey": {
+"$ref": "EntityKey",
+"description": "Immutable. The `EntityKey` of the member. Either `member_key` or `preferred_member_key` must be set when calling MembershipsService.CreateMembership but not both; both shall be set when returned."
+},
+"name": {
+"description": "Output only. The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group_id}/memberships/{membership_id}`.",
+"readOnly": true,
+"type": "string"
+},
+"preferredMemberKey": {
+"$ref": "EntityKey",
+"description": "Required. Immutable. The `EntityKey` of the member. Either `member_key` or `preferred_member_key` must be set when calling MembershipsService.CreateMembership but not both; both shall be set when returned."
+},
+"roles": {
+"description": "The `MembershipRole`s that apply to the `Membership`. If unspecified, defaults to a single `MembershipRole` with `name` `MEMBER`. Must not contain duplicate `MembershipRole`s with the same `name`.",
+"items": {
+"$ref": "MembershipRole"
+},
+"type": "array"
+},
+"type": {
+"description": "Output only. The type of the membership.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"USER",
+"SERVICE_ACCOUNT",
+"GROUP",
+"SHARED_DRIVE",
+"CBCM_BROWSER",
+"OTHER"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"Represents user type.",
+"Represents service account type.",
+"Represents group type.",
+"Represents Shared drive.",
+"Represents a CBCM-managed Chrome Browser type.",
+"Represents other type."
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the `Membership` was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"MembershipAdjacencyList": {
+"description": "Membership graph's path information as an adjacency list.",
+"id": "MembershipAdjacencyList",
+"properties": {
+"edges": {
+"description": "Each edge contains information about the member that belongs to this group. Note: Fields returned here will help identify the specific Membership resource (e.g `name`, `preferred_member_key` and `role`), but may not be a comprehensive list of all fields.",
+"items": {
+"$ref": "Membership"
+},
+"type": "array"
+},
+"group": {
+"description": "Resource name of the group that the members belong to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MembershipRelation": {
+"description": "Message containing membership relation.",
+"id": "MembershipRelation",
+"properties": {
+"description": {
+"description": "An extended description to help users determine the purpose of a `Group`.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the `Group`.",
+"type": "string"
+},
+"group": {
+"description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Group`. Shall be of the form `groups/{group_id}`.",
+"type": "string"
+},
+"groupKey": {
+"$ref": "EntityKey",
+"description": "The `EntityKey` of the `Group`."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "One or more label entries that apply to the Group. Currently supported labels contain a key with an empty value.",
+"type": "object"
+},
+"membership": {
+"description": "The [resource name](https://cloud.google.com/apis/design/resource_names) of the `Membership`. Shall be of the form `groups/{group_id}/memberships/{membership_id}`.",
+"type": "string"
+},
+"roles": {
+"description": "The `MembershipRole`s that apply to the `Membership`.",
+"items": {
+"$ref": "MembershipRole"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MembershipRole": {
+"description": "A membership role within the Cloud Identity Groups API. A `MembershipRole` defines the privileges granted to a `Membership`.",
+"id": "MembershipRole",
+"properties": {
+"expiryDetail": {
+"$ref": "ExpiryDetail",
+"description": "The expiry details of the `MembershipRole`. Expiry details are only supported for `MEMBER` `MembershipRoles`. May be set if `name` is `MEMBER`. Must not be set if `name` is any other value."
+},
+"name": {
+"description": "The name of the `MembershipRole`. Must be one of `OWNER`, `MANAGER`, `MEMBER`.",
+"type": "string"
+},
+"restrictionEvaluations": {
+"$ref": "RestrictionEvaluations",
+"description": "Evaluations of restrictions applied to parent group on this membership."
+}
+},
+"type": "object"
+},
+"MembershipRoleRestrictionEvaluation": {
+"description": "The evaluated state of this restriction.",
+"id": "MembershipRoleRestrictionEvaluation",
+"properties": {
+"state": {
+"description": "Output only. The current state of the restriction",
+"enum": [
+"STATE_UNSPECIFIED",
+"COMPLIANT",
+"FORWARD_COMPLIANT",
+"NON_COMPLIANT",
+"EVALUATING"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"The member adheres to the parent group's restriction.",
+"The group-group membership might be currently violating some parent group's restriction but in future, it will never allow any new member in the child group which can violate parent group's restriction.",
+"The member violates the parent group's restriction.",
+"The state of the membership is under evaluation."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ModifyMembershipRolesRequest": {
+"description": "The request message for MembershipsService.ModifyMembershipRoles.",
+"id": "ModifyMembershipRolesRequest",
+"properties": {
+"addRoles": {
+"description": "The `MembershipRole`s to be added. Adding or removing roles in the same request as updating roles is not supported. Must not be set if `update_roles_params` is set.",
+"items": {
+"$ref": "MembershipRole"
+},
+"type": "array"
+},
+"removeRoles": {
+"description": "The `name`s of the `MembershipRole`s to be removed. Adding or removing roles in the same request as updating roles is not supported. It is not possible to remove the `MEMBER` `MembershipRole`. If you wish to delete a `Membership`, call MembershipsService.DeleteMembership instead. Must not contain `MEMBER`. Must not be set if `update_roles_params` is set.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"updateRolesParams": {
+"description": "The `MembershipRole`s to be updated. Updating roles in the same request as adding or removing roles is not supported. Must not be set if either `add_roles` or `remove_roles` is set.",
+"items": {
+"$ref": "UpdateMembershipRolesParams"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ModifyMembershipRolesResponse": {
+"description": "The response message for MembershipsService.ModifyMembershipRoles.",
+"id": "ModifyMembershipRolesResponse",
+"properties": {
+"membership": {
+"$ref": "Membership",
+"description": "The `Membership` resource after modifying its `MembershipRole`s."
+}
+},
+"type": "object"
+},
+"MoveOrgMembershipRequest": {
+"description": "The request message for OrgMembershipsService.MoveOrgMembership.",
+"id": "MoveOrgMembershipRequest",
+"properties": {
+"customer": {
+"description": "Required. Immutable. Customer on whose membership change is made. All authorization will happen on the role assignments of this customer. Format: customers/{$customerId} where `$customerId` is the `id` from the [Admin SDK `Customer` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/customers). You may also use `customers/my_customer` to specify your own organization.",
+"type": "string"
+},
+"destinationOrgUnit": {
+"description": "Required. Immutable. OrgUnit where the membership will be moved to. Format: orgUnits/{$orgUnitId} where `$orgUnitId` is the `orgUnitId` from the [Admin SDK `OrgUnit` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/orgunits).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OrgMembership": {
+"description": "A membership in an OrgUnit. An `OrgMembership` defines a relationship between an `OrgUnit` and an entity belonging to that `OrgUnit`, referred to as a \"member\".",
+"id": "OrgMembership",
+"properties": {
+"member": {
+"description": "Immutable. Org member id as full resource name. Format for shared drive resource: //drive.googleapis.com/drives/{$memberId} where `$memberId` is the `id` from [Drive API (V3) `Drive` resource](https://developers.google.com/drive/api/v3/reference/drives#resource).",
+"type": "string"
+},
+"memberUri": {
+"description": "Uri with which you can read the member. This follows https://aip.dev/122 Format for shared drive resource: https://drive.googleapis.com/drive/v3/drives/{$memberId} where `$memberId` is the `id` from [Drive API (V3) `Drive` resource](https://developers.google.com/drive/api/v3/reference/drives#resource).",
+"type": "string"
+},
+"name": {
+"description": "Required. Immutable. The [resource name](https://cloud.google.com/apis/design/resource_names) of the OrgMembership. Format: orgUnits/{$orgUnitId}/memberships/{$membership} The `$orgUnitId` is the `orgUnitId` from the [Admin SDK `OrgUnit` resource](https://developers.google.com/admin-sdk/directory/reference/rest/v1/orgunits). The `$membership` shall be of the form `{$entityType};{$memberId}`, where `$entityType` is the enum value of [OrgMembership.EntityType], and `memberId` is the `id` from [Drive API (V3) `Drive` resource](https://developers.google.com/drive/api/v3/reference/drives#resource) for OrgMembership.EntityType.SHARED_DRIVE.",
+"type": "string"
+},
+"type": {
+"description": "Immutable. Entity type for the org member.",
+"enum": [
+"ENTITY_TYPE_UNSPECIFIED",
+"SHARED_DRIVE"
+],
+"enumDescriptions": [
+"Equivalent to no resource type mentioned",
+"Shared drive as resource type"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "A Policy resource binds an instance of a single Setting with the scope of a PolicyQuery. The Setting instance will be applied to all entities that satisfy the query.",
+"id": "Policy",
+"properties": {
+"customer": {
+"description": "Immutable. Customer that the Policy belongs to. The value is in the format 'customers/{customerId}'. The `customerId` must begin with \"C\" To find your customer ID in Admin Console see https://support.google.com/a/answer/10070793.",
+"type": "string"
+},
+"name": {
+"description": "Output only. Identifier. The [resource name](https://cloud.google.com/apis/design/resource_names) of the Policy. Format: policies/{policy}.",
+"readOnly": true,
+"type": "string"
+},
+"policyQuery": {
+"$ref": "PolicyQuery",
+"description": "Required. The PolicyQuery the Setting applies to."
+},
+"setting": {
+"$ref": "Setting",
+"description": "Required. The Setting configured by this Policy."
+},
+"type": {
+"description": "Output only. The type of the policy.",
+"enum": [
+"POLICY_TYPE_UNSPECIFIED",
+"SYSTEM",
+"ADMIN"
+],
+"enumDescriptions": [
+"Unspecified policy type.",
+"Policy type denoting the system-configured policies.",
+"Policy type denoting the admin-configurable policies."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyQuery": {
+"description": "PolicyQuery",
+"id": "PolicyQuery",
+"properties": {
+"group": {
+"description": "Immutable. The group that the query applies to. This field is only set if there is a single value for group that satisfies all clauses of the query. If no group applies, this will be the empty string.",
+"type": "string"
+},
+"orgUnit": {
+"description": "Required. Immutable. Non-empty default. The OrgUnit the query applies to. This field is only set if there is a single value for org_unit that satisfies all clauses of the query.",
+"type": "string"
+},
+"query": {
+"description": "Immutable. The CEL query that defines which entities the Policy applies to (ex. a User entity). For details about CEL see https://opensource.google.com/projects/cel. The OrgUnits the Policy applies to are represented by a clause like so: entity.org_units.exists(org_unit, org_unit.org_unit_id == orgUnitId('{orgUnitId}')) The Group the Policy applies to are represented by a clause like so: entity.groups.exists(group, group.group_id == groupId('{groupId}')) The Licenses the Policy applies to are represented by a clause like so: entity.licenses.exists(license, license in ['/product/{productId}/sku/{skuId}']) The above clauses can be present in any combination, and used in conjunction with the &&, || and ! operators. The org_unit and group fields below are helper fields that contain the corresponding value(s) as the query to make the query easier to use.",
+"type": "string"
+},
+"sortOrder": {
+"description": "Output only. The decimal sort order of this PolicyQuery. The value is relative to all other policies with the same setting type for the customer. (There are no duplicates within this set).",
+"format": "double",
+"readOnly": true,
+"type": "number"
+}
+},
+"type": "object"
+},
+"PosixGroup": {
+"description": "POSIX Group definition to represent a group in a POSIX compliant system. Caution: POSIX groups are deprecated. As of September 26, 2024, you can no longer create new POSIX groups. For more information, see https://cloud.google.com/identity/docs/deprecations/posix-groups",
+"id": "PosixGroup",
+"properties": {
+"gid": {
+"description": "GID of the POSIX group.",
+"format": "uint64",
+"type": "string"
+},
+"name": {
+"description": "Name of the POSIX group.",
+"type": "string"
+},
+"systemId": {
+"description": "System identifier for which group name and gid apply to. If not specified it will default to empty value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RestrictionEvaluation": {
+"description": "The evaluated state of this restriction.",
+"id": "RestrictionEvaluation",
+"properties": {
+"state": {
+"description": "Output only. The current state of the restriction",
+"enum": [
+"STATE_UNSPECIFIED",
+"EVALUATING",
+"COMPLIANT",
+"FORWARD_COMPLIANT",
+"NON_COMPLIANT"
+],
+"enumDescriptions": [
+"Default. Should not be used.",
+"The restriction state is currently being evaluated.",
+"All transitive memberships are adhering to restriction.",
+"Some transitive memberships violate the restriction. No new violating memberships can be added.",
+"Some transitive memberships violate the restriction. New violating direct memberships will be denied while indirect memberships may be added."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"RestrictionEvaluations": {
+"description": "Evaluations of restrictions applied to parent group on this membership.",
+"id": "RestrictionEvaluations",
+"properties": {
+"memberRestrictionEvaluation": {
+"$ref": "MembershipRoleRestrictionEvaluation",
+"description": "Evaluation of the member restriction applied to this membership. Empty if the user lacks permission to view the restriction evaluation."
+}
+},
+"type": "object"
+},
+"RsaPublicKeyInfo": {
+"description": "Information of a RSA public key.",
+"id": "RsaPublicKeyInfo",
+"properties": {
+"keySize": {
+"description": "Key size in bits (size of the modulus).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"SamlIdpConfig": {
+"description": "SAML IDP (identity provider) configuration.",
+"id": "SamlIdpConfig",
+"properties": {
+"changePasswordUri": {
+"description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`.",
+"type": "string"
+},
+"entityId": {
+"description": "Required. The SAML **Entity ID** of the identity provider.",
+"type": "string"
+},
+"logoutRedirectUri": {
+"description": "The **Logout Redirect URL** (sign-out page URL) of the identity provider. When a user clicks the sign-out link on a Google page, they will be redirected to this URL. This is a pure redirect with no attached SAML `LogoutRequest` i.e. SAML single logout is not supported. Must use `HTTPS`.",
+"type": "string"
+},
+"singleSignOnServiceUri": {
+"description": "Required. The `SingleSignOnService` endpoint location (sign-in page URL) of the identity provider. This is the URL where the `AuthnRequest` will be sent. Must use `HTTPS`. Assumed to accept the `HTTP-Redirect` binding.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SamlSpConfig": {
+"description": "SAML SP (service provider) configuration.",
+"id": "SamlSpConfig",
+"properties": {
+"assertionConsumerServiceUri": {
+"description": "Output only. The SAML **Assertion Consumer Service (ACS) URL** to be used for the IDP-initiated login. Assumed to accept response messages via the `HTTP-POST` binding.",
+"readOnly": true,
+"type": "string"
+},
+"entityId": {
+"description": "Output only. The SAML **Entity ID** for this service provider.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"SamlSsoInfo": {
+"description": "Details that are applicable when `sso_mode` == `SAML_SSO`.",
+"id": "SamlSsoInfo",
+"properties": {
+"inboundSamlSsoProfile": {
+"description": "Required. Name of the `InboundSamlSsoProfile` to use. Must be of the form `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. ",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchDirectGroupsResponse": {
+"description": "The response message for MembershipsService.SearchDirectGroups.",
+"id": "SearchDirectGroupsResponse",
+"properties": {
+"memberships": {
+"description": "List of direct groups satisfying the query.",
+"items": {
+"$ref": "MembershipRelation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results available for listing.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchGroupsResponse": {
+"description": "The response message for GroupsService.SearchGroups.",
+"id": "SearchGroupsResponse",
+"properties": {
+"groups": {
+"description": "The `Group` resources that match the search query.",
+"items": {
+"$ref": "Group"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A continuation token to retrieve the next page of results, or empty if there are no more results available.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchTransitiveGroupsResponse": {
+"description": "The response message for MembershipsService.SearchTransitiveGroups.",
+"id": "SearchTransitiveGroupsResponse",
+"properties": {
+"memberships": {
+"description": "List of transitive groups satisfying the query.",
+"items": {
+"$ref": "GroupRelation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results available for listing.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchTransitiveMembershipsResponse": {
+"description": "The response message for MembershipsService.SearchTransitiveMemberships.",
+"id": "SearchTransitiveMembershipsResponse",
+"properties": {
+"memberships": {
+"description": "List of transitive memberships satisfying the query.",
+"items": {
+"$ref": "MemberRelation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SecuritySettings": {
+"description": "The definiion of security settings.",
+"id": "SecuritySettings",
+"properties": {
+"memberRestriction": {
+"$ref": "MemberRestriction",
+"description": "The Member Restriction value"
+},
+"name": {
+"description": "Output only. The resource name of the security settings. Shall be of the form `groups/{group_id}/securitySettings`.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"SendUserInvitationRequest": {
+"description": "A request to send email for inviting target user corresponding to the UserInvitation.",
+"id": "SendUserInvitationRequest",
+"properties": {},
+"type": "object"
+},
+"Setting": {
+"description": "Setting",
+"id": "Setting",
+"properties": {
+"type": {
+"description": "Required. Immutable. The type of the Setting. .",
+"type": "string"
+},
+"value": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Required. The value of the Setting.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"SignInBehavior": {
+"description": "Controls sign-in behavior.",
+"id": "SignInBehavior",
+"properties": {
+"redirectCondition": {
+"description": "When to redirect sign-ins to the IdP.",
+"enum": [
+"REDIRECT_CONDITION_UNSPECIFIED",
+"NEVER"
+],
+"enumDescriptions": [
+"Default and means \"always\"",
+"Sign-in flows where the user is prompted for their identity will not redirect to the IdP (so the user will most likely be prompted by Google for a password), but special flows like IdP-initiated SAML and sign-in following automatic redirection to the IdP by domain-specific service URLs will accept the IdP's assertion of the user's identity."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TransitiveMembershipRole": {
+"description": "Message representing the role of a TransitiveMembership.",
+"id": "TransitiveMembershipRole",
+"properties": {
+"role": {
+"description": "TransitiveMembershipRole in string format. Currently supported TransitiveMembershipRoles: `\"MEMBER\"`, `\"OWNER\"`, and `\"MANAGER\"`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpdateInboundSamlSsoProfileOperationMetadata": {
+"description": "LRO response metadata for InboundSamlSsoProfilesService.UpdateInboundSamlSsoProfile.",
+"id": "UpdateInboundSamlSsoProfileOperationMetadata",
+"properties": {
+"state": {
+"description": "State of this Operation Will be \"awaiting-multi-party-approval\" when the operation is deferred due to the target customer having enabled [Multi-party approval for sensitive actions](https://support.google.com/a/answer/13790448).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpdateInboundSsoAssignmentOperationMetadata": {
+"description": "LRO response metadata for InboundSsoAssignmentsService.UpdateInboundSsoAssignment.",
+"id": "UpdateInboundSsoAssignmentOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateMembershipRolesParams": {
+"description": "The details of an update to a `MembershipRole`.",
+"id": "UpdateMembershipRolesParams",
+"properties": {
+"fieldMask": {
+"description": "The fully-qualified names of fields to update. May only contain the field `expiry_detail.expire_time`.",
+"format": "google-fieldmask",
+"type": "string"
+},
+"membershipRole": {
+"$ref": "MembershipRole",
+"description": "The `MembershipRole`s to be updated. Only `MEMBER` `MembershipRoles` can currently be updated. May only contain a `MembershipRole` with `name` `MEMBER`."
+}
+},
+"type": "object"
+},
+"UserInvitation": {
+"description": "The `UserInvitation` resource represents an email that can be sent to an unmanaged user account inviting them to join the customer's Google Workspace or Cloud Identity account. An unmanaged account shares an email address domain with the Google Workspace or Cloud Identity account but is not managed by it yet. If the user accepts the `UserInvitation`, the user account will become managed.",
+"id": "UserInvitation",
+"properties": {
+"mailsSentCount": {
+"description": "Number of invitation emails sent to the user.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Shall be of the form `customers/{customer}/userinvitations/{user_email_address}`.",
+"type": "string"
+},
+"state": {
+"description": "State of the `UserInvitation`.",
+"enum": [
+"STATE_UNSPECIFIED",
+"NOT_YET_SENT",
+"INVITED",
+"ACCEPTED",
+"DECLINED"
+],
+"enumDescriptions": [
+"The default value. This value is used if the state is omitted.",
+"The `UserInvitation` has been created and is ready for sending as an email.",
+"The user has been invited by email.",
+"The user has accepted the invitation and is part of the organization.",
+"The user declined the invitation."
+],
+"type": "string"
+},
+"updateTime": {
+"description": "Time when the `UserInvitation` was last updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WipeDeviceRequest": {
+"description": "Request message for wiping all data on the device.",
+"id": "WipeDeviceRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"type": "string"
+},
+"removeResetLock": {
+"description": "Optional. Specifies if a user is able to factory reset a device after a Device Wipe. On iOS, this is called \"Activation Lock\", while on Android, this is known as \"Factory Reset Protection\". If true, this protection will be removed from the device, so that a user can successfully factory reset. If false, the setting is untouched on the device.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"WipeDeviceResponse": {
+"description": "Response message for wiping all data on the device.",
+"id": "WipeDeviceResponse",
+"properties": {
+"device": {
+"$ref": "Device",
+"description": "Resultant Device object for the action. Note that asset tags will not be returned in the device object."
+}
+},
+"type": "object"
+},
+"WipeDeviceUserRequest": {
+"description": "Request message for starting an account wipe on device.",
+"id": "WipeDeviceUserRequest",
+"properties": {
+"customer": {
+"description": "Optional. [Resource name](https://cloud.google.com/apis/design/resource_names) of the customer. If you're using this API for your own organization, use `customers/my_customer` If you're using this API to manage another organization, use `customers/{customer_id}`, where customer_id is the customer to whom the device belongs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WipeDeviceUserResponse": {
+"description": "Response message for wiping the user's account from the device.",
+"id": "WipeDeviceUserResponse",
+"properties": {
+"deviceUser": {
+"$ref": "DeviceUser",
+"description": "Resultant DeviceUser object for the action."
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Identity API",
+"version": "v1beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudprofiler.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudprofiler.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..67ec60c35bf8dc325059f552fd58649a4a896dfa
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudprofiler.v2.json
@@ -0,0 +1,411 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/monitoring": {
+"description": "View and write monitoring data for all of your Google and third-party Cloud and API projects"
+},
+"https://www.googleapis.com/auth/monitoring.write": {
+"description": "Publish metric data to your Google Cloud projects"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudprofiler.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Profiler",
+"description": "Manages continuous profiling information.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/profiler/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudprofiler:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudprofiler.mtls.googleapis.com/",
+"name": "cloudprofiler",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"profiles": {
+"methods": {
+"create": {
+"description": "CreateProfile creates a new profile resource in the online mode. _Direct use of this API is discouraged, please use a [supported profiler agent](https://cloud.google.com/profiler/docs/about-profiler#profiling_agent) instead for profile collection._ The server ensures that the new profiles are created at a constant rate per deployment, so the creation request may hang for some time until the next profile session is available. The request may fail with ABORTED error if the creation is not available within ~1m, the response will indicate the duration of the backoff the client should take before attempting creating a profile again. The backoff duration is returned in google.rpc.RetryInfo extension on the response status. To a gRPC client, the extension will be return as a binary-serialized proto in the trailing metadata item named \"google.rpc.retryinfo-bin\". ",
+"flatPath": "v2/projects/{projectsId}/profiles",
+"httpMethod": "POST",
+"id": "cloudprofiler.projects.profiles.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Parent project to create the profile in.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/profiles",
+"request": {
+"$ref": "CreateProfileRequest"
+},
+"response": {
+"$ref": "Profile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+},
+"createOffline": {
+"description": "CreateOfflineProfile creates a new profile resource in the offline mode. The client provides the profile to create along with the profile bytes, the server records it. _Direct use of this API is discouraged, please use a [supported profiler agent](https://cloud.google.com/profiler/docs/about-profiler#profiling_agent) instead for profile collection._",
+"flatPath": "v2/projects/{projectsId}/profiles:createOffline",
+"httpMethod": "POST",
+"id": "cloudprofiler.projects.profiles.createOffline",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Parent project to create the profile in.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/profiles:createOffline",
+"request": {
+"$ref": "Profile"
+},
+"response": {
+"$ref": "Profile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+},
+"list": {
+"description": "Lists profiles which have been collected so far and for which the caller has permission to view.",
+"flatPath": "v2/projects/{projectsId}/profiles",
+"httpMethod": "GET",
+"id": "cloudprofiler.projects.profiles.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return. Default page_size is 1000. Max limit is 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The token to continue pagination and get profiles from a particular page. When paginating, all other parameters provided to `ListProfiles` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of profiles. Format: projects/{user_project_id}",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/profiles",
+"response": {
+"$ref": "ListProfilesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+},
+"patch": {
+"description": "UpdateProfile updates the profile bytes and labels on the profile resource created in the online mode. Updating the bytes for profiles created in the offline mode is currently not supported: the profile content must be provided at the time of the profile creation. _Direct use of this API is discouraged, please use a [supported profiler agent](https://cloud.google.com/profiler/docs/about-profiler#profiling_agent) instead for profile collection._",
+"flatPath": "v2/projects/{projectsId}/profiles/{profilesId}",
+"httpMethod": "PATCH",
+"id": "cloudprofiler.projects.profiles.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Opaque, server-assigned, unique ID for this profile.",
+"location": "path",
+"pattern": "^projects/[^/]+/profiles/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask used to specify the fields to be overwritten. Currently only profile_bytes and labels fields are supported by UpdateProfile, so only those fields can be specified in the mask. When no mask is provided, all fields are overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "Profile"
+},
+"response": {
+"$ref": "Profile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20240624",
+"rootUrl": "https://cloudprofiler.googleapis.com/",
+"schemas": {
+"CreateProfileRequest": {
+"description": "CreateProfileRequest describes a profile resource online creation request. The deployment field must be populated. The profile_type specifies the list of profile types supported by the agent. The creation call will hang until a profile of one of these types needs to be collected. ",
+"id": "CreateProfileRequest",
+"properties": {
+"deployment": {
+"$ref": "Deployment",
+"description": "Deployment details."
+},
+"profileType": {
+"description": "One or more profile types that the agent is capable of providing.",
+"items": {
+"enum": [
+"PROFILE_TYPE_UNSPECIFIED",
+"CPU",
+"WALL",
+"HEAP",
+"THREADS",
+"CONTENTION",
+"PEAK_HEAP",
+"HEAP_ALLOC"
+],
+"enumDescriptions": [
+"Unspecified profile type.",
+"Thread CPU time sampling.",
+"Wallclock time sampling. More expensive as stops all threads.",
+"In-use heap profile. Represents a snapshot of the allocations that are live at the time of the profiling.",
+"Single-shot collection of all thread stacks.",
+"Synchronization contention profile.",
+"Peak heap profile.",
+"Heap allocation profile. It represents the aggregation of all allocations made over the duration of the profile. All allocations are included, including those that might have been freed by the end of the profiling interval. The profile is in particular useful for garbage collecting languages to understand which parts of the code create most of the garbage collection pressure to see if those can be optimized."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Deployment": {
+"description": "Deployment contains the deployment identification information.",
+"id": "Deployment",
+"properties": {
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels identify the deployment within the user universe and same target. Validation regex for label names: `^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$`. Value for an individual label must be <= 512 bytes, the total size of all label names and values must be <= 1024 bytes. Label named \"language\" can be used to record the programming language of the profiled deployment. The standard choices for the value include \"java\", \"go\", \"python\", \"ruby\", \"nodejs\", \"php\", \"dotnet\". For deployments running on Google Cloud Platform, \"zone\" or \"region\" label should be present describing the deployment location. An example of a zone is \"us-central1-a\", an example of a region is \"us-central1\" or \"us-central\".",
+"type": "object"
+},
+"projectId": {
+"description": "Project ID is the ID of a cloud project. Validation regex: `^a-z{4,61}[a-z0-9]$`.",
+"type": "string"
+},
+"target": {
+"description": "Target is the service name used to group related deployments: * Service name for App Engine Flex / Standard. * Cluster and container name for GKE. * User-specified string for direct Compute Engine profiling (e.g. Java). * Job name for Dataflow. Validation regex: `^[a-z0-9]([-a-z0-9_.]{0,253}[a-z0-9])?$`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListProfilesResponse": {
+"description": "ListProfileResponse contains the list of collected profiles for deployments in projects which the user has permissions to view.",
+"id": "ListProfilesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to receive the next page of results. This field maybe empty if there are no more profiles to fetch.",
+"type": "string"
+},
+"profiles": {
+"description": "List of profiles fetched.",
+"items": {
+"$ref": "Profile"
+},
+"type": "array"
+},
+"skippedProfiles": {
+"description": "Number of profiles that were skipped in the current page since they were not able to be fetched successfully. This should typically be zero. A non-zero value may indicate a transient failure, in which case if the number is too high for your use case, the call may be retried.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Profile": {
+"description": "Profile resource.",
+"id": "Profile",
+"properties": {
+"deployment": {
+"$ref": "Deployment",
+"description": "Deployment this profile corresponds to."
+},
+"duration": {
+"description": "Duration of the profiling session. Input (for the offline mode) or output (for the online mode). The field represents requested profiling duration. It may slightly differ from the effective profiling duration, which is recorded in the profile data, in case the profiling can't be stopped immediately (e.g. in case stopping the profiling is handled asynchronously).",
+"format": "google-duration",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Input only. Labels associated to this specific profile. These labels will get merged with the deployment labels for the final data set. See documentation on deployment labels for validation rules and limits.",
+"type": "object"
+},
+"name": {
+"description": "Output only. Opaque, server-assigned, unique ID for this profile.",
+"readOnly": true,
+"type": "string"
+},
+"profileBytes": {
+"description": "Input only. Profile bytes, as a gzip compressed serialized proto, the format is https://github.com/google/pprof/blob/master/proto/profile.proto.",
+"format": "byte",
+"type": "string"
+},
+"profileType": {
+"description": "Type of profile. For offline mode, this must be specified when creating the profile. For online mode it is assigned and returned by the server.",
+"enum": [
+"PROFILE_TYPE_UNSPECIFIED",
+"CPU",
+"WALL",
+"HEAP",
+"THREADS",
+"CONTENTION",
+"PEAK_HEAP",
+"HEAP_ALLOC"
+],
+"enumDescriptions": [
+"Unspecified profile type.",
+"Thread CPU time sampling.",
+"Wallclock time sampling. More expensive as stops all threads.",
+"In-use heap profile. Represents a snapshot of the allocations that are live at the time of the profiling.",
+"Single-shot collection of all thread stacks.",
+"Synchronization contention profile.",
+"Peak heap profile.",
+"Heap allocation profile. It represents the aggregation of all allocations made over the duration of the profile. All allocations are included, including those that might have been freed by the end of the profiling interval. The profile is in particular useful for garbage collecting languages to understand which parts of the code create most of the garbage collection pressure to see if those can be optimized."
+],
+"type": "string"
+},
+"startTime": {
+"description": "Output only. Start time for the profile. This output is only present in response from the ListProfiles method.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Profiler API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudresourcemanager.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudresourcemanager.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..e5bfc583ad7742fd87fd4f75246e0d30f59b2332
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudresourcemanager.v1.json
@@ -0,0 +1,2301 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/cloud-platform.read-only": {
+"description": "View your data across Google Cloud services and see the email address of your Google Account"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudresourcemanager.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Resource Manager",
+"description": "Creates, reads, and updates metadata for Google Cloud Platform resource containers.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/resource-manager",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudresourcemanager:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudresourcemanager.mtls.googleapis.com/",
+"name": "cloudresourcemanager",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"folders": {
+"methods": {
+"clearOrgPolicy": {
+"description": "Clears a `Policy` from a resource.",
+"flatPath": "v1/folders/{foldersId}:clearOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.clearOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource for the `Policy` to clear.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:clearOrgPolicy",
+"request": {
+"$ref": "ClearOrgPolicyRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getEffectiveOrgPolicy": {
+"description": "Gets the effective `Policy` on a resource. This is the result of merging `Policies` in the resource hierarchy. The returned `Policy` will not have an `etag`set because it is a computed `Policy` across multiple resources. Subtrees of Resource Manager resource hierarchy with 'under:' prefix will not be expanded.",
+"flatPath": "v1/folders/{foldersId}:getEffectiveOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.getEffectiveOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "The name of the resource to start computing the effective `Policy`.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getEffectiveOrgPolicy",
+"request": {
+"$ref": "GetEffectiveOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getOrgPolicy": {
+"description": "Gets a `Policy` on a resource. If no `Policy` is set on the resource, a `Policy` is returned with default values including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The `etag` value can be used with `SetOrgPolicy()` to create or update a `Policy` during read-modify-write.",
+"flatPath": "v1/folders/{foldersId}:getOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.getOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource the `Policy` is set on.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getOrgPolicy",
+"request": {
+"$ref": "GetOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"listAvailableOrgPolicyConstraints": {
+"description": "Lists `Constraints` that could be applied on the specified resource.",
+"flatPath": "v1/folders/{foldersId}:listAvailableOrgPolicyConstraints",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.listAvailableOrgPolicyConstraints",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource to list `Constraints` for.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:listAvailableOrgPolicyConstraints",
+"request": {
+"$ref": "ListAvailableOrgPolicyConstraintsRequest"
+},
+"response": {
+"$ref": "ListAvailableOrgPolicyConstraintsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"listOrgPolicies": {
+"description": "Lists all the `Policies` set for a particular resource.",
+"flatPath": "v1/folders/{foldersId}:listOrgPolicies",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.listOrgPolicies",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource to list Policies for.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:listOrgPolicies",
+"request": {
+"$ref": "ListOrgPoliciesRequest"
+},
+"response": {
+"$ref": "ListOrgPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"setOrgPolicy": {
+"description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for that `Constraint` on the resource if one does not exist. Not supplying an `etag` on the request `Policy` results in an unconditional write of the `Policy`.",
+"flatPath": "v1/folders/{foldersId}:setOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.setOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Resource name of the resource to attach the `Policy`.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setOrgPolicy",
+"request": {
+"$ref": "SetOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"liens": {
+"methods": {
+"create": {
+"description": "Create a Lien which applies to the resource denoted by the `parent` field. Callers of this method will require permission on the `parent` resource. For example, applying to `projects/1234` requires permission `resourcemanager.projects.updateLiens`. NOTE: Some resources may limit the number of Liens which may be applied.",
+"flatPath": "v1/liens",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.liens.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1/liens",
+"request": {
+"$ref": "Lien"
+},
+"response": {
+"$ref": "Lien"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"delete": {
+"description": "Delete a Lien by `name`. Callers of this method will require permission on the `parent` resource. For example, a Lien with a `parent` of `projects/1234` requires permission `resourcemanager.projects.updateLiens`.",
+"flatPath": "v1/liens/{liensId}",
+"httpMethod": "DELETE",
+"id": "cloudresourcemanager.liens.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name/identifier of the Lien to delete.",
+"location": "path",
+"pattern": "^liens/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"get": {
+"description": "Retrieve a Lien by `name`. Callers of this method will require permission on the `parent` resource. For example, a Lien with a `parent` of `projects/1234` requires permission `resourcemanager.projects.get`",
+"flatPath": "v1/liens/{liensId}",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.liens.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name/identifier of the Lien.",
+"location": "path",
+"pattern": "^liens/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Lien"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"list": {
+"description": "List all Liens applied to the `parent` resource. Callers of this method will require permission on the `parent` resource. For example, a Lien with a `parent` of `projects/1234` requires permission `resourcemanager.projects.get`.",
+"flatPath": "v1/liens",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.liens.list",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return. This is a suggestion for the server. The server can return fewer liens than requested. If unspecified, server picks an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The `next_page_token` value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the resource to list all attached Liens. For example, `projects/1234`. (google.api.field_policy).resource_type annotation is not set since the parent depends on the meta api implementation. This field could be a project or other sub project resources.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/liens",
+"response": {
+"$ref": "ListLiensResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+}
+}
+},
+"organizations": {
+"methods": {
+"clearOrgPolicy": {
+"description": "Clears a `Policy` from a resource.",
+"flatPath": "v1/organizations/{organizationsId}:clearOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.clearOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource for the `Policy` to clear.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:clearOrgPolicy",
+"request": {
+"$ref": "ClearOrgPolicyRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Fetches an Organization resource identified by the specified resource name.",
+"flatPath": "v1/organizations/{organizationsId}",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.organizations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the Organization to fetch. This is the organization's relative path in the API, formatted as \"organizations/[organizationId]\". For example, \"organizations/1234\".",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Organization"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getEffectiveOrgPolicy": {
+"description": "Gets the effective `Policy` on a resource. This is the result of merging `Policies` in the resource hierarchy. The returned `Policy` will not have an `etag`set because it is a computed `Policy` across multiple resources. Subtrees of Resource Manager resource hierarchy with 'under:' prefix will not be expanded.",
+"flatPath": "v1/organizations/{organizationsId}:getEffectiveOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.getEffectiveOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "The name of the resource to start computing the effective `Policy`.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getEffectiveOrgPolicy",
+"request": {
+"$ref": "GetEffectiveOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for an Organization resource. May be empty if no such policy or resource exists. The `resource` field should be the organization's resource name, e.g. \"organizations/123\". Authorization requires the Google IAM permission `resourcemanager.organizations.getIamPolicy` on the specified organization",
+"flatPath": "v1/organizations/{organizationsId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getOrgPolicy": {
+"description": "Gets a `Policy` on a resource. If no `Policy` is set on the resource, a `Policy` is returned with default values including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The `etag` value can be used with `SetOrgPolicy()` to create or update a `Policy` during read-modify-write.",
+"flatPath": "v1/organizations/{organizationsId}:getOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.getOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource the `Policy` is set on.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getOrgPolicy",
+"request": {
+"$ref": "GetOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"listAvailableOrgPolicyConstraints": {
+"description": "Lists `Constraints` that could be applied on the specified resource.",
+"flatPath": "v1/organizations/{organizationsId}:listAvailableOrgPolicyConstraints",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.listAvailableOrgPolicyConstraints",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource to list `Constraints` for.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:listAvailableOrgPolicyConstraints",
+"request": {
+"$ref": "ListAvailableOrgPolicyConstraintsRequest"
+},
+"response": {
+"$ref": "ListAvailableOrgPolicyConstraintsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"listOrgPolicies": {
+"description": "Lists all the `Policies` set for a particular resource.",
+"flatPath": "v1/organizations/{organizationsId}:listOrgPolicies",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.listOrgPolicies",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource to list Policies for.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:listOrgPolicies",
+"request": {
+"$ref": "ListOrgPoliciesRequest"
+},
+"response": {
+"$ref": "ListOrgPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"search": {
+"description": "Searches Organization resources that are visible to the user and satisfy the specified filter. This method returns Organizations in an unspecified order. New Organizations do not necessarily appear at the end of the results. Search will only return organizations on which the user has the permission `resourcemanager.organizations.get` or has super admin privileges.",
+"flatPath": "v1/organizations:search",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.search",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1/organizations:search",
+"request": {
+"$ref": "SearchOrganizationsRequest"
+},
+"response": {
+"$ref": "SearchOrganizationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on an Organization resource. Replaces any existing policy. The `resource` field should be the organization's resource name, e.g. \"organizations/123\". Authorization requires the Google IAM permission `resourcemanager.organizations.setIamPolicy` on the specified organization",
+"flatPath": "v1/organizations/{organizationsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setOrgPolicy": {
+"description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for that `Constraint` on the resource if one does not exist. Not supplying an `etag` on the request `Policy` results in an unconditional write of the `Policy`.",
+"flatPath": "v1/organizations/{organizationsId}:setOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.setOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Resource name of the resource to attach the `Policy`.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setOrgPolicy",
+"request": {
+"$ref": "SetOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified Organization. The `resource` field should be the organization's resource name, e.g. \"organizations/123\". There are no permissions required for making this API call.",
+"flatPath": "v1/organizations/{organizationsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.organizations.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+}
+}
+},
+"projects": {
+"methods": {
+"clearOrgPolicy": {
+"description": "Clears a `Policy` from a resource.",
+"flatPath": "v1/projects/{projectsId}:clearOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.clearOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource for the `Policy` to clear.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:clearOrgPolicy",
+"request": {
+"$ref": "ClearOrgPolicyRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Request that a new Project be created. The result is an Operation which can be used to track the creation process. This process usually takes a few seconds, but can sometimes take much longer. The tracking Operation is automatically deleted after a few hours, so there is no need to call DeleteOperation. Authorization requires the Google IAM permission `resourcemanager.projects.create` on the specified parent for the new project. The parent is identified by a specified ResourceId, which must include both an ID and a type, such as organization. This method does not associate the new project with a billing account. You can set or update the billing account associated with a project using the [`projects.updateBillingInfo`] (/billing/reference/rest/v1/projects/updateBillingInfo) method.",
+"flatPath": "v1/projects",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1/projects",
+"request": {
+"$ref": "Project"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Marks the Project identified by the specified `project_id` (for example, `my-project-123`) for deletion. This method will only affect the Project if it has a lifecycle state of ACTIVE. This method changes the Project's lifecycle state from ACTIVE to DELETE_REQUESTED. The deletion starts at an unspecified time, at which point the Project is no longer accessible. Until the deletion completes, you can check the lifecycle state checked by retrieving the Project with GetProject, and the Project remains visible to ListProjects. However, you cannot update the project. After the deletion completes, the Project is not retrievable by the GetProject and ListProjects methods. The caller must have delete permissions for this Project.",
+"flatPath": "v1/projects/{projectId}",
+"httpMethod": "DELETE",
+"id": "cloudresourcemanager.projects.delete",
+"parameterOrder": [
+"projectId"
+],
+"parameters": {
+"projectId": {
+"description": "The Project ID (for example, `foo-bar-123`). Required.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/projects/{projectId}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Retrieves the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.",
+"flatPath": "v1/projects/{projectId}",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.projects.get",
+"parameterOrder": [
+"projectId"
+],
+"parameters": {
+"projectId": {
+"description": "Required. The Project ID (for example, `my-project-123`).",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/projects/{projectId}",
+"response": {
+"$ref": "Project"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getAncestry": {
+"description": "Gets a list of ancestors in the resource hierarchy for the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have read permissions for this Project.",
+"flatPath": "v1/projects/{projectId}:getAncestry",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.getAncestry",
+"parameterOrder": [
+"projectId"
+],
+"parameters": {
+"projectId": {
+"description": "Required. The Project ID (for example, `my-project-123`).",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/projects/{projectId}:getAncestry",
+"request": {
+"$ref": "GetAncestryRequest"
+},
+"response": {
+"$ref": "GetAncestryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getEffectiveOrgPolicy": {
+"description": "Gets the effective `Policy` on a resource. This is the result of merging `Policies` in the resource hierarchy. The returned `Policy` will not have an `etag`set because it is a computed `Policy` across multiple resources. Subtrees of Resource Manager resource hierarchy with 'under:' prefix will not be expanded.",
+"flatPath": "v1/projects/{projectsId}:getEffectiveOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.getEffectiveOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "The name of the resource to start computing the effective `Policy`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getEffectiveOrgPolicy",
+"request": {
+"$ref": "GetEffectiveOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getIamPolicy": {
+"description": "Returns the IAM access control policy for the specified Project. Permission is denied if the policy or the resource does not exist. Authorization requires the Google IAM permission `resourcemanager.projects.getIamPolicy` on the project. For additional information about `resource` (e.g. my-project-id) structure and identification, see [Resource Names](https://cloud.google.com/apis/design/resource_names).",
+"flatPath": "v1/projects/{resource}:getIamPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/projects/{resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getOrgPolicy": {
+"description": "Gets a `Policy` on a resource. If no `Policy` is set on the resource, a `Policy` is returned with default values including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The `etag` value can be used with `SetOrgPolicy()` to create or update a `Policy` during read-modify-write.",
+"flatPath": "v1/projects/{projectsId}:getOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.getOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource the `Policy` is set on.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getOrgPolicy",
+"request": {
+"$ref": "GetOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"list": {
+"description": "Lists Projects that the caller has the `resourcemanager.projects.get` permission on and satisfy the specified filter. This method returns Projects in an unspecified order. This method is eventually consistent with project mutations; this means that a newly created project may not appear in the results or recent updates to an existing project may not be reflected in the results. To retrieve the latest state of a project, use the GetProject method. NOTE: If the request filter contains a `parent.type` and `parent.id` and the caller has the `resourcemanager.projects.list` permission on the parent, the results will be drawn from an alternate index which provides more consistent results. In future versions of this API, this List method will be split into List and Search to properly capture the behavioral difference.",
+"flatPath": "v1/projects",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.projects.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "Optional. An expression for filtering the results of the request. Filter rules are case insensitive. If multiple fields are included in a filter query, the query will return results that match any of the fields. Some eligible fields for filtering are: + `name` + `id` + `labels.` (where *key* is the name of a label) + `parent.type` + `parent.id` + `lifecycleState` Some examples of filter queries: | Query | Description | |------------------|-----------------------------------------------------| | name:how* | The project's name starts with \"how\". | | name:Howl | The project's name is `Howl` or `howl`. | | name:HOWL | Equivalent to above. | | NAME:howl | Equivalent to above. | | labels.color:* | The project has the label `color`. | | labels.color:red | The project's label `color` has the value `red`. | | labels.color:red labels.size:big | The project's label `color` has the value `red` or its label `size` has the value `big`. | | lifecycleState:DELETE_REQUESTED | Only show projects that are pending deletion.| If no filter is specified, the call will return projects for which the user has the `resourcemanager.projects.get` permission. NOTE: To perform a by-parent query (eg., what projects are directly in a Folder), the caller must have the `resourcemanager.projects.list` permission on the parent and the filter must contain both a `parent.type` and a `parent.id` restriction (example: \"parent.type:folder parent.id:123\"). In this case an alternate search index is used which provides more consistent results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of Projects to return in the response. The server can return fewer Projects than requested. If unspecified, server picks an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A pagination token returned from a previous call to ListProjects that indicates from where listing should continue.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/projects",
+"response": {
+"$ref": "ListProjectsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"listAvailableOrgPolicyConstraints": {
+"description": "Lists `Constraints` that could be applied on the specified resource.",
+"flatPath": "v1/projects/{projectsId}:listAvailableOrgPolicyConstraints",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.listAvailableOrgPolicyConstraints",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource to list `Constraints` for.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:listAvailableOrgPolicyConstraints",
+"request": {
+"$ref": "ListAvailableOrgPolicyConstraintsRequest"
+},
+"response": {
+"$ref": "ListAvailableOrgPolicyConstraintsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"listOrgPolicies": {
+"description": "Lists all the `Policies` set for a particular resource.",
+"flatPath": "v1/projects/{projectsId}:listOrgPolicies",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.listOrgPolicies",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Name of the resource to list Policies for.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:listOrgPolicies",
+"request": {
+"$ref": "ListOrgPoliciesRequest"
+},
+"response": {
+"$ref": "ListOrgPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"setIamPolicy": {
+"description": "Sets the IAM access control policy for the specified Project. CAUTION: This method will replace the existing policy, and cannot be used to append additional IAM settings. NOTE: Removing service accounts from policies or changing their roles can render services completely inoperable. It is important to understand how the service account is being used before removing or updating its roles. For additional information about `resource` (e.g. my-project-id) structure and identification, see [Resource Names](https://cloud.google.com/apis/design/resource_names). The following constraints apply when using `setIamPolicy()`: + Project does not support `allUsers` and `allAuthenticatedUsers` as `members` in a `Binding` of a `Policy`. + The owner role can be granted to a `user`, `serviceAccount`, or a group that is part of an organization. For example, group@myownpersonaldomain.com could be added as an owner to a project in the myownpersonaldomain.com organization, but not the examplepetstore.com organization. + Service accounts can be made owners of a project directly without any restrictions. However, to be added as an owner, a user must be invited via Cloud Platform console and must accept the invitation. + A user cannot be granted the owner role using `setIamPolicy()`. The user must be granted the owner role using the Cloud Platform Console and must explicitly accept the invitation. + You can only grant ownership of a project to a member by using the Google Cloud console. Inviting a member will deliver an invitation email that they must accept. An invitation email is not generated if you are granting a role other than owner, or if both the member you are inviting and the project are part of your organization. + If the project is not part of an organization, there must be at least one owner who has accepted the Terms of Service (ToS) agreement in the policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner from the policy will fail. This restriction also applies to legacy projects that no longer have owners who have accepted the ToS. Edits to IAM policies will be rejected until the lack of a ToS-accepting owner is rectified. If the project is part of an organization, you can remove all owners, potentially making the organization inaccessible. Authorization requires the Google IAM permission `resourcemanager.projects.setIamPolicy` on the project",
+"flatPath": "v1/projects/{resource}:setIamPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/projects/{resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setOrgPolicy": {
+"description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for that `Constraint` on the resource if one does not exist. Not supplying an `etag` on the request `Policy` results in an unconditional write of the `Policy`.",
+"flatPath": "v1/projects/{projectsId}:setOrgPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.setOrgPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Resource name of the resource to attach the `Policy`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setOrgPolicy",
+"request": {
+"$ref": "SetOrgPolicyRequest"
+},
+"response": {
+"$ref": "OrgPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified Project. For additional information about `resource` (e.g. my-project-id) structure and identification, see [Resource Names](https://cloud.google.com/apis/design/resource_names). There are no permissions required for making this API call.",
+"flatPath": "v1/projects/{resource}:testIamPermissions",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/projects/{resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"undelete": {
+"description": "Restores the Project identified by the specified `project_id` (for example, `my-project-123`). You can only use this method for a Project that has a lifecycle state of DELETE_REQUESTED. After deletion starts, the Project cannot be restored. The caller must have undelete permissions for this Project.",
+"flatPath": "v1/projects/{projectId}:undelete",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.projects.undelete",
+"parameterOrder": [
+"projectId"
+],
+"parameters": {
+"projectId": {
+"description": "Required. The project ID (for example, `foo-bar-123`).",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/projects/{projectId}:undelete",
+"request": {
+"$ref": "UndeleteProjectRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"update": {
+"description": "Updates the attributes of the Project identified by the specified `project_id` (for example, `my-project-123`). The caller must have modify permissions for this Project.",
+"flatPath": "v1/projects/{projectId}",
+"httpMethod": "PUT",
+"id": "cloudresourcemanager.projects.update",
+"parameterOrder": [
+"projectId"
+],
+"parameters": {
+"projectId": {
+"description": "The project ID (for example, `my-project-123`). Required.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/projects/{projectId}",
+"request": {
+"$ref": "Project"
+},
+"response": {
+"$ref": "Project"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+},
+"revision": "20240707",
+"rootUrl": "https://cloudresourcemanager.googleapis.com/",
+"schemas": {
+"Ancestor": {
+"description": "Identifying information for a single ancestor of a project.",
+"id": "Ancestor",
+"properties": {
+"resourceId": {
+"$ref": "ResourceId",
+"description": "Resource id of the ancestor."
+}
+},
+"type": "object"
+},
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BooleanConstraint": {
+"description": "A `Constraint` that is either enforced or not. For example a constraint `constraints/compute.disableSerialPortAccess`. If it is enforced on a VM instance, serial port connections will not be opened to that instance.",
+"id": "BooleanConstraint",
+"properties": {},
+"type": "object"
+},
+"BooleanPolicy": {
+"description": "Used in `policy_type` to specify how `boolean_policy` will behave at this resource.",
+"id": "BooleanPolicy",
+"properties": {
+"enforced": {
+"description": "If `true`, then the `Policy` is enforced. If `false`, then any configuration is acceptable. Suppose you have a `Constraint` `constraints/compute.disableSerialPortAccess` with `constraint_default` set to `ALLOW`. A `Policy` for that `Constraint` exhibits the following behavior: - If the `Policy` at this resource has enforced set to `false`, serial port connection attempts will be allowed. - If the `Policy` at this resource has enforced set to `true`, serial port connection attempts will be refused. - If the `Policy` at this resource is `RestoreDefault`, serial port connection attempts will be allowed. - If no `Policy` is set at this resource or anywhere higher in the resource hierarchy, serial port connection attempts will be allowed. - If no `Policy` is set at this resource, but one exists higher in the resource hierarchy, the behavior is as if the`Policy` were set at this resource. The following examples demonstrate the different possible layerings: Example 1 (nearest `Constraint` wins): `organizations/foo` has a `Policy` with: {enforced: false} `projects/bar` has no `Policy` set. The constraint at `projects/bar` and `organizations/foo` will not be enforced. Example 2 (enforcement gets replaced): `organizations/foo` has a `Policy` with: {enforced: false} `projects/bar` has a `Policy` with: {enforced: true} The constraint at `organizations/foo` is not enforced. The constraint at `projects/bar` is enforced. Example 3 (RestoreDefault): `organizations/foo` has a `Policy` with: {enforced: true} `projects/bar` has a `Policy` with: {RestoreDefault: {}} The constraint at `organizations/foo` is enforced. The constraint at `projects/bar` is not enforced, because `constraint_default` for the `Constraint` is `ALLOW`.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ClearOrgPolicyRequest": {
+"description": "The request sent to the ClearOrgPolicy method.",
+"id": "ClearOrgPolicyRequest",
+"properties": {
+"constraint": {
+"description": "Name of the `Constraint` of the `Policy` to clear.",
+"type": "string"
+},
+"etag": {
+"description": "The current version, for concurrency control. Not sending an `etag` will cause the `Policy` to be cleared blindly.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudresourcemanagerGoogleCloudResourcemanagerV2alpha1FolderOperation": {
+"description": "Metadata describing a long running folder operation",
+"id": "CloudresourcemanagerGoogleCloudResourcemanagerV2alpha1FolderOperation",
+"properties": {
+"destinationParent": {
+"description": "The resource name of the folder or organization we are either creating the folder under or moving the folder to.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"operationType": {
+"description": "The type of this operation.",
+"enum": [
+"OPERATION_TYPE_UNSPECIFIED",
+"CREATE",
+"MOVE"
+],
+"enumDescriptions": [
+"Operation type not specified.",
+"A create folder operation.",
+"A move folder operation."
+],
+"type": "string"
+},
+"sourceParent": {
+"description": "The resource name of the folder's parent. Only applicable when the operation_type is MOVE.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudresourcemanagerGoogleCloudResourcemanagerV2beta1FolderOperation": {
+"description": "Metadata describing a long running folder operation",
+"id": "CloudresourcemanagerGoogleCloudResourcemanagerV2beta1FolderOperation",
+"properties": {
+"destinationParent": {
+"description": "The resource name of the folder or organization we are either creating the folder under or moving the folder to.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"operationType": {
+"description": "The type of this operation.",
+"enum": [
+"OPERATION_TYPE_UNSPECIFIED",
+"CREATE",
+"MOVE"
+],
+"enumDescriptions": [
+"Operation type not specified.",
+"A create folder operation.",
+"A move folder operation."
+],
+"type": "string"
+},
+"sourceParent": {
+"description": "The resource name of the folder's parent. Only applicable when the operation_type is MOVE.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Constraint": {
+"description": "A `Constraint` describes a way in which a resource's configuration can be restricted. For example, it controls which cloud services can be activated across an organization, or whether a Compute Engine instance can have serial port connections established. `Constraints` can be configured by the organization's policy administrator to fit the needs of the organzation by setting Policies for `Constraints` at different locations in the organization's resource hierarchy. Policies are inherited down the resource hierarchy from higher levels, but can also be overridden. For details about the inheritance rules please read about [Policies](/resource-manager/reference/rest/v1/Policy). `Constraints` have a default behavior determined by the `constraint_default` field, which is the enforcement behavior that is used in the absence of a `Policy` being defined or inherited for the resource in question.",
+"id": "Constraint",
+"properties": {
+"booleanConstraint": {
+"$ref": "BooleanConstraint",
+"description": "Defines this constraint as being a BooleanConstraint."
+},
+"constraintDefault": {
+"description": "The evaluation behavior of this constraint in the absence of 'Policy'.",
+"enum": [
+"CONSTRAINT_DEFAULT_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"This is only used for distinguishing unset values and should never be used.",
+"Indicate that all values are allowed for list constraints. Indicate that enforcement is off for boolean constraints.",
+"Indicate that all values are denied for list constraints. Indicate that enforcement is on for boolean constraints."
+],
+"type": "string"
+},
+"description": {
+"description": "Detailed description of what this `Constraint` controls as well as how and where it is enforced. Mutable.",
+"type": "string"
+},
+"displayName": {
+"description": "The human readable name. Mutable.",
+"type": "string"
+},
+"listConstraint": {
+"$ref": "ListConstraint",
+"description": "Defines this constraint as being a ListConstraint."
+},
+"name": {
+"description": "Immutable value, required to globally be unique. For example, `constraints/serviceuser.services`",
+"type": "string"
+},
+"version": {
+"description": "Version of the `Constraint`. Default version is 0;",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"CreateFolderMetadata": {
+"description": "Metadata pertaining to the Folder creation process.",
+"id": "CreateFolderMetadata",
+"properties": {
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"parent": {
+"description": "The resource name of the folder or organization we are creating the folder under.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by CreateProject. It provides insight for when significant phases of Project creation have completed.",
+"id": "CreateProjectMetadata",
+"properties": {
+"createTime": {
+"description": "Creation time of the project creation workflow.",
+"format": "google-datetime",
+"type": "string"
+},
+"gettable": {
+"description": "True if the project can be retrieved using `GetProject`. No other operations on the project are guaranteed to work until the project creation is complete.",
+"type": "boolean"
+},
+"ready": {
+"description": "True if the project creation process is complete.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"CreateTagBindingMetadata": {
+"description": "Runtime operation information for creating a TagValue.",
+"id": "CreateTagBindingMetadata",
+"properties": {},
+"type": "object"
+},
+"CreateTagKeyMetadata": {
+"description": "Runtime operation information for creating a TagKey.",
+"id": "CreateTagKeyMetadata",
+"properties": {},
+"type": "object"
+},
+"CreateTagValueMetadata": {
+"description": "Runtime operation information for creating a TagValue.",
+"id": "CreateTagValueMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteFolderMetadata": {
+"description": "A status object which is used as the `metadata` field for the `Operation` returned by `DeleteFolder`.",
+"id": "DeleteFolderMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteOrganizationMetadata": {
+"description": "A status object which is used as the `metadata` field for the operation returned by DeleteOrganization.",
+"id": "DeleteOrganizationMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by `DeleteProject`.",
+"id": "DeleteProjectMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteTagBindingMetadata": {
+"description": "Runtime operation information for deleting a TagBinding.",
+"id": "DeleteTagBindingMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteTagKeyMetadata": {
+"description": "Runtime operation information for deleting a TagKey.",
+"id": "DeleteTagKeyMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteTagValueMetadata": {
+"description": "Runtime operation information for deleting a TagValue.",
+"id": "DeleteTagValueMetadata",
+"properties": {},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FolderOperation": {
+"description": "Metadata describing a long running folder operation",
+"id": "FolderOperation",
+"properties": {
+"destinationParent": {
+"description": "The resource name of the folder or organization we are either creating the folder under or moving the folder to.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"operationType": {
+"description": "The type of this operation.",
+"enum": [
+"OPERATION_TYPE_UNSPECIFIED",
+"CREATE",
+"MOVE"
+],
+"enumDescriptions": [
+"Operation type not specified.",
+"A create folder operation.",
+"A move folder operation."
+],
+"type": "string"
+},
+"sourceParent": {
+"description": "The resource name of the folder's parent. Only applicable when the operation_type is MOVE.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FolderOperationError": {
+"description": "A classification of the Folder Operation error.",
+"id": "FolderOperationError",
+"properties": {
+"errorMessageId": {
+"description": "The type of operation error experienced.",
+"enum": [
+"ERROR_TYPE_UNSPECIFIED",
+"ACTIVE_FOLDER_HEIGHT_VIOLATION",
+"MAX_CHILD_FOLDERS_VIOLATION",
+"FOLDER_NAME_UNIQUENESS_VIOLATION",
+"RESOURCE_DELETED_VIOLATION",
+"PARENT_DELETED_VIOLATION",
+"CYCLE_INTRODUCED_VIOLATION",
+"FOLDER_BEING_MOVED_VIOLATION",
+"FOLDER_TO_DELETE_NON_EMPTY_VIOLATION",
+"DELETED_FOLDER_HEIGHT_VIOLATION"
+],
+"enumDescriptions": [
+"The error type was unrecognized or unspecified.",
+"The attempted action would violate the max folder depth constraint.",
+"The attempted action would violate the max child folders constraint.",
+"The attempted action would violate the locally-unique folder display_name constraint.",
+"The resource being moved has been deleted.",
+"The resource a folder was being added to has been deleted.",
+"The attempted action would introduce cycle in resource path.",
+"The attempted action would move a folder that is already being moved.",
+"The folder the caller is trying to delete contains active resources.",
+"The attempted action would violate the max deleted folder depth constraint."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetAncestryRequest": {
+"description": "The request sent to the GetAncestry method.",
+"id": "GetAncestryRequest",
+"properties": {},
+"type": "object"
+},
+"GetAncestryResponse": {
+"description": "Response from the projects.getAncestry method.",
+"id": "GetAncestryResponse",
+"properties": {
+"ancestor": {
+"description": "Ancestors are ordered from bottom to top of the resource hierarchy. The first ancestor is the project itself, followed by the project's parent, etc..",
+"items": {
+"$ref": "Ancestor"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GetEffectiveOrgPolicyRequest": {
+"description": "The request sent to the GetEffectiveOrgPolicy method.",
+"id": "GetEffectiveOrgPolicyRequest",
+"properties": {
+"constraint": {
+"description": "The name of the `Constraint` to compute the effective `Policy`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetIamPolicyRequest": {
+"description": "Request message for `GetIamPolicy` method.",
+"id": "GetIamPolicyRequest",
+"properties": {
+"options": {
+"$ref": "GetPolicyOptions",
+"description": "OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`."
+}
+},
+"type": "object"
+},
+"GetOrgPolicyRequest": {
+"description": "The request sent to the GetOrgPolicy method.",
+"id": "GetOrgPolicyRequest",
+"properties": {
+"constraint": {
+"description": "Name of the `Constraint` to get the `Policy`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetPolicyOptions": {
+"description": "Encapsulates settings provided to GetIamPolicy.",
+"id": "GetPolicyOptions",
+"properties": {
+"requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Lien": {
+"description": "A Lien represents an encumbrance on the actions that can be performed on a resource.",
+"id": "Lien",
+"properties": {
+"createTime": {
+"description": "The creation time of this Lien.",
+"format": "google-datetime",
+"type": "string"
+},
+"name": {
+"description": "A system-generated unique identifier for this Lien. Example: `liens/1234abcd`",
+"type": "string"
+},
+"origin": {
+"description": "A stable, user-visible/meaningful string identifying the origin of the Lien, intended to be inspected programmatically. Maximum length of 200 characters. Example: 'compute.googleapis.com'",
+"type": "string"
+},
+"parent": {
+"description": "A reference to the resource this Lien is attached to. The server will validate the parent against those for which Liens are supported. Example: `projects/1234`",
+"type": "string"
+},
+"reason": {
+"description": "Concise user-visible strings indicating why an action cannot be performed on a resource. Maximum length of 200 characters. Example: 'Holds production API key'",
+"type": "string"
+},
+"restrictions": {
+"description": "The types of operations which should be blocked as a result of this Lien. Each value should correspond to an IAM permission. The server will validate the permissions against those for which Liens are supported. An empty list is meaningless and will be rejected. Example: ['resourcemanager.projects.delete']",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListAvailableOrgPolicyConstraintsRequest": {
+"description": "The request sent to the `ListAvailableOrgPolicyConstraints` method on the project, folder, or organization.",
+"id": "ListAvailableOrgPolicyConstraintsRequest",
+"properties": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListAvailableOrgPolicyConstraintsResponse": {
+"description": "The response returned from the `ListAvailableOrgPolicyConstraints` method. Returns all `Constraints` that could be set at this level of the hierarchy (contrast with the response from `ListPolicies`, which returns all policies which are set).",
+"id": "ListAvailableOrgPolicyConstraintsResponse",
+"properties": {
+"constraints": {
+"description": "The collection of constraints that are settable on the request resource.",
+"items": {
+"$ref": "Constraint"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Page token used to retrieve the next page. This is currently not used.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListConstraint": {
+"description": "A `Constraint` that allows or disallows a list of string values, which are configured by an Organization's policy administrator with a `Policy`.",
+"id": "ListConstraint",
+"properties": {
+"suggestedValue": {
+"description": "Optional. The Google Cloud Console will try to default to a configuration that matches the value specified in this `Constraint`.",
+"type": "string"
+},
+"supportsUnder": {
+"description": "Indicates whether subtrees of Cloud Resource Manager resource hierarchy can be used in `Policy.allowed_values` and `Policy.denied_values`. For example, `\"under:folders/123\"` would match any resource under the 'folders/123' folder.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ListLiensResponse": {
+"description": "The response message for Liens.ListLiens.",
+"id": "ListLiensResponse",
+"properties": {
+"liens": {
+"description": "A list of Liens.",
+"items": {
+"$ref": "Lien"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOrgPoliciesRequest": {
+"description": "The request sent to the ListOrgPolicies method.",
+"id": "ListOrgPoliciesRequest",
+"properties": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOrgPoliciesResponse": {
+"description": "The response returned from the `ListOrgPolicies` method. It will be empty if no `Policies` are set on the resource.",
+"id": "ListOrgPoliciesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Page token used to retrieve the next page. This is currently not used, but the server may at any point start supplying a valid token.",
+"type": "string"
+},
+"policies": {
+"description": "The `Policies` that are set on the resource. It will be empty if no `Policies` are set.",
+"items": {
+"$ref": "OrgPolicy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListPolicy": {
+"description": "Used in `policy_type` to specify how `list_policy` behaves at this resource. `ListPolicy` can define specific values and subtrees of Cloud Resource Manager resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed or denied by setting the `allowed_values` and `denied_values` fields. This is achieved by using the `under:` and optional `is:` prefixes. The `under:` prefix is used to denote resource subtree values. The `is:` prefix is used to denote specific values, and is required only if the value contains a \":\". Values prefixed with \"is:\" are treated the same as values with no prefix. Ancestry subtrees must be in one of the following formats: - \"projects/\", e.g. \"projects/tokyo-rain-123\" - \"folders/\", e.g. \"folders/1234\" - \"organizations/\", e.g. \"organizations/1234\" The `supports_under` field of the associated `Constraint` defines whether ancestry prefixes can be used. You can set `allowed_values` and `denied_values` in the same `Policy` if `all_values` is `ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all values. If `all_values` is set to either `ALLOW` or `DENY`, `allowed_values` and `denied_values` must be unset.",
+"id": "ListPolicy",
+"properties": {
+"allValues": {
+"description": "The policy all_values state.",
+"enum": [
+"ALL_VALUES_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"Indicates that allowed_values or denied_values must be set.",
+"A policy with this set allows all values.",
+"A policy with this set denies all values."
+],
+"type": "string"
+},
+"allowedValues": {
+"description": "List of values allowed at this resource. Can only be set if `all_values` is set to `ALL_VALUES_UNSPECIFIED`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"deniedValues": {
+"description": "List of values denied at this resource. Can only be set if `all_values` is set to `ALL_VALUES_UNSPECIFIED`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"inheritFromParent": {
+"description": "Determines the inheritance behavior for this `Policy`. By default, a `ListPolicy` set at a resource supersedes any `Policy` set anywhere up the resource hierarchy. However, if `inherit_from_parent` is set to `true`, then the values from the effective `Policy` of the parent resource are inherited, meaning the values set in this `Policy` are added to the values inherited up the hierarchy. Setting `Policy` hierarchies that inherit both allowed values and denied values isn't recommended in most circumstances to keep the configuration simple and understandable. However, it is possible to set a `Policy` with `allowed_values` set that inherits a `Policy` with `denied_values` set. In this case, the values that are allowed must be in `allowed_values` and not present in `denied_values`. For example, suppose you have a `Constraint` `constraints/serviceuser.services`, which has a `constraint_type` of `list_constraint`, and with `constraint_default` set to `ALLOW`. Suppose that at the Organization level, a `Policy` is applied that restricts the allowed API activations to {`E1`, `E2`}. Then, if a `Policy` is applied to a project below the Organization that has `inherit_from_parent` set to `false` and field all_values set to DENY, then an attempt to activate any API will be denied. The following examples demonstrate different possible layerings for `projects/bar` parented by `organizations/foo`: Example 1 (no inherited values): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values:\"E2\"} `projects/bar` has `inherit_from_parent` `false` and values: {allowed_values: \"E3\" allowed_values: \"E4\"} The accepted values at `organizations/foo` are `E1`, `E2`. The accepted values at `projects/bar` are `E3`, and `E4`. Example 2 (inherited values): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values:\"E2\"} `projects/bar` has a `Policy` with values: {value: \"E3\" value: \"E4\" inherit_from_parent: true} The accepted values at `organizations/foo` are `E1`, `E2`. The accepted values at `projects/bar` are `E1`, `E2`, `E3`, and `E4`. Example 3 (inheriting both allowed and denied values): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values: \"E2\"} `projects/bar` has a `Policy` with: {denied_values: \"E1\"} The accepted values at `organizations/foo` are `E1`, `E2`. The value accepted at `projects/bar` is `E2`. Example 4 (RestoreDefault): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values:\"E2\"} `projects/bar` has a `Policy` with values: {RestoreDefault: {}} The accepted values at `organizations/foo` are `E1`, `E2`. The accepted values at `projects/bar` are either all or none depending on the value of `constraint_default` (if `ALLOW`, all; if `DENY`, none). Example 5 (no policy inherits parent policy): `organizations/foo` has no `Policy` set. `projects/bar` has no `Policy` set. The accepted values at both levels are either all or none depending on the value of `constraint_default` (if `ALLOW`, all; if `DENY`, none). Example 6 (ListConstraint allowing all): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values: \"E2\"} `projects/bar` has a `Policy` with: {all: ALLOW} The accepted values at `organizations/foo` are `E1`, E2`. Any value is accepted at `projects/bar`. Example 7 (ListConstraint allowing none): `organizations/foo` has a `Policy` with values: {allowed_values: \"E1\" allowed_values: \"E2\"} `projects/bar` has a `Policy` with: {all: DENY} The accepted values at `organizations/foo` are `E1`, E2`. No value is accepted at `projects/bar`. Example 10 (allowed and denied subtrees of Resource Manager hierarchy): Given the following resource hierarchy O1->{F1, F2}; F1->{P1}; F2->{P2, P3}, `organizations/foo` has a `Policy` with values: {allowed_values: \"under:organizations/O1\"} `projects/bar` has a `Policy` with: {allowed_values: \"under:projects/P3\"} {denied_values: \"under:folders/F2\"} The accepted values at `organizations/foo` are `organizations/O1`, `folders/F1`, `folders/F2`, `projects/P1`, `projects/P2`, `projects/P3`. The accepted values at `projects/bar` are `organizations/O1`, `folders/F1`, `projects/P1`.",
+"type": "boolean"
+},
+"suggestedValue": {
+"description": "Optional. The Google Cloud Console will try to default to a configuration that matches the value specified in this `Policy`. If `suggested_value` is not set, it will inherit the value specified higher in the hierarchy, unless `inherit_from_parent` is `false`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListProjectsResponse": {
+"description": "A page of the response received from the ListProjects method. A paginated response where more pages are available has `next_page_token` set. This token can be used in a subsequent request to retrieve the next request page.",
+"id": "ListProjectsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Pagination token. If the result set is too large to fit in a single response, this token is returned. It encodes the position of the current result cursor. Feeding this value into a new list request with the `page_token` parameter gives the next page of the results. When `next_page_token` is not filled in, there is no next page and the list returned is the last page in the result set. Pagination tokens have a limited lifetime.",
+"type": "string"
+},
+"projects": {
+"description": "The list of Projects that matched the list filter. This list can be paginated.",
+"items": {
+"$ref": "Project"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MoveFolderMetadata": {
+"description": "Metadata pertaining to the folder move process.",
+"id": "MoveFolderMetadata",
+"properties": {
+"destinationParent": {
+"description": "The resource name of the folder or organization to move the folder to.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"sourceParent": {
+"description": "The resource name of the folder's parent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MoveProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by MoveProject.",
+"id": "MoveProjectMetadata",
+"properties": {},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OrgPolicy": {
+"description": "Defines a Cloud Organization `Policy` which is used to specify `Constraints` for configurations of Cloud Platform resources.",
+"id": "OrgPolicy",
+"properties": {
+"booleanPolicy": {
+"$ref": "BooleanPolicy",
+"description": "For boolean `Constraints`, whether to enforce the `Constraint` or not."
+},
+"constraint": {
+"description": "The name of the `Constraint` the `Policy` is configuring, for example, `constraints/serviceuser.services`. A [list of available constraints](/resource-manager/docs/organization-policy/org-policy-constraints) is available. Immutable after creation.",
+"type": "string"
+},
+"etag": {
+"description": "An opaque tag indicating the current version of the `Policy`, used for concurrency control. When the `Policy` is returned from either a `GetPolicy` or a `ListOrgPolicy` request, this `etag` indicates the version of the current `Policy` to use when executing a read-modify-write loop. When the `Policy` is returned from a `GetEffectivePolicy` request, the `etag` will be unset. When the `Policy` is used in a `SetOrgPolicy` method, use the `etag` value that was returned from a `GetOrgPolicy` request as part of a read-modify-write loop for concurrency control. Not setting the `etag`in a `SetOrgPolicy` request will result in an unconditional write of the `Policy`.",
+"format": "byte",
+"type": "string"
+},
+"listPolicy": {
+"$ref": "ListPolicy",
+"description": "List of values either allowed or disallowed."
+},
+"restoreDefault": {
+"$ref": "RestoreDefault",
+"description": "Restores the default behavior of the constraint; independent of `Constraint` type."
+},
+"updateTime": {
+"description": "The time stamp the `Policy` was previously updated. This is set by the server, not specified by the caller, and represents the last time a call to `SetOrgPolicy` was made for that `Policy`. Any value set by the client will be ignored.",
+"format": "google-datetime",
+"type": "string"
+},
+"version": {
+"description": "Version of the `Policy`. Default version is 0;",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Organization": {
+"description": "The root node in the resource hierarchy to which a particular entity's (e.g., company) resources belong.",
+"id": "Organization",
+"properties": {
+"creationTime": {
+"description": "Timestamp when the Organization was created. Assigned by the server.",
+"format": "google-datetime",
+"type": "string"
+},
+"displayName": {
+"description": "A human-readable string that refers to the Organization in the Google Cloud console. This string is set by the server and cannot be changed. The string will be set to the primary domain (for example, \"google.com\") of the G Suite customer that owns the organization.",
+"type": "string"
+},
+"lifecycleState": {
+"description": "The organization's current lifecycle state. Assigned by the server.",
+"enum": [
+"LIFECYCLE_STATE_UNSPECIFIED",
+"ACTIVE",
+"DELETE_REQUESTED"
+],
+"enumDescriptions": [
+"Unspecified state. This is only useful for distinguishing unset values.",
+"The normal and active state.",
+"The organization has been marked for deletion by the user."
+],
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the organization. This is the organization's relative path in the API. Its format is \"organizations/[organization_id]\". For example, \"organizations/1234\".",
+"type": "string"
+},
+"owner": {
+"$ref": "OrganizationOwner",
+"description": "The owner of this Organization. The owner should be specified on creation. Once set, it cannot be changed. This field is required."
+}
+},
+"type": "object"
+},
+"OrganizationOwner": {
+"description": "The entity that owns an Organization. The lifetime of the Organization and all of its descendants are bound to the `OrganizationOwner`. If the `OrganizationOwner` is deleted, the Organization and all its descendants will be deleted.",
+"id": "OrganizationOwner",
+"properties": {
+"directoryCustomerId": {
+"description": "The G Suite customer id used in the Directory API.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Project": {
+"description": "A Project is a high-level Google Cloud Platform entity. It is a container for ACLs, APIs, App Engine Apps, VMs, and other Google Cloud Platform resources.",
+"id": "Project",
+"properties": {
+"createTime": {
+"description": "Creation time. Read-only.",
+"format": "google-datetime",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The labels associated with this Project. Label keys must be between 1 and 63 characters long and must conform to the following regular expression: a-z{0,62}. Label values must be between 0 and 63 characters long and must conform to the regular expression [a-z0-9_-]{0,63}. A label value can be empty. No more than 256 labels can be associated with a given resource. Clients should store labels in a representation such as JSON that does not depend on specific characters being disallowed. Example: \"environment\" : \"dev\" Read-write.",
+"type": "object"
+},
+"lifecycleState": {
+"description": "The Project lifecycle state. Read-only.",
+"enum": [
+"LIFECYCLE_STATE_UNSPECIFIED",
+"ACTIVE",
+"DELETE_REQUESTED",
+"DELETE_IN_PROGRESS"
+],
+"enumDescriptions": [
+"Unspecified state. This is only used/useful for distinguishing unset values.",
+"The normal and active state.",
+"The project has been marked for deletion by the user (by invoking DeleteProject) or by the system (Google Cloud Platform). This can generally be reversed by invoking UndeleteProject.",
+"This lifecycle state is no longer used and not returned by the API."
+],
+"type": "string"
+},
+"name": {
+"description": "The optional user-assigned display name of the Project. When present it must be between 4 to 30 characters. Allowed characters are: lowercase and uppercase letters, numbers, hyphen, single-quote, double-quote, space, and exclamation point. Example: `My Project` Read-write.",
+"type": "string"
+},
+"parent": {
+"$ref": "ResourceId",
+"description": "An optional reference to a parent Resource. Supported parent types include \"organization\" and \"folder\". Once set, the parent cannot be cleared. The `parent` can be set on creation or using the `UpdateProject` method; the end user must have the `resourcemanager.projects.create` permission on the parent."
+},
+"projectId": {
+"description": "The unique, user-assigned ID of the Project. It must be 6 to 30 lowercase letters, digits, or hyphens. It must start with a letter. Trailing hyphens are prohibited. Example: `tokyo-rain-123` Read-only after creation.",
+"type": "string"
+},
+"projectNumber": {
+"description": "The number uniquely identifying the project. Example: `415104041262` Read-only.",
+"format": "int64",
+"type": "string"
+},
+"tags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Input only. Immutable. Tag keys/values directly bound to this project. Each item in the map must be expressed as \" : \". For example: \"123/environment\" : \"production\", \"123/costCenter\" : \"marketing\" Note: Currently this field is in Preview.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"ProjectCreationStatus": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by CreateProject. It provides insight for when significant phases of Project creation have completed.",
+"id": "ProjectCreationStatus",
+"properties": {
+"createTime": {
+"description": "Creation time of the project creation workflow.",
+"format": "google-datetime",
+"type": "string"
+},
+"gettable": {
+"description": "True if the project can be retrieved using GetProject. No other operations on the project are guaranteed to work until the project creation is complete.",
+"type": "boolean"
+},
+"ready": {
+"description": "True if the project creation process is complete.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ResourceId": {
+"description": "A container to reference an id for any resource type. A `resource` in Google Cloud Platform is a generic term for something you (a developer) may want to interact with through one of our API's. Some examples are an App Engine app, a Compute Engine instance, a Cloud SQL database, and so on.",
+"id": "ResourceId",
+"properties": {
+"id": {
+"description": "The type-specific id. This should correspond to the id used in the type-specific API's.",
+"type": "string"
+},
+"type": {
+"description": "The resource type this id is for. At present, the valid types are: \"organization\", \"folder\", and \"project\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RestoreDefault": {
+"description": "Ignores policies set above this resource and restores the `constraint_default` enforcement behavior of the specific `Constraint` at this resource. Suppose that `constraint_default` is set to `ALLOW` for the `Constraint` `constraints/serviceuser.services`. Suppose that organization foo.com sets a `Policy` at their Organization resource node that restricts the allowed service activations to deny all service activations. They could then set a `Policy` with the `policy_type` `restore_default` on several experimental projects, restoring the `constraint_default` enforcement of the `Constraint` for only those projects, allowing those projects to have all services activated.",
+"id": "RestoreDefault",
+"properties": {},
+"type": "object"
+},
+"SearchOrganizationsRequest": {
+"description": "The request sent to the `SearchOrganizations` method.",
+"id": "SearchOrganizationsRequest",
+"properties": {
+"filter": {
+"description": "An optional query string used to filter the Organizations to return in the response. Filter rules are case-insensitive. Organizations may be filtered by `owner.directoryCustomerId` or by `domain`, where the domain is a G Suite domain, for example: * Filter `owner.directorycustomerid:123456789` returns Organization resources with `owner.directory_customer_id` equal to `123456789`. * Filter `domain:google.com` returns Organization resources corresponding to the domain `google.com`. This field is optional.",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of Organizations to return in the response. The server can return fewer organizations than requested. If unspecified, server picks an appropriate default.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "A pagination token returned from a previous call to `SearchOrganizations` that indicates from where listing should continue. This field is optional.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchOrganizationsResponse": {
+"description": "The response returned from the `SearchOrganizations` method.",
+"id": "SearchOrganizationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A pagination token to be used to retrieve the next page of results. If the result is too large to fit within the page size specified in the request, this field will be set with a token that can be used to fetch the next page of results. If this field is empty, it indicates that this response contains the last page of results.",
+"type": "string"
+},
+"organizations": {
+"description": "The list of Organizations that matched the search query, possibly paginated.",
+"items": {
+"$ref": "Organization"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetOrgPolicyRequest": {
+"description": "The request sent to the SetOrgPolicyRequest method.",
+"id": "SetOrgPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "OrgPolicy",
+"description": "`Policy` to set on the resource."
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"UndeleteFolderMetadata": {
+"description": "A status object which is used as the `metadata` field for the `Operation` returned by `UndeleteFolder`.",
+"id": "UndeleteFolderMetadata",
+"properties": {},
+"type": "object"
+},
+"UndeleteOrganizationMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by UndeleteOrganization.",
+"id": "UndeleteOrganizationMetadata",
+"properties": {},
+"type": "object"
+},
+"UndeleteProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by `UndeleteProject`.",
+"id": "UndeleteProjectMetadata",
+"properties": {},
+"type": "object"
+},
+"UndeleteProjectRequest": {
+"description": "The request sent to the UndeleteProject method.",
+"id": "UndeleteProjectRequest",
+"properties": {},
+"type": "object"
+},
+"UpdateFolderMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by UpdateFolder.",
+"id": "UpdateFolderMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by UpdateProject.",
+"id": "UpdateProjectMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateTagKeyMetadata": {
+"description": "Runtime operation information for updating a TagKey.",
+"id": "UpdateTagKeyMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateTagValueMetadata": {
+"description": "Runtime operation information for updating a TagValue.",
+"id": "UpdateTagValueMetadata",
+"properties": {},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Resource Manager API",
+"version": "v1"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudresourcemanager.v2beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudresourcemanager.v2beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..9665c6fd810bf3e19292cfedeed226c6c2f32ebf
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudresourcemanager.v2beta1.json
@@ -0,0 +1,1144 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/cloud-platform.read-only": {
+"description": "View your data across Google Cloud services and see the email address of your Google Account"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudresourcemanager.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Resource Manager",
+"description": "Creates, reads, and updates metadata for Google Cloud Platform resource containers.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/resource-manager",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudresourcemanager:v2beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudresourcemanager.mtls.googleapis.com/",
+"name": "cloudresourcemanager",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"folders": {
+"methods": {
+"create": {
+"description": "Creates a Folder in the resource hierarchy. Returns an Operation which can be used to track the progress of the folder creation workflow. Upon success the Operation.response field will be populated with the created Folder. In order to succeed, the addition of this new Folder must not violate the Folder naming, height or fanout constraints. + The Folder's display_name must be distinct from all other Folders that share its parent. + The addition of the Folder must not cause the active Folder hierarchy to exceed a height of 10. Note, the full active + deleted Folder hierarchy is allowed to reach a height of 20; this provides additional headroom when moving folders that contain deleted folders. + The addition of the Folder must not cause the total number of Folders under its parent to exceed 300. If the operation fails due to a folder constraint violation, some errors may be returned by the CreateFolder request, with status code FAILED_PRECONDITION and an error description. Other folder constraint violations will be communicated in the Operation, with the specific PreconditionFailure returned via the details list in the Operation.error field. The caller must have `resourcemanager.folders.create` permission on the identified parent.",
+"flatPath": "v2/folders",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.create",
+"parameterOrder": [],
+"parameters": {
+"parent": {
+"description": "Required. The resource name of the new Folder's parent. Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/folders",
+"request": {
+"$ref": "Folder"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Requests deletion of a Folder. The Folder is moved into the DELETE_REQUESTED state immediately, and is deleted approximately 30 days later. This method may only be called on an empty Folder in the ACTIVE state, where a Folder is empty if it doesn't contain any Folders or Projects in the ACTIVE state. The caller must have `resourcemanager.folders.delete` permission on the identified folder.",
+"flatPath": "v2/folders/{foldersId}",
+"httpMethod": "DELETE",
+"id": "cloudresourcemanager.folders.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. the resource name of the Folder to be deleted. Must be of the form `folders/{folder_id}`.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Folder"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Retrieves a Folder identified by the supplied resource name. Valid Folder resource names have the format `folders/{folder_id}` (for example, `folders/1234`). The caller must have `resourcemanager.folders.get` permission on the identified folder.",
+"flatPath": "v2/folders/{foldersId}",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.folders.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Folder to retrieve. Must be of the form `folders/{folder_id}`.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Folder"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a Folder. The returned policy may be empty if no such policy or resource exists. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.getIamPolicy` permission on the identified folder.",
+"flatPath": "v2/folders/{foldersId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"list": {
+"description": "Lists the Folders that are direct descendants of supplied parent resource. List provides a strongly consistent view of the Folders underneath the specified parent resource. List returns Folders sorted based upon the (ascending) lexical ordering of their display_name. The caller must have `resourcemanager.folders.list` permission on the identified parent.",
+"flatPath": "v2/folders",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.folders.list",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of Folders to return in the response. The server can return fewer folders than requested. If unspecified, server picks an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A pagination token returned from a previous call to `ListFolders` that indicates where this listing should continue from.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The resource name of the Organization or Folder whose Folders are being listed. Must be of the form `folders/{folder_id}` or `organizations/{org_id}`. Access to this method is controlled by checking the `resourcemanager.folders.list` permission on the `parent`.",
+"location": "query",
+"type": "string"
+},
+"showDeleted": {
+"description": "Optional. Controls whether Folders in the DELETE_REQUESTED state should be returned. Defaults to false.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v2/folders",
+"response": {
+"$ref": "ListFoldersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"move": {
+"description": "Moves a Folder under a new resource parent. Returns an Operation which can be used to track the progress of the folder move workflow. Upon success the Operation.response field will be populated with the moved Folder. Upon failure, a FolderOperationError categorizing the failure cause will be returned - if the failure occurs synchronously then the FolderOperationError will be returned via the Status.details field and if it occurs asynchronously then the FolderOperation will be returned via the Operation.error field. In addition, the Operation.metadata field will be populated with a FolderOperation message as an aid to stateless clients. Folder moves will be rejected if they violate either the naming, height or fanout constraints described in the CreateFolder documentation. The caller must have `resourcemanager.folders.move` permission on the folder's current and proposed new parent.",
+"flatPath": "v2/folders/{foldersId}:move",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.move",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Folder to move. Must be of the form folders/{folder_id}",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:move",
+"request": {
+"$ref": "MoveFolderRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a Folder, changing its display_name. Changes to the folder display_name will be rejected if they violate either the display_name formatting rules or naming constraints described in the CreateFolder documentation. The Folder's display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be between 3 and 30 characters. This is captured by the regular expression: `\\p{L}\\p{N}{1,28}[\\p{L}\\p{N}]`. The caller must have `resourcemanager.folders.update` permission on the identified folder. If the update fails due to the unique name constraint then a PreconditionFailure explaining this violation will be returned in the Status.details field.",
+"flatPath": "v2/folders/{foldersId}",
+"httpMethod": "PATCH",
+"id": "cloudresourcemanager.folders.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The resource name of the Folder. Its format is `folders/{folder_id}`, for example: \"folders/1234\".",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Fields to be updated. Only the `display_name` can be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "Folder"
+},
+"response": {
+"$ref": "Folder"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"search": {
+"description": "Search for folders that match specific filter criteria. Search provides an eventually consistent view of the folders a user has access to which meet the specified filter criteria. This will only return folders on which the caller has the permission `resourcemanager.folders.get`.",
+"flatPath": "v2/folders:search",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.search",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/folders:search",
+"request": {
+"$ref": "SearchFoldersRequest"
+},
+"response": {
+"$ref": "SearchFoldersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on a Folder, replacing any existing policy. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". The caller must have `resourcemanager.folders.setIamPolicy` permission on the identified folder.",
+"flatPath": "v2/folders/{foldersId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified Folder. The `resource` field should be the Folder's resource name, e.g. \"folders/1234\". There are no permissions required for making this API call.",
+"flatPath": "v2/folders/{foldersId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"undelete": {
+"description": "Cancels the deletion request for a Folder. This method may only be called on a Folder in the DELETE_REQUESTED state. In order to succeed, the Folder's parent must be in the ACTIVE state. In addition, reintroducing the folder into the tree must not violate folder naming, height and fanout constraints described in the CreateFolder documentation. The caller must have `resourcemanager.folders.undelete` permission on the identified folder.",
+"flatPath": "v2/folders/{foldersId}:undelete",
+"httpMethod": "POST",
+"id": "cloudresourcemanager.folders.undelete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Folder to undelete. Must be of the form `folders/{folder_id}`.",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:undelete",
+"request": {
+"$ref": "UndeleteFolderRequest"
+},
+"response": {
+"$ref": "Folder"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "cloudresourcemanager.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+}
+}
+}
+},
+"revision": "20240707",
+"rootUrl": "https://cloudresourcemanager.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudresourcemanagerGoogleCloudResourcemanagerV2alpha1FolderOperation": {
+"description": "Metadata describing a long running folder operation",
+"id": "CloudresourcemanagerGoogleCloudResourcemanagerV2alpha1FolderOperation",
+"properties": {
+"destinationParent": {
+"description": "The resource name of the folder or organization we are either creating the folder under or moving the folder to.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"operationType": {
+"description": "The type of this operation.",
+"enum": [
+"OPERATION_TYPE_UNSPECIFIED",
+"CREATE",
+"MOVE"
+],
+"enumDescriptions": [
+"Operation type not specified.",
+"A create folder operation.",
+"A move folder operation."
+],
+"type": "string"
+},
+"sourceParent": {
+"description": "The resource name of the folder's parent. Only applicable when the operation_type is MOVE.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudresourcemanagerGoogleCloudResourcemanagerV2beta1FolderOperation": {
+"description": "Metadata describing a long running folder operation",
+"id": "CloudresourcemanagerGoogleCloudResourcemanagerV2beta1FolderOperation",
+"properties": {
+"destinationParent": {
+"description": "The resource name of the folder or organization we are either creating the folder under or moving the folder to.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"operationType": {
+"description": "The type of this operation.",
+"enum": [
+"OPERATION_TYPE_UNSPECIFIED",
+"CREATE",
+"MOVE"
+],
+"enumDescriptions": [
+"Operation type not specified.",
+"A create folder operation.",
+"A move folder operation."
+],
+"type": "string"
+},
+"sourceParent": {
+"description": "The resource name of the folder's parent. Only applicable when the operation_type is MOVE.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateFolderMetadata": {
+"description": "Metadata pertaining to the Folder creation process.",
+"id": "CreateFolderMetadata",
+"properties": {
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"parent": {
+"description": "The resource name of the folder or organization we are creating the folder under.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by CreateProject. It provides insight for when significant phases of Project creation have completed.",
+"id": "CreateProjectMetadata",
+"properties": {
+"createTime": {
+"description": "Creation time of the project creation workflow.",
+"format": "google-datetime",
+"type": "string"
+},
+"gettable": {
+"description": "True if the project can be retrieved using `GetProject`. No other operations on the project are guaranteed to work until the project creation is complete.",
+"type": "boolean"
+},
+"ready": {
+"description": "True if the project creation process is complete.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"CreateTagBindingMetadata": {
+"description": "Runtime operation information for creating a TagValue.",
+"id": "CreateTagBindingMetadata",
+"properties": {},
+"type": "object"
+},
+"CreateTagKeyMetadata": {
+"description": "Runtime operation information for creating a TagKey.",
+"id": "CreateTagKeyMetadata",
+"properties": {},
+"type": "object"
+},
+"CreateTagValueMetadata": {
+"description": "Runtime operation information for creating a TagValue.",
+"id": "CreateTagValueMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteFolderMetadata": {
+"description": "A status object which is used as the `metadata` field for the `Operation` returned by `DeleteFolder`.",
+"id": "DeleteFolderMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteOrganizationMetadata": {
+"description": "A status object which is used as the `metadata` field for the operation returned by DeleteOrganization.",
+"id": "DeleteOrganizationMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by `DeleteProject`.",
+"id": "DeleteProjectMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteTagBindingMetadata": {
+"description": "Runtime operation information for deleting a TagBinding.",
+"id": "DeleteTagBindingMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteTagKeyMetadata": {
+"description": "Runtime operation information for deleting a TagKey.",
+"id": "DeleteTagKeyMetadata",
+"properties": {},
+"type": "object"
+},
+"DeleteTagValueMetadata": {
+"description": "Runtime operation information for deleting a TagValue.",
+"id": "DeleteTagValueMetadata",
+"properties": {},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Folder": {
+"description": "A Folder in an Organization's resource hierarchy, used to organize that Organization's resources.",
+"id": "Folder",
+"properties": {
+"createTime": {
+"description": "Output only. Timestamp when the Folder was created. Assigned by the server.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "The folder's display name. A folder's display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters. This is captured by the regular expression: `[\\p{L}\\p{N}]([\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?`.",
+"type": "string"
+},
+"lifecycleState": {
+"description": "Output only. The lifecycle state of the folder. Updates to the lifecycle_state must be performed via DeleteFolder and UndeleteFolder.",
+"enum": [
+"LIFECYCLE_STATE_UNSPECIFIED",
+"ACTIVE",
+"DELETE_REQUESTED"
+],
+"enumDescriptions": [
+"Unspecified state.",
+"The normal and active state.",
+"The folder has been marked for deletion by the user."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the Folder. Its format is `folders/{folder_id}`, for example: \"folders/1234\".",
+"readOnly": true,
+"type": "string"
+},
+"parent": {
+"description": "Required. The Folder's parent's resource name. Updates to the folder's parent must be performed via MoveFolder.",
+"type": "string"
+},
+"tags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Input only. Immutable. Tag keys/values directly bound to this folder. Each item in the map must be expressed as \" : \". For example: \"123/environment\" : \"production\", \"123/costCenter\" : \"marketing\" Note: Currently this field is in Preview.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"FolderOperation": {
+"description": "Metadata describing a long running folder operation",
+"id": "FolderOperation",
+"properties": {
+"destinationParent": {
+"description": "The resource name of the folder or organization we are either creating the folder under or moving the folder to.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"operationType": {
+"description": "The type of this operation.",
+"enum": [
+"OPERATION_TYPE_UNSPECIFIED",
+"CREATE",
+"MOVE"
+],
+"enumDescriptions": [
+"Operation type not specified.",
+"A create folder operation.",
+"A move folder operation."
+],
+"type": "string"
+},
+"sourceParent": {
+"description": "The resource name of the folder's parent. Only applicable when the operation_type is MOVE.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FolderOperationError": {
+"description": "A classification of the Folder Operation error.",
+"id": "FolderOperationError",
+"properties": {
+"errorMessageId": {
+"description": "The type of operation error experienced.",
+"enum": [
+"ERROR_TYPE_UNSPECIFIED",
+"ACTIVE_FOLDER_HEIGHT_VIOLATION",
+"MAX_CHILD_FOLDERS_VIOLATION",
+"FOLDER_NAME_UNIQUENESS_VIOLATION",
+"RESOURCE_DELETED_VIOLATION",
+"PARENT_DELETED_VIOLATION",
+"CYCLE_INTRODUCED_VIOLATION",
+"FOLDER_BEING_MOVED_VIOLATION",
+"FOLDER_TO_DELETE_NON_EMPTY_VIOLATION",
+"DELETED_FOLDER_HEIGHT_VIOLATION"
+],
+"enumDescriptions": [
+"The error type was unrecognized or unspecified.",
+"The attempted action would violate the max folder depth constraint.",
+"The attempted action would violate the max child folders constraint.",
+"The attempted action would violate the locally-unique folder display_name constraint.",
+"The resource being moved has been deleted.",
+"The resource a folder was being added to has been deleted.",
+"The attempted action would introduce cycle in resource path.",
+"The attempted action would move a folder that is already being moved.",
+"The folder the caller is trying to delete contains active resources.",
+"The attempted action would violate the max deleted folder depth constraint."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetIamPolicyRequest": {
+"description": "Request message for `GetIamPolicy` method.",
+"id": "GetIamPolicyRequest",
+"properties": {
+"options": {
+"$ref": "GetPolicyOptions",
+"description": "OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`."
+}
+},
+"type": "object"
+},
+"GetPolicyOptions": {
+"description": "Encapsulates settings provided to GetIamPolicy.",
+"id": "GetPolicyOptions",
+"properties": {
+"requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ListFoldersResponse": {
+"description": "The ListFolders response message.",
+"id": "ListFoldersResponse",
+"properties": {
+"folders": {
+"description": "A possibly paginated list of Folders that are direct descendants of the specified parent resource.",
+"items": {
+"$ref": "Folder"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A pagination token returned from a previous call to `ListFolders` that indicates from where listing should continue.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MoveFolderMetadata": {
+"description": "Metadata pertaining to the folder move process.",
+"id": "MoveFolderMetadata",
+"properties": {
+"destinationParent": {
+"description": "The resource name of the folder or organization to move the folder to.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the folder.",
+"type": "string"
+},
+"sourceParent": {
+"description": "The resource name of the folder's parent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MoveFolderRequest": {
+"description": "The MoveFolder request message.",
+"id": "MoveFolderRequest",
+"properties": {
+"destinationParent": {
+"description": "Required. The resource name of the Folder or Organization to reparent the folder under. Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MoveProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by MoveProject.",
+"id": "MoveProjectMetadata",
+"properties": {},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ProjectCreationStatus": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by CreateProject. It provides insight for when significant phases of Project creation have completed.",
+"id": "ProjectCreationStatus",
+"properties": {
+"createTime": {
+"description": "Creation time of the project creation workflow.",
+"format": "google-datetime",
+"type": "string"
+},
+"gettable": {
+"description": "True if the project can be retrieved using GetProject. No other operations on the project are guaranteed to work until the project creation is complete.",
+"type": "boolean"
+},
+"ready": {
+"description": "True if the project creation process is complete.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SearchFoldersRequest": {
+"description": "The request message for searching folders.",
+"id": "SearchFoldersRequest",
+"properties": {
+"pageSize": {
+"description": "Optional. The maximum number of folders to return in the response. The server can return fewer folders than requested. If unspecified, server picks an appropriate default.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A pagination token returned from a previous call to `SearchFolders` that indicates from where search should continue.",
+"type": "string"
+},
+"query": {
+"description": "Search criteria used to select the Folders to return. If no search criteria is specified then all accessible folders will be returned. Query expressions can be used to restrict results based upon displayName, lifecycleState and parent, where the operators `=`, `NOT`, `AND` and `OR` can be used along with the suffix wildcard symbol `*`. The displayName field in a query expression should use escaped quotes for values that include whitespace to prevent unexpected behavior. Some example queries are: * Query `displayName=Test*` returns Folder resources whose display name starts with \"Test\". * Query `lifecycleState=ACTIVE` returns Folder resources with `lifecycleState` set to `ACTIVE`. * Query `parent=folders/123` returns Folder resources that have `folders/123` as a parent resource. * Query `parent=folders/123 AND lifecycleState=ACTIVE` returns active Folder resources that have `folders/123` as a parent resource. * Query `displayName=\\\\\"Test String\\\\\"` returns Folder resources with display names that include both \"Test\" and \"String\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchFoldersResponse": {
+"description": "The response message for searching folders.",
+"id": "SearchFoldersResponse",
+"properties": {
+"folders": {
+"description": "A possibly paginated folder search results. the specified parent resource.",
+"items": {
+"$ref": "Folder"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A pagination token returned from a previous call to `SearchFolders` that indicates from where searching should continue.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"UndeleteFolderMetadata": {
+"description": "A status object which is used as the `metadata` field for the `Operation` returned by `UndeleteFolder`.",
+"id": "UndeleteFolderMetadata",
+"properties": {},
+"type": "object"
+},
+"UndeleteFolderRequest": {
+"description": "The UndeleteFolder request message.",
+"id": "UndeleteFolderRequest",
+"properties": {},
+"type": "object"
+},
+"UndeleteOrganizationMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by UndeleteOrganization.",
+"id": "UndeleteOrganizationMetadata",
+"properties": {},
+"type": "object"
+},
+"UndeleteProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by `UndeleteProject`.",
+"id": "UndeleteProjectMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateFolderMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by UpdateFolder.",
+"id": "UpdateFolderMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateProjectMetadata": {
+"description": "A status object which is used as the `metadata` field for the Operation returned by UpdateProject.",
+"id": "UpdateProjectMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateTagKeyMetadata": {
+"description": "Runtime operation information for updating a TagKey.",
+"id": "UpdateTagKeyMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateTagValueMetadata": {
+"description": "Runtime operation information for updating a TagValue.",
+"id": "UpdateTagValueMetadata",
+"properties": {},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Resource Manager API",
+"version": "v2beta1"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudsupport.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudsupport.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..d88cc5120d5519593d180fd91f7243e04a987072
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudsupport.v2.json
@@ -0,0 +1,1398 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudsupport.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Support",
+"description": "Manages Google Cloud technical support cases for Customer Care support offerings. ",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/support/docs/apis",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudsupport:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudsupport.mtls.googleapis.com/",
+"name": "cloudsupport",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"caseClassifications": {
+"methods": {
+"search": {
+"description": "Retrieve valid classifications to use when creating a support case. Classifications are hierarchical. Each classification is a string containing all levels of the hierarchy separated by `\" > \"`. For example, `\"Technical Issue > Compute > Compute Engine\"`. Classification IDs returned by this endpoint are valid for at least six months. When a classification is deactivated, this endpoint immediately stops returning it. After six months, `case.create` requests using the classification will fail. EXAMPLES: cURL: ```shell curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ 'https://cloudsupport.googleapis.com/v2/caseClassifications:search?query=display_name:\"*Compute%20Engine*\"' ``` Python: ```python import googleapiclient.discovery supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=\"v2\", discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version=v2\", ) request = supportApiService.caseClassifications().search( query='display_name:\"*Compute Engine*\"' ) print(request.execute()) ```",
+"flatPath": "v2/caseClassifications:search",
+"httpMethod": "GET",
+"id": "cloudsupport.caseClassifications.search",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of classifications fetched with each request.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+"location": "query",
+"type": "string"
+},
+"query": {
+"description": "An expression used to filter case classifications. If it's an empty string, then no filtering happens. Otherwise, case classifications will be returned that match the filter.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/caseClassifications:search",
+"response": {
+"$ref": "SearchCaseClassificationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"cases": {
+"methods": {
+"close": {
+"description": "Close a case. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/43595344\" curl \\ --request POST \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$case:close\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().close( name=\"projects/some-project/cases/43595344\" ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}:close",
+"httpMethod": "POST",
+"id": "cloudsupport.cases.close",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the case to close.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:close",
+"request": {
+"$ref": "CloseCaseRequest"
+},
+"response": {
+"$ref": "Case"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Create a new case and associate it with a parent. It must have the following fields set: `display_name`, `description`, `classification`, and `priority`. If you're just testing the API and don't want to route your case to an agent, set `testCase=true`. EXAMPLES: cURL: ```shell parent=\"projects/some-project\" curl \\ --request POST \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ --header 'Content-Type: application/json' \\ --data '{ \"display_name\": \"Test case created by me.\", \"description\": \"a random test case, feel free to close\", \"classification\": { \"id\": \"100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8\" }, \"time_zone\": \"-07:00\", \"subscriber_email_addresses\": [ \"foo@domain.com\", \"bar@domain.com\" ], \"testCase\": true, \"priority\": \"P3\" }' \\ \"https://cloudsupport.googleapis.com/v2/$parent/cases\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().create( parent=\"projects/some-project\", body={ \"displayName\": \"A Test Case\", \"description\": \"This is a test case.\", \"testCase\": True, \"priority\": \"P2\", \"classification\": { \"id\": \"100IK2AKCLHMGRJ9CDGMOCGP8DM6UTB4BT262T31BT1M2T31DHNMENPO6KS36CPJ786L2TBFEHGN6NPI64R3CDHN8880G08I1H3MURR7DHII0GRCDTQM8\" }, }, ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases",
+"httpMethod": "POST",
+"id": "cloudsupport.cases.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the parent under which the case should be created.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/cases",
+"request": {
+"$ref": "Case"
+},
+"response": {
+"$ref": "Case"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"escalate": {
+"description": "Escalate a case, starting the Google Cloud Support escalation management process. This operation is only available for some support services. Go to https://cloud.google.com/support and look for 'Technical support escalations' in the feature list to find out which ones let you do that. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/43595344\" curl \\ --request POST \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ --header \"Content-Type: application/json\" \\ --data '{ \"escalation\": { \"reason\": \"BUSINESS_IMPACT\", \"justification\": \"This is a test escalation.\" } }' \\ \"https://cloudsupport.googleapis.com/v2/$case:escalate\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().escalate( name=\"projects/some-project/cases/43595344\", body={ \"escalation\": { \"reason\": \"BUSINESS_IMPACT\", \"justification\": \"This is a test escalation.\", }, }, ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}:escalate",
+"httpMethod": "POST",
+"id": "cloudsupport.cases.escalate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the case to be escalated.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:escalate",
+"request": {
+"$ref": "EscalateCaseRequest"
+},
+"response": {
+"$ref": "Case"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Retrieve a case. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/16033687\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$case\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().get( name=\"projects/some-project/cases/43595344\", ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}",
+"httpMethod": "GET",
+"id": "cloudsupport.cases.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The full name of a case to be retrieved.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Case"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Retrieve all cases under a parent, but not its children. For example, listing cases under an organization only returns the cases that are directly parented by that organization. To retrieve cases under an organization and its projects, use `cases.search`. EXAMPLES: cURL: ```shell parent=\"projects/some-project\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$parent/cases\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().list(parent=\"projects/some-project\") print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases",
+"httpMethod": "GET",
+"id": "cloudsupport.cases.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "An expression used to filter cases. If it's an empty string, then no filtering happens. Otherwise, the endpoint returns the cases that match the filter. Expressions use the following fields separated by `AND` and specified with `=`: - `state`: Can be `OPEN` or `CLOSED`. - `priority`: Can be `P0`, `P1`, `P2`, `P3`, or `P4`. You can specify multiple values for priority using the `OR` operator. For example, `priority=P1 OR priority=P2`. - `creator.email`: The email address of the case creator. EXAMPLES: - `state=CLOSED` - `state=OPEN AND creator.email=\"tester@example.com\"` - `state=OPEN AND (priority=P0 OR priority=P1)`",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of cases fetched with each request. Defaults to 10.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of a parent to list cases under.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/cases",
+"response": {
+"$ref": "ListCasesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update a case. Only some fields can be updated. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/43595344\" curl \\ --request PATCH \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ --header \"Content-Type: application/json\" \\ --data '{ \"priority\": \"P1\" }' \\ \"https://cloudsupport.googleapis.com/v2/$case?updateMask=priority\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().patch( name=\"projects/some-project/cases/43112854\", body={ \"displayName\": \"This is Now a New Title\", \"priority\": \"P2\", }, ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}",
+"httpMethod": "PATCH",
+"id": "cloudsupport.cases.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name for the case.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "A list of attributes of the case that should be updated. Supported values are `priority`, `display_name`, and `subscriber_email_addresses`. If no fields are specified, all supported fields are updated. Be careful - if you do not provide a field mask, then you might accidentally clear some fields. For example, if you leave the field mask empty and do not provide a value for `subscriber_email_addresses`, then `subscriber_email_addresses` is updated to empty.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "Case"
+},
+"response": {
+"$ref": "Case"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"search": {
+"description": "Search for cases using a query. EXAMPLES: cURL: ```shell parent=\"projects/some-project\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$parent/cases:search\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.cases().search( parent=\"projects/some-project\", query=\"state=OPEN\" ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases:search",
+"httpMethod": "GET",
+"id": "cloudsupport.cases.search",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of cases fetched with each request. The default page size is 10.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The name of the parent resource to search for cases under.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "An expression used to filter cases. Expressions use the following fields separated by `AND` and specified with `=`: - `organization`: An organization name in the form `organizations/`. - `project`: A project name in the form `projects/`. - `state`: Can be `OPEN` or `CLOSED`. - `priority`: Can be `P0`, `P1`, `P2`, `P3`, or `P4`. You can specify multiple values for priority using the `OR` operator. For example, `priority=P1 OR priority=P2`. - `creator.email`: The email address of the case creator. You must specify either `organization` or `project`. To search across `displayName`, `description`, and comments, use a global restriction with no keyword or operator. For example, `\"my search\"`. To search only cases updated after a certain date, use `update_time` restricted with that particular date, time, and timezone in ISO datetime format. For example, `update_time>\"2020-01-01T00:00:00-05:00\"`. `update_time` only supports the greater than operator (`>`). Examples: - `organization=\"organizations/123456789\"` - `project=\"projects/my-project-id\"` - `project=\"projects/123456789\"` - `organization=\"organizations/123456789\" AND state=CLOSED` - `project=\"projects/my-project-id\" AND creator.email=\"tester@example.com\"` - `project=\"projects/my-project-id\" AND (priority=P0 OR priority=P1)`",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+parent}/cases:search",
+"response": {
+"$ref": "SearchCasesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"attachments": {
+"methods": {
+"list": {
+"description": "List all the attachments associated with a support case. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/23598314\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$case/attachments\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = ( supportApiService.cases() .attachments() .list(parent=\"projects/some-project/cases/43595344\") ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/attachments",
+"httpMethod": "GET",
+"id": "cloudsupport.cases.attachments.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of attachments fetched with each request. If not provided, the default is 10. The maximum page size that will be returned is 100. The size of each page can be smaller than the requested page size and can include zero. For example, you could request 100 attachments on one page, receive 0, and then on the next page, receive 90.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying the page of results to return. If unspecified, the first page is retrieved.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the case for which attachments should be listed.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/attachments",
+"response": {
+"$ref": "ListAttachmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"comments": {
+"methods": {
+"create": {
+"description": "Add a new comment to a case. The comment must have the following fields set: `body`. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/43591344\" curl \\ --request POST \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ --header 'Content-Type: application/json' \\ --data '{ \"body\": \"This is a test comment.\" }' \\ \"https://cloudsupport.googleapis.com/v2/$case/comments\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = ( supportApiService.cases() .comments() .create( parent=\"projects/some-project/cases/43595344\", body={\"body\": \"This is a test comment.\"}, ) ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/comments",
+"httpMethod": "POST",
+"id": "cloudsupport.cases.comments.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the case to which the comment should be added.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/comments",
+"request": {
+"$ref": "Comment"
+},
+"response": {
+"$ref": "Comment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List all the comments associated with a case. EXAMPLES: cURL: ```shell case=\"projects/some-project/cases/43595344\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$case/comments\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = ( supportApiService.cases() .comments() .list(parent=\"projects/some-project/cases/43595344\") ) print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/comments",
+"httpMethod": "GET",
+"id": "cloudsupport.cases.comments.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of comments to fetch. Defaults to 10.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying the page of results to return. If unspecified, the first page is returned.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the case for which to list comments.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/comments",
+"response": {
+"$ref": "ListCommentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"media": {
+"methods": {
+"download": {
+"description": "Download a file attached to a case. Note: HTTP requests must append \"?alt=media\" to the URL. EXAMPLES: cURL: ```shell name=\"projects/some-project/cases/43594844/attachments/0674M00000WijAnZAJ\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ \"https://cloudsupport.googleapis.com/v2/$name:download?alt=media\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) request = supportApiService.media().download( name=\"projects/some-project/cases/43595344/attachments/0684M00000Pw6pHQAR\" ) request.uri = request.uri.split(\"?\")[0] + \"?alt=media\" print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/attachments/{attachmentsId}:download",
+"httpMethod": "GET",
+"id": "cloudsupport.media.download",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the file attachment to download.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+/attachments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:download",
+"response": {
+"$ref": "Media"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+],
+"supportsMediaDownload": true,
+"useMediaDownloadService": true
+},
+"upload": {
+"description": "Create a file attachment on a case or Cloud resource. The attachment must have the following fields set: `filename`. EXAMPLES: cURL: ```shell echo \"This text is in a file I'm uploading using CSAPI.\" \\ > \"./example_file.txt\" case=\"projects/some-project/cases/43594844\" curl \\ --header \"Authorization: Bearer $(gcloud auth print-access-token)\" \\ --data-binary @\"./example_file.txt\" \\ \"https://cloudsupport.googleapis.com/upload/v2beta/$case/attachments?attachment.filename=uploaded_via_curl.txt\" ``` Python: ```python import googleapiclient.discovery api_version = \"v2\" supportApiService = googleapiclient.discovery.build( serviceName=\"cloudsupport\", version=api_version, discoveryServiceUrl=f\"https://cloudsupport.googleapis.com/$discovery/rest?version={api_version}\", ) file_path = \"./example_file.txt\" with open(file_path, \"w\") as file: file.write( \"This text is inside a file I'm going to upload using the Cloud Support API.\", ) request = supportApiService.media().upload( parent=\"projects/some-project/cases/43595344\", media_body=file_path ) request.uri = request.uri.split(\"?\")[0] + \"?attachment.filename=uploaded_via_python.txt\" print(request.execute()) ```",
+"flatPath": "v2/{v2Id}/{v2Id1}/cases/{casesId}/attachments",
+"httpMethod": "POST",
+"id": "cloudsupport.media.upload",
+"mediaUpload": {
+"accept": [
+"*/*"
+],
+"protocols": {
+"simple": {
+"multipart": true,
+"path": "/upload/v2/{+parent}/attachments"
+}
+}
+},
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the case or Cloud resource to which the attachment should be attached.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/cases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/attachments",
+"request": {
+"$ref": "CreateAttachmentRequest"
+},
+"response": {
+"$ref": "Attachment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+],
+"supportsMediaUpload": true
+}
+}
+}
+},
+"revision": "20241231",
+"rootUrl": "https://cloudsupport.googleapis.com/",
+"schemas": {
+"Actor": {
+"description": "An Actor represents an entity that performed an action. For example, an actor could be a user who posted a comment on a support case, a user who uploaded an attachment, or a service account that created a support case.",
+"id": "Actor",
+"properties": {
+"displayName": {
+"description": "The name to display for the actor. If not provided, it is inferred from credentials supplied during case creation. When an email is provided, a display name must also be provided. This will be obfuscated if the user is a Google Support agent.",
+"type": "string"
+},
+"email": {
+"deprecated": true,
+"description": "The email address of the actor. If not provided, it is inferred from the credentials supplied during case creation. When a name is provided, an email must also be provided. If the user is a Google Support agent, this is obfuscated. This field is deprecated. Use **username** field instead.",
+"type": "string"
+},
+"googleSupport": {
+"description": "Output only. Whether the actor is a Google support actor.",
+"readOnly": true,
+"type": "boolean"
+},
+"username": {
+"description": "Output only. The username of the actor. It may look like an email or other format provided by the identity provider. If not provided, it is inferred from the credentials supplied. When a name is provided, a username must also be provided. If the user is a Google Support agent, this will not be set.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Attachment": {
+"description": "An Attachment contains metadata about a file that was uploaded to a case - it is NOT a file itself. That being said, the name of an Attachment object can be used to download its accompanying file through the `media.download` endpoint. While attachments can be uploaded in the console at the same time as a comment, they're associated on a \"case\" level, not a \"comment\" level.",
+"id": "Attachment",
+"properties": {
+"createTime": {
+"description": "Output only. The time at which the attachment was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"creator": {
+"$ref": "Actor",
+"description": "Output only. The user who uploaded the attachment. Note, the name and email will be obfuscated if the attachment was uploaded by Google support.",
+"readOnly": true
+},
+"filename": {
+"description": "The filename of the attachment (e.g. `\"graph.jpg\"`).",
+"type": "string"
+},
+"mimeType": {
+"description": "Output only. The MIME type of the attachment (e.g. text/plain).",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the attachment.",
+"readOnly": true,
+"type": "string"
+},
+"sizeBytes": {
+"description": "Output only. The size of the attachment in bytes.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Blobstore2Info": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "Blobstore2Info",
+"properties": {
+"blobGeneration": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "int64",
+"type": "string"
+},
+"blobId": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"downloadReadHandle": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"readToken": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"uploadMetadataContainer": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Case": {
+"description": "A Case is an object that contains the details of a support case. It contains fields for the time it was created, its priority, its classification, and more. Cases can also have comments and attachments that get added over time. A case is parented by a Google Cloud organization or project. Organizations are identified by a number, so the name of a case parented by an organization would look like this: ``` organizations/123/cases/456 ``` Projects have two unique identifiers, an ID and a number, and they look like this: ``` projects/abc/cases/456 ``` ``` projects/123/cases/456 ``` You can use either of them when calling the API. To learn more about project identifiers, see [AIP-2510](https://google.aip.dev/cloud/2510).",
+"id": "Case",
+"properties": {
+"classification": {
+"$ref": "CaseClassification",
+"description": "The issue classification applicable to this case."
+},
+"contactEmail": {
+"description": "A user-supplied email address to send case update notifications for. This should only be used in BYOID flows, where we cannot infer the user's email address directly from their EUCs.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time this case was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"creator": {
+"$ref": "Actor",
+"description": "The user who created the case. Note: The name and email will be obfuscated if the case was created by Google Support."
+},
+"description": {
+"description": "A broad description of the issue.",
+"type": "string"
+},
+"displayName": {
+"description": "The short summary of the issue reported in this case.",
+"type": "string"
+},
+"escalated": {
+"description": "Whether the case is currently escalated.",
+"type": "boolean"
+},
+"languageCode": {
+"description": "The language the user has requested to receive support in. This should be a BCP 47 language code (e.g., `\"en\"`, `\"zh-CN\"`, `\"zh-TW\"`, `\"ja\"`, `\"ko\"`). If no language or an unsupported language is specified, this field defaults to English (en). Language selection during case creation may affect your available support options. For a list of supported languages and their support working hours, see: https://cloud.google.com/support/docs/language-working-hours",
+"type": "string"
+},
+"name": {
+"description": "The resource name for the case.",
+"type": "string"
+},
+"priority": {
+"description": "The priority of this case.",
+"enum": [
+"PRIORITY_UNSPECIFIED",
+"P0",
+"P1",
+"P2",
+"P3",
+"P4"
+],
+"enumDescriptions": [
+"Priority is undefined or has not been set yet.",
+"Extreme impact on a production service. Service is hard down.",
+"Critical impact on a production service. Service is currently unusable.",
+"Severe impact on a production service. Service is usable but greatly impaired.",
+"Medium impact on a production service. Service is available, but moderately impaired.",
+"General questions or minor issues. Production service is fully available."
+],
+"type": "string"
+},
+"state": {
+"description": "Output only. The current status of the support case.",
+"enum": [
+"STATE_UNSPECIFIED",
+"NEW",
+"IN_PROGRESS_GOOGLE_SUPPORT",
+"ACTION_REQUIRED",
+"SOLUTION_PROVIDED",
+"CLOSED"
+],
+"enumDescriptions": [
+"Case is in an unknown state.",
+"The case has been created but no one is assigned to work on it yet.",
+"The case is currently being handled by Google support.",
+"Google is waiting for a response.",
+"A solution has been offered for the case, but it isn't yet closed.",
+"The case has been resolved."
+],
+"readOnly": true,
+"type": "string"
+},
+"subscriberEmailAddresses": {
+"description": "The email addresses to receive updates on this case.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"testCase": {
+"description": "Whether this case was created for internal API testing and should not be acted on by the support team.",
+"type": "boolean"
+},
+"timeZone": {
+"description": "The timezone of the user who created the support case. It should be in a format IANA recognizes: https://www.iana.org/time-zones. There is no additional validation done by the API.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time this case was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CaseClassification": {
+"description": "A Case Classification represents the topic that a case is about. It's very important to use accurate classifications, because they're used to route your cases to specialists who can help you. A classification always has an ID that is its unique identifier. A valid ID is required when creating a case.",
+"id": "CaseClassification",
+"properties": {
+"displayName": {
+"description": "A display name for the classification. The display name is not static and can change. To uniquely and consistently identify classifications, use the `CaseClassification.id` field.",
+"type": "string"
+},
+"id": {
+"description": "The unique ID for a classification. Must be specified for case creation. To retrieve valid classification IDs for case creation, use `caseClassifications.search`. Classification IDs returned by `caseClassifications.search` are guaranteed to be valid for at least 6 months. If a given classification is deactiveated, it will immediately stop being returned. After 6 months, `case.create` requests using the classification ID will fail.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloseCaseRequest": {
+"description": "The request message for the CloseCase endpoint.",
+"id": "CloseCaseRequest",
+"properties": {},
+"type": "object"
+},
+"Comment": {
+"description": "A comment associated with a support case. Case comments are the primary way for Google Support to communicate with a user who has opened a case. When a user responds to Google Support, the user's responses also appear as comments.",
+"id": "Comment",
+"properties": {
+"body": {
+"description": "The full comment body. Maximum of 12800 characters.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time when the comment was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"creator": {
+"$ref": "Actor",
+"description": "Output only. The user or Google Support agent who created the comment.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. Identifier. The resource name of the comment.",
+"readOnly": true,
+"type": "string"
+},
+"plainTextBody": {
+"deprecated": true,
+"description": "Output only. DEPRECATED. DO NOT USE. A duplicate of the `body` field. This field is only present for legacy reasons.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CompositeMedia": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "CompositeMedia",
+"properties": {
+"blobRef": {
+"deprecated": true,
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"blobstore2Info": {
+"$ref": "Blobstore2Info",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"cosmoBinaryReference": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"crc32cHash": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "uint32",
+"type": "integer"
+},
+"inline": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"length": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "int64",
+"type": "string"
+},
+"md5Hash": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"objectId": {
+"$ref": "ObjectId",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"path": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"referenceType": {
+"description": "# gdata.* are outside protos with mising documentation",
+"enum": [
+"PATH",
+"BLOB_REF",
+"INLINE",
+"BIGSTORE_REF",
+"COSMO_BINARY_REFERENCE"
+],
+"enumDescriptions": [
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation"
+],
+"type": "string"
+},
+"sha1Hash": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContentTypeInfo": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "ContentTypeInfo",
+"properties": {
+"bestGuess": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"fromBytes": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"fromFileName": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"fromHeader": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"fromUrlPath": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateAttachmentRequest": {
+"description": "The request message for the CreateAttachment endpoint.",
+"id": "CreateAttachmentRequest",
+"properties": {
+"attachment": {
+"$ref": "Attachment",
+"description": "Required. The attachment to be created."
+}
+},
+"type": "object"
+},
+"DiffChecksumsResponse": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "DiffChecksumsResponse",
+"properties": {
+"checksumsLocation": {
+"$ref": "CompositeMedia",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"chunkSizeBytes": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "int64",
+"type": "string"
+},
+"objectLocation": {
+"$ref": "CompositeMedia",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"objectSizeBytes": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "int64",
+"type": "string"
+},
+"objectVersion": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DiffDownloadResponse": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "DiffDownloadResponse",
+"properties": {
+"objectLocation": {
+"$ref": "CompositeMedia",
+"description": "# gdata.* are outside protos with mising documentation"
+}
+},
+"type": "object"
+},
+"DiffUploadRequest": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "DiffUploadRequest",
+"properties": {
+"checksumsInfo": {
+"$ref": "CompositeMedia",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"objectInfo": {
+"$ref": "CompositeMedia",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"objectVersion": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DiffUploadResponse": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "DiffUploadResponse",
+"properties": {
+"objectVersion": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"originalObject": {
+"$ref": "CompositeMedia",
+"description": "# gdata.* are outside protos with mising documentation"
+}
+},
+"type": "object"
+},
+"DiffVersionResponse": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "DiffVersionResponse",
+"properties": {
+"objectSizeBytes": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "int64",
+"type": "string"
+},
+"objectVersion": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DownloadParameters": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "DownloadParameters",
+"properties": {
+"allowGzipCompression": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "boolean"
+},
+"ignoreRange": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"EscalateCaseRequest": {
+"description": "The request message for the EscalateCase endpoint.",
+"id": "EscalateCaseRequest",
+"properties": {
+"escalation": {
+"$ref": "Escalation",
+"description": "The escalation information to be sent with the escalation request."
+}
+},
+"type": "object"
+},
+"Escalation": {
+"description": "An escalation of a support case.",
+"id": "Escalation",
+"properties": {
+"justification": {
+"description": "Required. A free text description to accompany the `reason` field above. Provides additional context on why the case is being escalated.",
+"type": "string"
+},
+"reason": {
+"description": "Required. The reason why the Case is being escalated.",
+"enum": [
+"REASON_UNSPECIFIED",
+"RESOLUTION_TIME",
+"TECHNICAL_EXPERTISE",
+"BUSINESS_IMPACT"
+],
+"enumDescriptions": [
+"The escalation reason is in an unknown state or has not been specified.",
+"The case is taking too long to resolve.",
+"The support agent does not have the expertise required to successfully resolve the issue.",
+"The issue is having a significant business impact."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListAttachmentsResponse": {
+"description": "The response message for the ListAttachments endpoint.",
+"id": "ListAttachmentsResponse",
+"properties": {
+"attachments": {
+"description": "The list of attachments associated with a case.",
+"items": {
+"$ref": "Attachment"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Set this in the `page_token` field of subsequent `cases.attachments.list` requests. If unspecified, there are no more results to retrieve.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListCasesResponse": {
+"description": "The response message for the ListCases endpoint.",
+"id": "ListCasesResponse",
+"properties": {
+"cases": {
+"description": "The list of cases associated with the parent after any filters have been applied.",
+"items": {
+"$ref": "Case"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Set this in the `page_token` field of subsequent `cases.list` requests. If unspecified, there are no more results to retrieve.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListCommentsResponse": {
+"description": "The response message for the ListComments endpoint.",
+"id": "ListCommentsResponse",
+"properties": {
+"comments": {
+"description": "List of the comments associated with the case.",
+"items": {
+"$ref": "Comment"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Set this in the `page_token` field of subsequent `cases.comments.list` requests. If unspecified, there are no more results to retrieve.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Media": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "Media",
+"properties": {
+"algorithm": {
+"deprecated": true,
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"bigstoreObjectRef": {
+"deprecated": true,
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"blobRef": {
+"deprecated": true,
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"blobstore2Info": {
+"$ref": "Blobstore2Info",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"compositeMedia": {
+"description": "# gdata.* are outside protos with mising documentation",
+"items": {
+"$ref": "CompositeMedia"
+},
+"type": "array"
+},
+"contentType": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"contentTypeInfo": {
+"$ref": "ContentTypeInfo",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"cosmoBinaryReference": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"crc32cHash": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "uint32",
+"type": "integer"
+},
+"diffChecksumsResponse": {
+"$ref": "DiffChecksumsResponse",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"diffDownloadResponse": {
+"$ref": "DiffDownloadResponse",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"diffUploadRequest": {
+"$ref": "DiffUploadRequest",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"diffUploadResponse": {
+"$ref": "DiffUploadResponse",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"diffVersionResponse": {
+"$ref": "DiffVersionResponse",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"downloadParameters": {
+"$ref": "DownloadParameters",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"filename": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"hash": {
+"deprecated": true,
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"hashVerified": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "boolean"
+},
+"inline": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"isPotentialRetry": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "boolean"
+},
+"length": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "int64",
+"type": "string"
+},
+"md5Hash": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"mediaId": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"objectId": {
+"$ref": "ObjectId",
+"description": "# gdata.* are outside protos with mising documentation"
+},
+"path": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"referenceType": {
+"description": "# gdata.* are outside protos with mising documentation",
+"enum": [
+"PATH",
+"BLOB_REF",
+"INLINE",
+"GET_MEDIA",
+"COMPOSITE_MEDIA",
+"BIGSTORE_REF",
+"DIFF_VERSION_RESPONSE",
+"DIFF_CHECKSUMS_RESPONSE",
+"DIFF_DOWNLOAD_RESPONSE",
+"DIFF_UPLOAD_REQUEST",
+"DIFF_UPLOAD_RESPONSE",
+"COSMO_BINARY_REFERENCE",
+"ARBITRARY_BYTES"
+],
+"enumDescriptions": [
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation",
+"# gdata.* are outside protos with mising documentation"
+],
+"type": "string"
+},
+"sha1Hash": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"sha256Hash": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "byte",
+"type": "string"
+},
+"timestamp": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "uint64",
+"type": "string"
+},
+"token": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ObjectId": {
+"description": "# gdata.* are outside protos with mising documentation",
+"id": "ObjectId",
+"properties": {
+"bucketName": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+},
+"generation": {
+"description": "# gdata.* are outside protos with mising documentation",
+"format": "int64",
+"type": "string"
+},
+"objectName": {
+"description": "# gdata.* are outside protos with mising documentation",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchCaseClassificationsResponse": {
+"description": "The response message for SearchCaseClassifications endpoint.",
+"id": "SearchCaseClassificationsResponse",
+"properties": {
+"caseClassifications": {
+"description": "The classifications retrieved.",
+"items": {
+"$ref": "CaseClassification"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Set this in the `page_token` field of subsequent `caseClassifications.list` requests. If unspecified, there are no more results to retrieve.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SearchCasesResponse": {
+"description": "The response message for the SearchCases endpoint.",
+"id": "SearchCasesResponse",
+"properties": {
+"cases": {
+"description": "The list of cases associated with the parent after any filters have been applied.",
+"items": {
+"$ref": "Case"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve the next page of results. Set this in the `page_token` field of subsequent `cases.search` requests. If unspecified, there are no more results to retrieve.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WorkflowOperationMetadata": {
+"description": "Metadata about the operation. Used to lookup the current status.",
+"id": "WorkflowOperationMetadata",
+"properties": {
+"namespace": {
+"description": "The namespace that the job was scheduled in. Must be included in the workflow metadata so the workflow status can be retrieved.",
+"type": "string"
+},
+"operationAction": {
+"description": "The type of action the operation is classified as.",
+"enum": [
+"OPERATION_ACTION_UNSPECIFIED",
+"CREATE_SUPPORT_ACCOUNT",
+"UPDATE_SUPPORT_ACCOUNT",
+"PURCHASE_SUPPORT_ACCOUNT"
+],
+"enumDescriptions": [
+"Operation action is not specified.",
+"Operation pertains to the creation of a new support account.",
+"Operation pertains to the updating of an existing support account.",
+"Operation pertains to the purchasing of a support plan that may either create or update a support account."
+],
+"type": "string"
+},
+"workflowOperationType": {
+"description": "Which version of the workflow service this operation came from.",
+"enum": [
+"UNKNOWN_OPERATION_TYPE",
+"WORKFLOWS_V1",
+"WORKFLOWS_V2"
+],
+"enumDescriptions": [
+"Unknown version.",
+"Version 1.",
+"Version 2."
+],
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Google Cloud Support API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudtasks.v2beta3.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudtasks.v2beta3.json
new file mode 100644
index 0000000000000000000000000000000000000000..6a60466c5394c608655ddced4e48a6294d40d55f
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/cloudtasks.v2beta3.json
@@ -0,0 +1,1799 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://cloudtasks.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Tasks",
+"description": "Manages the execution of large numbers of distributed requests.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/tasks/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "cloudtasks:v2beta3",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://cloudtasks.mtls.googleapis.com/",
+"name": "cloudtasks",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "cloudtasks.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getCmekConfig": {
+"description": "Gets the CMEK config. Gets the Customer Managed Encryption Key configured with the Cloud Tasks lcoation. By default there is no kms_key configured.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/cmekConfig",
+"httpMethod": "GET",
+"id": "cloudtasks.projects.locations.getCmekConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The config resource name. For example: projects/PROJECT_ID/locations/LOCATION_ID/cmekConfig`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/cmekConfig$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}",
+"response": {
+"$ref": "CmekConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v2beta3/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "cloudtasks.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updateCmekConfig": {
+"description": "Creates or Updates a CMEK config. Updates the Customer Managed Encryption Key assotiated with the Cloud Tasks location (Creates if the key does not already exist). All new tasks created in the location will be encrypted at-rest with the KMS-key provided in the config.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/cmekConfig",
+"httpMethod": "PATCH",
+"id": "cloudtasks.projects.locations.updateCmekConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The config resource name which includes the project and location and must end in 'cmekConfig', in the format projects/PROJECT_ID/locations/LOCATION_ID/cmekConfig`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/cmekConfig$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "List of fields to be updated in this request.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}",
+"request": {
+"$ref": "CmekConfig"
+},
+"response": {
+"$ref": "CmekConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"queues": {
+"methods": {
+"create": {
+"description": "Creates a queue. Queues created with this method allow tasks to live for a maximum of 31 days. After a task is 31 days old, the task will be deleted regardless of whether it was dispatched or not. WARNING: Using this method may have unintended side effects if you are using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. Read [Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using this method.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The location name in which the queue will be created. For example: `projects/PROJECT_ID/locations/LOCATION_ID` The list of allowed locations can be obtained by calling Cloud Tasks' implementation of ListLocations.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+parent}/queues",
+"request": {
+"$ref": "Queue"
+},
+"response": {
+"$ref": "Queue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a queue. This command will delete the queue even if it has tasks in it. Note : If you delete a queue, you may be prevented from creating a new queue with the same name as the deleted queue for a tombstone window of up to 3 days. During this window, the CreateQueue operation may appear to recreate the queue, but this can be misleading. If you attempt to create a queue with the same name as one that is in the tombstone window, run GetQueue to confirm that the queue creation was successful. If GetQueue returns 200 response code, your queue was successfully created with the name of the previously deleted queue. Otherwise, your queue did not successfully recreate. WARNING: Using this method may have unintended side effects if you are using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. Read [Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using this method.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+"httpMethod": "DELETE",
+"id": "cloudtasks.projects.locations.queues.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The queue name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a queue.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+"httpMethod": "GET",
+"id": "cloudtasks.projects.locations.queues.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the queue. For example: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+},
+"readMask": {
+"description": "Optional. Read mask is used for a more granular control over what the API returns. If the mask is not present all fields will be returned except [Queue.stats]. [Queue.stats] will be returned only if it was explicitly specified in the mask.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}",
+"response": {
+"$ref": "Queue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a Queue. Returns an empty policy if the resource exists and does not have a policy set. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.getIamPolicy`",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists queues. Queues are returned in lexicographical order.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues",
+"httpMethod": "GET",
+"id": "cloudtasks.projects.locations.queues.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "`filter` can be used to specify a subset of queues. Any Queue field can be used as a filter and several operators as supported. For example: `<=, <, >=, >, !=, =, :`. The filter syntax is the same as described in [Stackdriver's Advanced Logs Filters](https://cloud.google.com/logging/docs/view/advanced_filters). Sample filter \"state: PAUSED\". Note that using filters might cause fewer queues than the requested page_size to be returned.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. The maximum page size is 9800. If unspecified, the page size will be the maximum. Fewer queues than requested might be returned, even if more queues exist; use the next_page_token in the response to determine if more queues exist.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying the page of results to return. To request the first page results, page_token must be empty. To request the next page of results, page_token must be the value of next_page_token returned from the previous call to ListQueues method. It is an error to switch the value of the filter while iterating through pages.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The location name. For example: `projects/PROJECT_ID/locations/LOCATION_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"readMask": {
+"description": "Optional. Read mask is used for a more granular control over what the API returns. If the mask is not present all fields will be returned except [Queue.stats]. [Queue.stats] will be returned only if it was explicitly specified in the mask.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta3/{+parent}/queues",
+"response": {
+"$ref": "ListQueuesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a queue. This method creates the queue if it does not exist and updates the queue if it does exist. Queues created with this method allow tasks to live for a maximum of 31 days. After a task is 31 days old, the task will be deleted regardless of whether it was dispatched or not. WARNING: Using this method may have unintended side effects if you are using an App Engine `queue.yaml` or `queue.xml` file to manage your queues. Read [Overview of Queue Management and queue.yaml](https://cloud.google.com/tasks/docs/queue-yaml) before using this method.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}",
+"httpMethod": "PATCH",
+"id": "cloudtasks.projects.locations.queues.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "A mask used to specify which fields of the queue are being updated. If empty, then all fields will be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}",
+"request": {
+"$ref": "Queue"
+},
+"response": {
+"$ref": "Queue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"pause": {
+"description": "Pauses the queue. If a queue is paused then the system will stop dispatching tasks until the queue is resumed via ResumeQueue. Tasks can still be added when the queue is paused. A queue is paused if its state is PAUSED.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:pause",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.pause",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The queue name. For example: `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}:pause",
+"request": {
+"$ref": "PauseQueueRequest"
+},
+"response": {
+"$ref": "Queue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"purge": {
+"description": "Purges a queue by deleting all of its tasks. All tasks created before this method is called are permanently deleted. Purge operations can take up to one minute to take effect. Tasks might be dispatched before the purge takes effect. A purge is irreversible.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:purge",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.purge",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The queue name. For example: `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}:purge",
+"request": {
+"$ref": "PurgeQueueRequest"
+},
+"response": {
+"$ref": "Queue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"resume": {
+"description": "Resume a queue. This method resumes a queue after it has been PAUSED or DISABLED. The state of a queue is stored in the queue's state; after calling this method it will be set to RUNNING. WARNING: Resuming many high-QPS queues at the same time can lead to target overloading. If you are resuming high-QPS queues, follow the 500/50/5 pattern described in [Managing Cloud Tasks Scaling Risks](https://cloud.google.com/tasks/docs/manage-cloud-task-scaling).",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:resume",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.resume",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The queue name. For example: `projects/PROJECT_ID/location/LOCATION_ID/queues/QUEUE_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}:resume",
+"request": {
+"$ref": "ResumeQueueRequest"
+},
+"response": {
+"$ref": "Queue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy for a Queue. Replaces any existing policy. Note: The Cloud Console does not check queue-level IAM permissions yet. Project-level permissions are required to use the Cloud Console. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission on the specified resource parent: * `cloudtasks.queues.setIamPolicy`",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on a Queue. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"tasks": {
+"methods": {
+"buffer": {
+"description": "Creates and buffers a new task without the need to explicitly define a Task message. The queue must have HTTP target. To create the task with a custom ID, use the following format and set TASK_ID to your desired ID: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID:buffer To create the task with an automatically generated ID, use the following format: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks:buffer.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{taskId}:buffer",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.tasks.buffer",
+"parameterOrder": [
+"queue",
+"taskId"
+],
+"parameters": {
+"queue": {
+"description": "Required. The parent queue name. For example: projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` The queue must already exist.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+},
+"taskId": {
+"description": "Optional. Task ID for the task being created. If not provided, a random task ID is assigned to the task.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+queue}/tasks/{taskId}:buffer",
+"request": {
+"$ref": "BufferTaskRequest"
+},
+"response": {
+"$ref": "BufferTaskResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a task and adds it to a queue. Tasks cannot be updated after creation; there is no UpdateTask command. * The maximum task size is 100KB.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.tasks.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The queue name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` The queue must already exist.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+parent}/tasks",
+"request": {
+"$ref": "CreateTaskRequest"
+},
+"response": {
+"$ref": "Task"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a task. A task can be deleted if it is scheduled or dispatched. A task cannot be deleted if it has executed successfully or permanently failed.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}",
+"httpMethod": "DELETE",
+"id": "cloudtasks.projects.locations.queues.tasks.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The task name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a task.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}",
+"httpMethod": "GET",
+"id": "cloudtasks.projects.locations.queues.tasks.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The task name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+"required": true,
+"type": "string"
+},
+"responseView": {
+"description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Unspecified. Defaults to BASIC.",
+"The basic view omits fields which can be large or can contain sensitive data. This view does not include the body in AppEngineHttpRequest. Bodies are desirable to return only when needed, because they can be large and because of the sensitivity of the data that you choose to store in it.",
+"All information is returned. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Queue resource."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}",
+"response": {
+"$ref": "Task"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the tasks in a queue. By default, only the BASIC view is retrieved due to performance considerations; response_view controls the subset of information which is returned. The tasks may be returned in any order. The ordering may change at any time.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks",
+"httpMethod": "GET",
+"id": "cloudtasks.projects.locations.queues.tasks.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum page size. Fewer tasks than requested might be returned, even if more tasks exist; use next_page_token in the response to determine if more tasks exist. The maximum page size is 1000. If unspecified, the page size will be the maximum.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying the page of results to return. To request the first page results, page_token must be empty. To request the next page of results, page_token must be the value of next_page_token returned from the previous call to ListTasks method. The page token is valid for only 2 hours.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The queue name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+$",
+"required": true,
+"type": "string"
+},
+"responseView": {
+"description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Unspecified. Defaults to BASIC.",
+"The basic view omits fields which can be large or can contain sensitive data. This view does not include the body in AppEngineHttpRequest. Bodies are desirable to return only when needed, because they can be large and because of the sensitivity of the data that you choose to store in it.",
+"All information is returned. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Queue resource."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta3/{+parent}/tasks",
+"response": {
+"$ref": "ListTasksResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"run": {
+"description": "Forces a task to run now. When this method is called, Cloud Tasks will dispatch the task, even if the task is already running, the queue has reached its RateLimits or is PAUSED. This command is meant to be used for manual debugging. For example, RunTask can be used to retry a failed task after a fix has been made or to manually force a task to be dispatched now. The dispatched task is returned. That is, the task that is returned contains the status after the task is dispatched but before the task is received by its target. If Cloud Tasks receives a successful response from the task's target, then the task will be deleted; otherwise the task's schedule_time will be reset to the time that RunTask was called plus the retry delay specified in the queue's RetryConfig. RunTask returns NOT_FOUND when it is called on a task that has already succeeded or permanently failed.",
+"flatPath": "v2beta3/projects/{projectsId}/locations/{locationsId}/queues/{queuesId}/tasks/{tasksId}:run",
+"httpMethod": "POST",
+"id": "cloudtasks.projects.locations.queues.tasks.run",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The task name. For example: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queues/[^/]+/tasks/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta3/{+name}:run",
+"request": {
+"$ref": "RunTaskRequest"
+},
+"response": {
+"$ref": "Task"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241111",
+"rootUrl": "https://cloudtasks.googleapis.com/",
+"schemas": {
+"AppEngineHttpQueue": {
+"description": "App Engine HTTP queue. The task will be delivered to the App Engine application hostname specified by its AppEngineHttpQueue and AppEngineHttpRequest. The documentation for AppEngineHttpRequest explains how the task's host URL is constructed. Using AppEngineHttpQueue requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform`",
+"id": "AppEngineHttpQueue",
+"properties": {
+"appEngineRoutingOverride": {
+"$ref": "AppEngineRouting",
+"description": "Overrides for the task-level app_engine_routing. If set, `app_engine_routing_override` is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
+}
+},
+"type": "object"
+},
+"AppEngineHttpRequest": {
+"description": "App Engine HTTP request. The message defines the HTTP request that is sent to an App Engine app when the task is dispatched. Using AppEngineHttpRequest requires [`appengine.applications.get`](https://cloud.google.com/appengine/docs/admin-api/access-control) Google IAM permission for the project and the following scope: `https://www.googleapis.com/auth/cloud-platform` The task will be delivered to the App Engine app which belongs to the same project as the queue. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and how routing is affected by [dispatch files](https://cloud.google.com/appengine/docs/python/config/dispatchref). Traffic is encrypted during transport and never leaves Google datacenters. Because this traffic is carried over a communication mechanism internal to Google, you cannot explicitly set the protocol (for example, HTTP or HTTPS). The request to the handler, however, will appear to have used the HTTP protocol. The AppEngineRouting used to construct the URL that the task is delivered to can be set at the queue-level or task-level: * If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing. The `url` that the task will be sent to is: * `url =` host `+` relative_uri Tasks can be dispatched to secure app handlers, unsecure app handlers, and URIs restricted with [`login: admin`](https://cloud.google.com/appengine/docs/standard/python/config/appref). Because tasks are not run as any user, they cannot be dispatched to URIs restricted with [`login: required`](https://cloud.google.com/appengine/docs/standard/python/config/appref) Task dispatches also do not follow redirects. The task attempt has succeeded if the app's request handler returns an HTTP response code in the range [`200` - `299`]. The task attempt has failed if the app's handler returns a non-2xx response code or Cloud Tasks does not receive response before the deadline. Failed tasks will be retried according to the retry configuration. `503` (Service Unavailable) is considered an App Engine system error instead of an application error and will cause Cloud Tasks' traffic congestion control to temporarily throttle the queue's dispatches. Unlike other types of task targets, a `429` (Too Many Requests) response from an app handler does not cause traffic congestion control to throttle the queue.",
+"id": "AppEngineHttpRequest",
+"properties": {
+"appEngineRouting": {
+"$ref": "AppEngineRouting",
+"description": "Task-level setting for App Engine routing. If set, app_engine_routing_override is used for all tasks in the queue, no matter what the setting is for the task-level app_engine_routing."
+},
+"body": {
+"description": "HTTP request body. A request body is allowed only if the HTTP method is POST or PUT. It is an error to set a body on a task with an incompatible HttpMethod.",
+"format": "byte",
+"type": "string"
+},
+"headers": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. Repeated headers are not supported but a header value can contain commas. Cloud Tasks sets some headers to default values: * `User-Agent`: By default, this header is `\"AppEngine-Google; (+http://code.google.com/appengine)\"`. This header can be modified, but Cloud Tasks will append `\"AppEngine-Google; (+http://code.google.com/appengine)\"` to the modified `User-Agent`. If the task has a body, Cloud Tasks sets the following headers: * `Content-Type`: By default, the `Content-Type` header is set to `\"application/octet-stream\"`. The default can be overridden by explicitly setting `Content-Type` to a particular media type when the task is created. For example, `Content-Type` can be set to `\"application/json\"`. * `Content-Length`: This is computed by Cloud Tasks. This value is output only. It cannot be changed. The headers below cannot be set or overridden: * `Host` * `X-Google-*` * `X-AppEngine-*` In addition, Cloud Tasks sets some headers when the task is dispatched, such as headers containing information about the task; see [request headers](https://cloud.google.com/tasks/docs/creating-appengine-handlers#reading_request_headers). These headers are set only when the task is dispatched, so they are not visible when the task is returned in a Cloud Tasks response. Although there is no specific limit for the maximum number of headers or the size, there is a limit on the maximum size of the Task. For more information, see the CreateTask documentation.",
+"type": "object"
+},
+"httpMethod": {
+"description": "The HTTP method to use for the request. The default is POST. The app's request handler for the task's target URL must be able to handle HTTP requests with this http_method, otherwise the task attempt fails with error code 405 (Method Not Allowed). See [Writing a push task request handler](https://cloud.google.com/appengine/docs/java/taskqueue/push/creating-handlers#writing_a_push_task_request_handler) and the App Engine documentation for your runtime on [How Requests are Handled](https://cloud.google.com/appengine/docs/standard/python3/how-requests-are-handled).",
+"enum": [
+"HTTP_METHOD_UNSPECIFIED",
+"POST",
+"GET",
+"HEAD",
+"PUT",
+"DELETE",
+"PATCH",
+"OPTIONS"
+],
+"enumDescriptions": [
+"HTTP method unspecified",
+"HTTP POST",
+"HTTP GET",
+"HTTP HEAD",
+"HTTP PUT",
+"HTTP DELETE",
+"HTTP PATCH",
+"HTTP OPTIONS"
+],
+"type": "string"
+},
+"relativeUri": {
+"description": "The relative URI. The relative URI must begin with \"/\" and must be a valid HTTP relative URI. It can contain a path and query string arguments. If the relative URI is empty, then the root path \"/\" will be used. No spaces are allowed, and the maximum length allowed is 2083 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AppEngineRouting": {
+"description": "App Engine Routing. Defines routing characteristics specific to App Engine - service, version, and instance. For more information about services, versions, and instances see [An Overview of App Engine](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine), [Microservices Architecture on Google App Engine](https://cloud.google.com/appengine/docs/python/microservices-on-app-engine), [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed), and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
+"id": "AppEngineRouting",
+"properties": {
+"host": {
+"description": "Output only. The host that the task is sent to. The host is constructed from the domain name of the app associated with the queue's project ID (for example .appspot.com), and the service, version, and instance. Tasks which were created using the App Engine SDK might have a custom domain name. For more information, see [How Requests are Routed](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed).",
+"type": "string"
+},
+"instance": {
+"description": "App instance. By default, the task is sent to an instance which is available when the task is attempted. Requests can only be sent to a specific instance if [manual scaling is used in App Engine Standard](https://cloud.google.com/appengine/docs/python/an-overview-of-app-engine?hl=en_US#scaling_types_and_instance_classes). App Engine Flex does not support instances. For more information, see [App Engine Standard request routing](https://cloud.google.com/appengine/docs/standard/python/how-requests-are-routed) and [App Engine Flex request routing](https://cloud.google.com/appengine/docs/flexible/python/how-requests-are-routed).",
+"type": "string"
+},
+"service": {
+"description": "App service. By default, the task is sent to the service which is the default service when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string.",
+"type": "string"
+},
+"version": {
+"description": "App version. By default, the task is sent to the version which is the default version when the task is attempted. For some queues or tasks which were created using the App Engine Task Queue API, host is not parsable into service, version, and instance. For example, some tasks which were created using the App Engine SDK use a custom domain name; custom domains are not parsed by Cloud Tasks. If host is not parsable, then service, version, and instance are the empty string.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Attempt": {
+"description": "The status of a task attempt.",
+"id": "Attempt",
+"properties": {
+"dispatchTime": {
+"description": "Output only. The time that this attempt was dispatched. `dispatch_time` will be truncated to the nearest microsecond.",
+"format": "google-datetime",
+"type": "string"
+},
+"responseStatus": {
+"$ref": "Status",
+"description": "Output only. The response from the worker for this attempt. If `response_time` is unset, then the task has not been attempted or is currently running and the `response_status` field is meaningless."
+},
+"responseTime": {
+"description": "Output only. The time that this attempt response was received. `response_time` will be truncated to the nearest microsecond.",
+"format": "google-datetime",
+"type": "string"
+},
+"scheduleTime": {
+"description": "Output only. The time that this attempt was scheduled. `schedule_time` will be truncated to the nearest microsecond.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BufferTaskRequest": {
+"description": "Request message for BufferTask.",
+"id": "BufferTaskRequest",
+"properties": {
+"body": {
+"$ref": "HttpBody",
+"description": "Optional. Body of the HTTP request. The body can take any generic value. The value is written to the HttpRequest of the [Task]."
+}
+},
+"type": "object"
+},
+"BufferTaskResponse": {
+"description": "Response message for BufferTask.",
+"id": "BufferTaskResponse",
+"properties": {
+"task": {
+"$ref": "Task",
+"description": "The created task."
+}
+},
+"type": "object"
+},
+"CmekConfig": {
+"description": "Describes the customer-managed encryption key (CMEK) configuration associated with a project and location.",
+"id": "CmekConfig",
+"properties": {
+"kmsKey": {
+"description": "Resource name of the Cloud KMS key, of the form `projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KEY_RING_ID/cryptoKeys/KEY_ID`, that will be used to encrypt the Queues & Tasks in the region. Setting this as blank will turn off CMEK encryption.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The config resource name which includes the project and location and must end in 'cmekConfig', in the format projects/PROJECT_ID/locations/LOCATION_ID/cmekConfig`",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateTaskRequest": {
+"description": "Request message for CreateTask.",
+"id": "CreateTaskRequest",
+"properties": {
+"responseView": {
+"description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Unspecified. Defaults to BASIC.",
+"The basic view omits fields which can be large or can contain sensitive data. This view does not include the body in AppEngineHttpRequest. Bodies are desirable to return only when needed, because they can be large and because of the sensitivity of the data that you choose to store in it.",
+"All information is returned. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Queue resource."
+],
+"type": "string"
+},
+"task": {
+"$ref": "Task",
+"description": "Required. The task to add. Task names have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID`. The user can optionally specify a task name. If a name is not specified then the system will generate a random unique task id, which will be set in the task returned in the response. If schedule_time is not set or is in the past then Cloud Tasks will set it to the current time. Task De-duplication: Explicitly specifying a task ID enables task de-duplication. If a task's ID is identical to that of an existing task or a task that was deleted or executed recently then the call will fail with ALREADY_EXISTS. The IDs of deleted tasks are not immediately available for reuse. It can take up to 4 hours (or 9 days if the task's queue was created using a queue.yaml or queue.xml) for the task ID to be released and made available again. Because there is an extra lookup cost to identify duplicate task names, these CreateTask calls have significantly increased latency. Using hashed strings for the task id or for the prefix of the task id is recommended. Choosing task ids that are sequential or have sequential prefixes, for example using a timestamp, causes an increase in latency and error rates in all task commands. The infrastructure relies on an approximately uniform distribution of task ids to store and serve tasks efficiently."
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetIamPolicyRequest": {
+"description": "Request message for `GetIamPolicy` method.",
+"id": "GetIamPolicyRequest",
+"properties": {
+"options": {
+"$ref": "GetPolicyOptions",
+"description": "OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`."
+}
+},
+"type": "object"
+},
+"GetPolicyOptions": {
+"description": "Encapsulates settings provided to GetIamPolicy.",
+"id": "GetPolicyOptions",
+"properties": {
+"requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Header": {
+"description": "Defines a header message. A header can have a key and a value.",
+"id": "Header",
+"properties": {
+"key": {
+"description": "The Key of the header.",
+"type": "string"
+},
+"value": {
+"description": "The Value of the header.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HeaderOverride": {
+"description": "Wraps the Header object.",
+"id": "HeaderOverride",
+"properties": {
+"header": {
+"$ref": "Header",
+"description": "Header embodying a key and a value. Do not put business sensitive or personally identifying data in the HTTP Header Override Configuration or other similar fields in accordance with Section 12 (Resource Fields) of the [Service Specific Terms](https://cloud.google.com/terms/service-terms)."
+}
+},
+"type": "object"
+},
+"HttpBody": {
+"description": "Message that represents an arbitrary HTTP body. It should only be used for payload formats that can't be represented as JSON, such as raw binary or an HTML page. This message can be used both in streaming and non-streaming API methods in the request as well as the response. It can be used as a top-level request field, which is convenient if one wants to extract parameters from either the URL or HTTP template into the request fields and also want access to the raw HTTP body. Example: message GetResourceRequest { // A unique request id. string request_id = 1; // The raw HTTP body is bound to this field. google.api.HttpBody http_body = 2; } service ResourceService { rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); } Example with streaming methods: service CaldavService { rpc GetCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); } Use of this type only changes how the request and response bodies are handled, all other features will continue to work unchanged.",
+"id": "HttpBody",
+"properties": {
+"contentType": {
+"description": "The HTTP Content-Type header value specifying the content type of the body.",
+"type": "string"
+},
+"data": {
+"description": "The HTTP request/response body as raw binary.",
+"format": "byte",
+"type": "string"
+},
+"extensions": {
+"description": "Application specific response metadata. Must be set in the first response for streaming APIs.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"HttpRequest": {
+"description": "HTTP request. The task will be pushed to the worker as an HTTP request. If the worker or the redirected worker acknowledges the task by returning a successful HTTP response code ([`200` - `299`]), the task will be removed from the queue. If any other HTTP response code is returned or no response is received, the task will be retried according to the following: * User-specified throttling: retry configuration, rate limits, and the queue's state. * System throttling: To prevent the worker from overloading, Cloud Tasks may temporarily reduce the queue's effective rate. User-specified settings will not be changed. System throttling happens because: * Cloud Tasks backs off on all errors. Normally the backoff specified in rate limits will be used. But if the worker returns `429` (Too Many Requests), `503` (Service Unavailable), or the rate of errors is high, Cloud Tasks will use a higher backoff rate. The retry specified in the `Retry-After` HTTP response header is considered. * To prevent traffic spikes and to smooth sudden increases in traffic, dispatches ramp up slowly when the queue is newly created or idle and if large numbers of tasks suddenly become available to dispatch (due to spikes in create task rates, the queue being unpaused, or many tasks that are scheduled at the same time).",
+"id": "HttpRequest",
+"properties": {
+"body": {
+"description": "HTTP request body. A request body is allowed only if the HTTP method is POST, PUT, or PATCH. It is an error to set body on a task with an incompatible HttpMethod.",
+"format": "byte",
+"type": "string"
+},
+"headers": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "HTTP request headers. This map contains the header field names and values. Headers can be set when the task is created. These headers represent a subset of the headers that will accompany the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Any header that is prefixed with \"X-CloudTasks-\" will be treated as service header. Service headers define properties of the task and are predefined in Cloud Tasks. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. * `X-Google-*`: Google use only. * `X-AppEngine-*`: Google use only. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example, `Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB.",
+"type": "object"
+},
+"httpMethod": {
+"description": "The HTTP method to use for the request. The default is POST.",
+"enum": [
+"HTTP_METHOD_UNSPECIFIED",
+"POST",
+"GET",
+"HEAD",
+"PUT",
+"DELETE",
+"PATCH",
+"OPTIONS"
+],
+"enumDescriptions": [
+"HTTP method unspecified",
+"HTTP POST",
+"HTTP GET",
+"HTTP HEAD",
+"HTTP PUT",
+"HTTP DELETE",
+"HTTP PATCH",
+"HTTP OPTIONS"
+],
+"type": "string"
+},
+"oauthToken": {
+"$ref": "OAuthToken",
+"description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
+},
+"oidcToken": {
+"$ref": "OidcToken",
+"description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself."
+},
+"url": {
+"description": "Required. The full url path that the request will be sent to. This string must begin with either \"http://\" or \"https://\". Some examples are: `http://acme.com` and `https://acme.com/sales:8080`. Cloud Tasks will encode some characters for safety and compatibility. The maximum allowed URL length is 2083 characters after encoding. The `Location` header response from a redirect response [`300` - `399`] may be followed. The redirect is not counted as a separate attempt.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpTarget": {
+"description": "HTTP target. When specified as a Queue, all the tasks with [HttpRequest] will be overridden according to the target.",
+"id": "HttpTarget",
+"properties": {
+"headerOverrides": {
+"description": "HTTP target headers. This map contains the header field names and values. Headers will be set when running the CreateTask and/or BufferTask. These headers represent a subset of the headers that will be configured for the task's HTTP request. Some HTTP request headers will be ignored or replaced. A partial list of headers that will be ignored or replaced is: * Several predefined headers, prefixed with \"X-CloudTasks-\", can be used to define properties of the task. * Host: This will be computed by Cloud Tasks and derived from HttpRequest.url. * Content-Length: This will be computed by Cloud Tasks. `Content-Type` won't be set by Cloud Tasks. You can explicitly set `Content-Type` to a media type when the task is created. For example,`Content-Type` can be set to `\"application/octet-stream\"` or `\"application/json\"`. The default value is set to `\"application/json\"`. * User-Agent: This will be set to `\"Google-Cloud-Tasks\"`. Headers which can have multiple values (according to RFC2616) can be specified using comma-separated values. The size of the headers must be less than 80KB. Queue-level headers to override headers of all the tasks in the queue. Do not put business sensitive or personally identifying data in the HTTP Header Override Configuration or other similar fields in accordance with Section 12 (Resource Fields) of the [Service Specific Terms](https://cloud.google.com/terms/service-terms).",
+"items": {
+"$ref": "HeaderOverride"
+},
+"type": "array"
+},
+"httpMethod": {
+"description": "The HTTP method to use for the request. When specified, it overrides HttpRequest.http_method for the task. Note that if the value is set to HttpMethod.GET the HttpRequest.body of the task will be ignored at execution time.",
+"enum": [
+"HTTP_METHOD_UNSPECIFIED",
+"POST",
+"GET",
+"HEAD",
+"PUT",
+"DELETE",
+"PATCH",
+"OPTIONS"
+],
+"enumDescriptions": [
+"HTTP method unspecified",
+"HTTP POST",
+"HTTP GET",
+"HTTP HEAD",
+"HTTP PUT",
+"HTTP DELETE",
+"HTTP PATCH",
+"HTTP OPTIONS"
+],
+"type": "string"
+},
+"oauthToken": {
+"$ref": "OAuthToken",
+"description": "If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) is generated and attached as the `Authorization` header in the HTTP request. This type of authorization should generally be used only when calling Google APIs hosted on *.googleapis.com. Note that both the service account email and the scope MUST be specified when using the queue-level authorization override."
+},
+"oidcToken": {
+"$ref": "OidcToken",
+"description": "If specified, an [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect) token is generated and attached as an `Authorization` header in the HTTP request. This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself. Note that both the service account email and the audience MUST be specified when using the queue-level authorization override."
+},
+"uriOverride": {
+"$ref": "UriOverride",
+"description": "URI override. When specified, overrides the execution URI for all the tasks in the queue."
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListQueuesResponse": {
+"description": "Response message for ListQueues.",
+"id": "ListQueuesResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token to retrieve next page of results. To return the next page of results, call ListQueues with this value as the page_token. If the next_page_token is empty, there are no more results. The page token is valid for only 2 hours.",
+"type": "string"
+},
+"queues": {
+"description": "The list of queues.",
+"items": {
+"$ref": "Queue"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTasksResponse": {
+"description": "Response message for listing tasks using ListTasks.",
+"id": "ListTasksResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token to retrieve next page of results. To return the next page of results, call ListTasks with this value as the page_token. If the next_page_token is empty, there are no more results.",
+"type": "string"
+},
+"tasks": {
+"description": "The list of tasks.",
+"items": {
+"$ref": "Task"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OAuthToken": {
+"description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
+"id": "OAuthToken",
+"properties": {
+"scope": {
+"description": "OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used.",
+"type": "string"
+},
+"serviceAccountEmail": {
+"description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OAuth token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OidcToken": {
+"description": "Contains information needed for generating an [OpenID Connect token](https://developers.google.com/identity/protocols/OpenIDConnect). This type of authorization can be used for many scenarios, including calling Cloud Run, or endpoints where you intend to validate the token yourself.",
+"id": "OidcToken",
+"properties": {
+"audience": {
+"description": "Audience to be used when generating OIDC token. If not specified, the URI specified in target will be used.",
+"type": "string"
+},
+"serviceAccountEmail": {
+"description": "[Service account email](https://cloud.google.com/iam/docs/service-accounts) to be used for generating OIDC token. The service account must be within the same project as the queue. The caller must have iam.serviceAccounts.actAs permission for the service account.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PathOverride": {
+"description": "PathOverride. Path message defines path override for HTTP targets.",
+"id": "PathOverride",
+"properties": {
+"path": {
+"description": "The URI path (e.g., /users/1234). Default is an empty string.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PauseQueueRequest": {
+"description": "Request message for PauseQueue.",
+"id": "PauseQueueRequest",
+"properties": {},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"PullMessage": {
+"description": "Pull Message. This proto can only be used for tasks in a queue which has PULL type. It currently exists for backwards compatibility with the App Engine Task Queue SDK. This message type maybe returned with methods list and get, when the response view is FULL.",
+"id": "PullMessage",
+"properties": {
+"payload": {
+"description": "A data payload consumed by the worker to execute the task.",
+"format": "byte",
+"type": "string"
+},
+"tag": {
+"description": "The tasks's tag. The tag is less than 500 characters. SDK compatibility: Although the SDK allows tags to be either string or [bytes](https://cloud.google.com/appengine/docs/standard/java/javadoc/com/google/appengine/api/taskqueue/TaskOptions.html#tag-byte:A-), only UTF-8 encoded tags can be used in Cloud Tasks. If a tag isn't UTF-8 encoded, the tag will be empty when the task is returned by Cloud Tasks.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PurgeQueueRequest": {
+"description": "Request message for PurgeQueue.",
+"id": "PurgeQueueRequest",
+"properties": {},
+"type": "object"
+},
+"QueryOverride": {
+"description": "QueryOverride. Query message defines query override for HTTP targets.",
+"id": "QueryOverride",
+"properties": {
+"queryParams": {
+"description": "The query parameters (e.g., qparam1=123&qparam2=456). Default is an empty string.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Queue": {
+"description": "A queue is a container of related tasks. Queues are configured to manage how those tasks are dispatched. Configurable properties include rate limits, retry options, queue types, and others.",
+"id": "Queue",
+"properties": {
+"appEngineHttpQueue": {
+"$ref": "AppEngineHttpQueue",
+"description": "AppEngineHttpQueue settings apply only to App Engine tasks in this queue. Http tasks are not affected by this proto."
+},
+"httpTarget": {
+"$ref": "HttpTarget",
+"description": "Modifies HTTP target for HTTP tasks."
+},
+"name": {
+"description": "Caller-specified and required in CreateQueue, after which it becomes output only. The queue name. The queue name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the queue's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters.",
+"type": "string"
+},
+"purgeTime": {
+"description": "Output only. The last time this queue was purged. All tasks that were created before this time were purged. A queue can be purged using PurgeQueue, the [App Engine Task Queue SDK, or the Cloud Console](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/deleting-tasks-and-queues#purging_all_tasks_from_a_queue). Purge time will be truncated to the nearest microsecond. Purge time will be unset if the queue has never been purged.",
+"format": "google-datetime",
+"type": "string"
+},
+"rateLimits": {
+"$ref": "RateLimits",
+"description": "Rate limits for task dispatches. rate_limits and retry_config are related because they both control task attempts. However they control task attempts in different ways: * rate_limits controls the total rate of dispatches from a queue (i.e. all traffic dispatched from the queue, regardless of whether the dispatch is from a first attempt or a retry). * retry_config controls what happens to particular a task after its first attempt fails. That is, retry_config controls task retries (the second attempt, third attempt, etc). The queue's actual dispatch rate is the result of: * Number of tasks in the queue * User-specified throttling: rate_limits, retry_config, and the queue's state. * System throttling due to `429` (Too Many Requests) or `503` (Service Unavailable) responses from the worker, high error rates, or to smooth sudden large traffic spikes."
+},
+"retryConfig": {
+"$ref": "RetryConfig",
+"description": "Settings that determine the retry behavior. * For tasks created using Cloud Tasks: the queue-level retry settings apply to all tasks in the queue that were created using Cloud Tasks. Retry settings cannot be set on individual tasks. * For tasks created using the App Engine SDK: the queue-level retry settings apply to all tasks in the queue which do not have retry settings explicitly set on the task and were created by the App Engine SDK. See [App Engine documentation](https://cloud.google.com/appengine/docs/standard/python/taskqueue/push/retrying-tasks)."
+},
+"stackdriverLoggingConfig": {
+"$ref": "StackdriverLoggingConfig",
+"description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/). If this field is unset, then no logs are written."
+},
+"state": {
+"description": "Output only. The state of the queue. `state` can only be changed by called PauseQueue, ResumeQueue, or uploading [queue.yaml/xml](https://cloud.google.com/appengine/docs/python/config/queueref). UpdateQueue cannot be used to change `state`.",
+"enum": [
+"STATE_UNSPECIFIED",
+"RUNNING",
+"PAUSED",
+"DISABLED"
+],
+"enumDescriptions": [
+"Unspecified state.",
+"The queue is running. Tasks can be dispatched. If the queue was created using Cloud Tasks and the queue has had no activity (method calls or task dispatches) for 30 days, the queue may take a few minutes to re-activate. Some method calls may return NOT_FOUND and tasks may not be dispatched for a few minutes until the queue has been re-activated.",
+"Tasks are paused by the user. If the queue is paused then Cloud Tasks will stop delivering tasks from it, but more tasks can still be added to it by the user.",
+"The queue is disabled. A queue becomes `DISABLED` when [queue.yaml](https://cloud.google.com/appengine/docs/python/config/queueref) or [queue.xml](https://cloud.google.com/appengine/docs/standard/java/config/queueref) is uploaded which does not contain the queue. You cannot directly disable a queue. When a queue is disabled, tasks can still be added to a queue but the tasks are not dispatched. To permanently delete this queue and all of its tasks, call DeleteQueue."
+],
+"type": "string"
+},
+"stats": {
+"$ref": "QueueStats",
+"description": "Output only. The realtime, informational statistics for a queue. In order to receive the statistics the caller should include this field in the FieldMask.",
+"readOnly": true
+},
+"taskTtl": {
+"description": "The maximum amount of time that a task will be retained in this queue. After a task has lived for `task_ttl`, the task will be deleted regardless of whether it was dispatched or not. The minimum value is 10 days. The maximum value is 10 years. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). Queues created by Cloud Tasks have a default `task_ttl` of 31 days. . Queues created by queue.yaml/xml have a fixed `task_ttl` of the maximum duration, because there is a [storage quota](https://cloud.google.com/appengine/quotas#Task_Queue) for these queues.",
+"format": "google-duration",
+"type": "string"
+},
+"tombstoneTtl": {
+"description": "The task tombstone time to live (TTL). After a task is deleted or executed, the task's tombstone is retained for the length of time specified by `tombstone_ttl`. The tombstone is used by task de-duplication; another task with the same name can't be created until the tombstone has expired. For more information about task de-duplication, see the documentation for CreateTaskRequest. The minimum value is 1 hour. The maximum value is 9 days. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). Queues created by Cloud Tasks have a default `tombstone_ttl` of 1 hour.",
+"format": "google-duration",
+"type": "string"
+},
+"type": {
+"description": "Immutable. The type of a queue (push or pull). `Queue.type` is an immutable property of the queue that is set at the queue creation time. When left unspecified, the default value of `PUSH` is selected.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"PULL",
+"PUSH"
+],
+"enumDescriptions": [
+"Default value.",
+"A pull queue.",
+"A push queue."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"QueueStats": {
+"description": "Statistics for a queue.",
+"id": "QueueStats",
+"properties": {
+"concurrentDispatchesCount": {
+"description": "Output only. The number of requests that the queue has dispatched but has not received a reply for yet.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"effectiveExecutionRate": {
+"description": "Output only. The current maximum number of tasks per second executed by the queue. The maximum value of this variable is controlled by the RateLimits of the Queue. However, this value could be less to avoid overloading the endpoints tasks in the queue are targeting.",
+"format": "double",
+"readOnly": true,
+"type": "number"
+},
+"executedLastMinuteCount": {
+"description": "Output only. The number of tasks that the queue has dispatched and received a reply for during the last minute. This variable counts both successful and non-successful executions.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"oldestEstimatedArrivalTime": {
+"description": "Output only. An estimation of the nearest time in the future where a task in the queue is scheduled to be executed.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"tasksCount": {
+"description": "Output only. An estimation of the number of tasks in the queue, that is, the tasks in the queue that haven't been executed, the tasks in the queue which the queue has dispatched but has not yet received a reply for, and the failed tasks that the queue is retrying.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"RateLimits": {
+"description": "Rate limits. This message determines the maximum rate that tasks can be dispatched by a queue, regardless of whether the dispatch is a first task attempt or a retry. Note: The debugging command, RunTask, will run a task even if the queue has reached its RateLimits.",
+"id": "RateLimits",
+"properties": {
+"maxBurstSize": {
+"description": "The max burst size. Max burst size limits how fast tasks in queue are processed when many tasks are in the queue and the rate is high. This field allows the queue to have a high rate so processing starts shortly after a task is enqueued, but still limits resource usage when many tasks are enqueued in a short period of time. The [token bucket](https://wikipedia.org/wiki/Token_Bucket) algorithm is used to control the rate of task dispatches. Each queue has a token bucket that holds tokens, up to the maximum specified by `max_burst_size`. Each time a task is dispatched, a token is removed from the bucket. Tasks will be dispatched until the queue's bucket runs out of tokens. The bucket will be continuously refilled with new tokens based on max_dispatches_per_second. The default value of `max_burst_size` is picked by Cloud Tasks based on the value of max_dispatches_per_second. The maximum value of `max_burst_size` is 500. For App Engine queues that were created or updated using `queue.yaml/xml`, `max_burst_size` is equal to [bucket_size](https://cloud.google.com/appengine/docs/standard/python/config/queueref#bucket_size). If UpdateQueue is called on a queue without explicitly setting a value for `max_burst_size`, `max_burst_size` value will get updated if UpdateQueue is updating max_dispatches_per_second. ",
+"format": "int32",
+"type": "integer"
+},
+"maxConcurrentDispatches": {
+"description": "The maximum number of concurrent tasks that Cloud Tasks allows to be dispatched for this queue. After this threshold has been reached, Cloud Tasks stops dispatching tasks until the number of concurrent requests decreases. If unspecified when the queue is created, Cloud Tasks will pick the default. The maximum allowed value is 5,000. This field has the same meaning as [max_concurrent_requests in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#max_concurrent_requests).",
+"format": "int32",
+"type": "integer"
+},
+"maxDispatchesPerSecond": {
+"description": "The maximum rate at which tasks are dispatched from this queue. If unspecified when the queue is created, Cloud Tasks will pick the default. * For App Engine queues, the maximum allowed value is 500. This field has the same meaning as [rate in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#rate).",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"ResumeQueueRequest": {
+"description": "Request message for ResumeQueue.",
+"id": "ResumeQueueRequest",
+"properties": {},
+"type": "object"
+},
+"RetryConfig": {
+"description": "Retry config. These settings determine when a failed task attempt is retried.",
+"id": "RetryConfig",
+"properties": {
+"maxAttempts": {
+"description": "Number of attempts per task. Cloud Tasks will attempt the task `max_attempts` times (that is, if the first attempt fails, then there will be `max_attempts - 1` retries). Must be >= -1. If unspecified when the queue is created, Cloud Tasks will pick the default. -1 indicates unlimited attempts. This field has the same meaning as [task_retry_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+"format": "int32",
+"type": "integer"
+},
+"maxBackoff": {
+"description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_backoff` will be truncated to the nearest second. This field has the same meaning as [max_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+"format": "google-duration",
+"type": "string"
+},
+"maxDoublings": {
+"description": "The time between retries will double `max_doublings` times. A task's retry interval starts at min_backoff, then doubles `max_doublings` times, then increases linearly, and finally retries at intervals of max_backoff up to max_attempts times. For example, if min_backoff is 10s, max_backoff is 300s, and `max_doublings` is 3, then the a task will first be retried in 10s. The retry interval will double three times, and then increase linearly by 2^3 * 10s. Finally, the task will retry at intervals of max_backoff until the task has been attempted max_attempts times. Thus, the requests will retry at 10s, 20s, 40s, 80s, 160s, 240s, 300s, 300s, .... If unspecified when the queue is created, Cloud Tasks will pick the default. This field has the same meaning as [max_doublings in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+"format": "int32",
+"type": "integer"
+},
+"maxRetryDuration": {
+"description": "If positive, `max_retry_duration` specifies the time limit for retrying a failed task, measured from when the task was first attempted. Once `max_retry_duration` time has passed *and* the task has been attempted max_attempts times, no further attempts will be made and the task will be deleted. If zero, then the task age is unlimited. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For the maximum possible value or the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `max_retry_duration` will be truncated to the nearest second. This field has the same meaning as [task_age_limit in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+"format": "google-duration",
+"type": "string"
+},
+"minBackoff": {
+"description": "A task will be scheduled for retry between min_backoff and max_backoff duration after it fails, if the queue's RetryConfig specifies that the task should be retried. If unspecified when the queue is created, Cloud Tasks will pick the default. The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `min_backoff` will be truncated to the nearest second. This field has the same meaning as [min_backoff_seconds in queue.yaml/xml](https://cloud.google.com/appengine/docs/standard/python/config/queueref#retry_parameters).",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RunTaskRequest": {
+"description": "Request message for forcing a task to run now using RunTask.",
+"id": "RunTaskRequest",
+"properties": {
+"responseView": {
+"description": "The response_view specifies which subset of the Task will be returned. By default response_view is BASIC; not all information is retrieved by default because some data, such as payloads, might be desirable to return only when needed because of its large size or because of the sensitivity of data that it contains. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Task resource.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Unspecified. Defaults to BASIC.",
+"The basic view omits fields which can be large or can contain sensitive data. This view does not include the body in AppEngineHttpRequest. Bodies are desirable to return only when needed, because they can be large and because of the sensitivity of the data that you choose to store in it.",
+"All information is returned. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Queue resource."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+}
+},
+"type": "object"
+},
+"StackdriverLoggingConfig": {
+"description": "Configuration options for writing logs to [Stackdriver Logging](https://cloud.google.com/logging/docs/).",
+"id": "StackdriverLoggingConfig",
+"properties": {
+"samplingRatio": {
+"description": "Specifies the fraction of operations to write to [Stackdriver Logging](https://cloud.google.com/logging/docs/). This field may contain any value between 0.0 and 1.0, inclusive. 0.0 is the default and means that no operations are logged.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Task": {
+"description": "A unit of scheduled work.",
+"id": "Task",
+"properties": {
+"appEngineHttpRequest": {
+"$ref": "AppEngineHttpRequest",
+"description": "HTTP request that is sent to the App Engine app handler. An App Engine task is a task that has AppEngineHttpRequest set."
+},
+"createTime": {
+"description": "Output only. The time that the task was created. `create_time` will be truncated to the nearest second.",
+"format": "google-datetime",
+"type": "string"
+},
+"dispatchCount": {
+"description": "Output only. The number of attempts dispatched. This count includes attempts which have been dispatched but haven't received a response.",
+"format": "int32",
+"type": "integer"
+},
+"dispatchDeadline": {
+"description": "The deadline for requests sent to the worker. If the worker does not respond by this deadline then the request is cancelled and the attempt is marked as a `DEADLINE_EXCEEDED` failure. Cloud Tasks will retry the task according to the RetryConfig. Note that when the request is cancelled, Cloud Tasks will stop listening for the response, but whether the worker stops processing depends on the worker. For example, if the worker is stuck, it may not react to cancelled requests. The default and maximum values depend on the type of request: * For HTTP tasks, the default is 10 minutes. The deadline must be in the interval [15 seconds, 30 minutes]. * For App Engine tasks, 0 indicates that the request has the default deadline. The default deadline depends on the [scaling type](https://cloud.google.com/appengine/docs/standard/go/how-instances-are-managed#instance_scaling) of the service: 10 minutes for standard apps with automatic scaling, 24 hours for standard apps with manual and basic scaling, and 60 minutes for flex apps. If the request deadline is set, it must be in the interval [15 seconds, 24 hours 15 seconds]. Regardless of the task's `dispatch_deadline`, the app handler will not run for longer than than the service's timeout. We recommend setting the `dispatch_deadline` to at most a few seconds more than the app handler's timeout. For more information see [Timeouts](https://cloud.google.com/tasks/docs/creating-appengine-handlers#timeouts). The value must be given as a string that indicates the length of time (in seconds) followed by `s` (for \"seconds\"). For more information on the format, see the documentation for [Duration](https://protobuf.dev/reference/protobuf/google.protobuf/#duration). `dispatch_deadline` will be truncated to the nearest millisecond. The deadline is an approximate deadline.",
+"format": "google-duration",
+"type": "string"
+},
+"firstAttempt": {
+"$ref": "Attempt",
+"description": "Output only. The status of the task's first attempt. Only dispatch_time will be set. The other Attempt information is not retained by Cloud Tasks."
+},
+"httpRequest": {
+"$ref": "HttpRequest",
+"description": "HTTP request that is sent to the task's target. An HTTP task is a task that has HttpRequest set."
+},
+"lastAttempt": {
+"$ref": "Attempt",
+"description": "Output only. The status of the task's last attempt."
+},
+"name": {
+"description": "Optionally caller-specified in CreateTask. The task name. The task name must have the following format: `projects/PROJECT_ID/locations/LOCATION_ID/queues/QUEUE_ID/tasks/TASK_ID` * `PROJECT_ID` can contain letters ([A-Za-z]), numbers ([0-9]), hyphens (-), colons (:), or periods (.). For more information, see [Identifying projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects#identifying_projects) * `LOCATION_ID` is the canonical ID for the task's location. The list of available locations can be obtained by calling ListLocations. For more information, see https://cloud.google.com/about/locations/. * `QUEUE_ID` can contain letters ([A-Za-z]), numbers ([0-9]), or hyphens (-). The maximum length is 100 characters. * `TASK_ID` can contain only letters ([A-Za-z]), numbers ([0-9]), hyphens (-), or underscores (_). The maximum length is 500 characters.",
+"type": "string"
+},
+"pullMessage": {
+"$ref": "PullMessage",
+"description": "Pull Message contained in a task in a PULL queue type. This payload type cannot be explicitly set through Cloud Tasks API. Its purpose, currently is to provide backward compatibility with App Engine Task Queue [pull](https://cloud.google.com/appengine/docs/standard/java/taskqueue/pull/) queues to provide a way to inspect contents of pull tasks through the CloudTasks.GetTask."
+},
+"responseCount": {
+"description": "Output only. The number of attempts which have received a response.",
+"format": "int32",
+"type": "integer"
+},
+"scheduleTime": {
+"description": "The time when the task is scheduled to be attempted. For App Engine queues, this is when the task will be attempted or retried. `schedule_time` will be truncated to the nearest microsecond.",
+"format": "google-datetime",
+"type": "string"
+},
+"view": {
+"description": "Output only. The view specifies which subset of the Task has been returned.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"Unspecified. Defaults to BASIC.",
+"The basic view omits fields which can be large or can contain sensitive data. This view does not include the body in AppEngineHttpRequest. Bodies are desirable to return only when needed, because they can be large and because of the sensitivity of the data that you choose to store in it.",
+"All information is returned. Authorization for FULL requires `cloudtasks.tasks.fullView` [Google IAM](https://cloud.google.com/iam/) permission on the Queue resource."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"UriOverride": {
+"description": "URI Override. When specified, all the HTTP tasks inside the queue will be partially or fully overridden depending on the configured values.",
+"id": "UriOverride",
+"properties": {
+"host": {
+"description": "Host override. When specified, replaces the host part of the task URL. For example, if the task URL is \"https://www.google.com,\" and host value is set to \"example.net\", the overridden URI will be changed to \"https://example.net.\" Host value cannot be an empty string (INVALID_ARGUMENT).",
+"type": "string"
+},
+"pathOverride": {
+"$ref": "PathOverride",
+"description": "URI path. When specified, replaces the existing path of the task URL. Setting the path value to an empty string clears the URI path segment."
+},
+"port": {
+"description": "Port override. When specified, replaces the port part of the task URI. For instance, for a URI http://www.google.com/foo and port=123, the overridden URI becomes http://www.google.com:123/foo. Note that the port value must be a positive integer. Setting the port to 0 (Zero) clears the URI port.",
+"format": "int64",
+"type": "string"
+},
+"queryOverride": {
+"$ref": "QueryOverride",
+"description": "URI Query. When specified, replaces the query part of the task URI. Setting the query value to an empty string clears the URI query segment."
+},
+"scheme": {
+"description": "Scheme override. When specified, the task URI scheme is replaced by the provided value (HTTP or HTTPS).",
+"enum": [
+"SCHEME_UNSPECIFIED",
+"HTTP",
+"HTTPS"
+],
+"enumDescriptions": [
+"Scheme unspecified. Defaults to HTTPS.",
+"Convert the scheme to HTTP, e.g., https://www.google.ca will change to http://www.google.ca.",
+"Convert the scheme to HTTPS, e.g., http://www.google.ca will change to https://www.google.ca."
+],
+"type": "string"
+},
+"uriOverrideEnforceMode": {
+"description": "URI Override Enforce Mode When specified, determines the Target UriOverride mode. If not specified, it defaults to ALWAYS.",
+"enum": [
+"URI_OVERRIDE_ENFORCE_MODE_UNSPECIFIED",
+"IF_NOT_EXISTS",
+"ALWAYS"
+],
+"enumDescriptions": [
+"OverrideMode Unspecified. Defaults to ALWAYS.",
+"In the IF_NOT_EXISTS mode, queue-level configuration is only applied where task-level configuration does not exist.",
+"In the ALWAYS mode, queue-level configuration overrides all task-level configuration"
+],
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Tasks API",
+"version": "v2beta3",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/connectors.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/connectors.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..1d95cb56733aaf0fcac54133997722ddd64e3feb
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/connectors.v1.json
@@ -0,0 +1,8141 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://connectors.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Connectors",
+"description": "Enables users to create and manage connections to Google Cloud services and third-party business applications using the Connectors interface.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/apigee/docs/api-platform/connectors/about-connectors",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "connectors:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://connectors.mtls.googleapis.com/",
+"name": "connectors",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getRegionalSettings": {
+"description": "GetRegionalSettings gets settings of a region. RegionalSettings is a singleton resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/regionalSettings",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.getRegionalSettings",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Regional Settings.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/regionalSettings$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "RegionalSettings"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getRuntimeConfig": {
+"description": "Gets the runtimeConfig of a location. RuntimeConfig is a singleton resource for each location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/runtimeConfig",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.getRuntimeConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/runtimeConfig`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/runtimeConfig$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "RuntimeConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updateRegionalSettings": {
+"description": "Update the settings of a region.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/regionalSettings",
+"httpMethod": "PATCH",
+"id": "connectors.projects.locations.updateRegionalSettings",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Resource name of the Connection. Format: projects/{project}/locations/{location}/regionalSettings",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/regionalSettings$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "RegionalSettings"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"connections": {
+"methods": {
+"create": {
+"description": "Creates a new Connection in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"connectionId": {
+"description": "Required. Identifier to assign to the Connection. Must be unique within scope of the parent resource.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the Connection, of the form: `projects/*/locations/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/connections",
+"request": {
+"$ref": "Connection"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Connection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}",
+"httpMethod": "DELETE",
+"id": "connectors.projects.locations.connections.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/connections/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Connection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/connections/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Specifies which fields of the Connection are returned in the response. Defaults to `BASIC` view.",
+"enum": [
+"CONNECTION_VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"CONNECTION_UNSPECIFIED.",
+"Do not include runtime required configs.",
+"Include runtime required configs."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Connection"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getConnectionSchemaMetadata": {
+"description": "Gets schema metadata of a connection. SchemaMetadata is a singleton resource for each connection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/connectionSchemaMetadata",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.getConnectionSchemaMetadata",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Connection name Format: projects/{project}/locations/{location}/connections/{connection}/connectionSchemaMetadata",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/connectionSchemaMetadata$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "ConnectionSchemaMetadata"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Connections in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Order by parameters.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the Connection, of the form: `projects/*/locations/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Specifies which fields of the Connection are returned in the response. Defaults to `BASIC` view.",
+"enum": [
+"CONNECTION_VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"CONNECTION_UNSPECIFIED.",
+"Do not include runtime required configs.",
+"Include runtime required configs."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/connections",
+"response": {
+"$ref": "ListConnectionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"listenEvent": {
+"description": "ListenEvent listens to the event.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:listenEvent",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.listenEvent",
+"parameterOrder": [
+"resourcePath"
+],
+"parameters": {
+"resourcePath": {
+"description": "Required. Resource path for request.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resourcePath}:listenEvent",
+"request": {
+"$ref": "ListenEventRequest"
+},
+"response": {
+"$ref": "ListenEventResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Connection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}",
+"httpMethod": "PATCH",
+"id": "connectors.projects.locations.connections.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Resource name of the Connection. Format: projects/{project}/locations/{location}/connections/{connection}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. You can modify only the fields listed below. To lock/unlock a connection: * `lock_config` To suspend/resume a connection: * `suspended` To update the connection details: * `description` * `labels` * `connector_version` * `config_variables` * `auth_config` * `destination_configs` * `node_config` * `log_config` * `ssl_config` * `eventing_enablement_type` * `eventing_config` * `auth_override_enabled`",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Connection"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"repairEventing": {
+"description": "RepaiEventing tries to repair eventing related event subscriptions.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:repairEventing",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.repairEventing",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/connections/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:repairEventing",
+"request": {
+"$ref": "RepairEventingRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"search": {
+"description": "Returns Top matching Connections for a given query.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections:search",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.search",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Parent resource of the Connection, of the form: `projects/*/locations/*/connections`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The number of top matching connectors to return",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. page_token",
+"location": "query",
+"type": "string"
+},
+"query": {
+"description": "Required. The query against which the search needs to be done.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}:search",
+"response": {
+"$ref": "SearchConnectionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"connectionSchemaMetadata": {
+"methods": {
+"getAction": {
+"description": "Get action.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/connectionSchemaMetadata:getAction",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.connectionSchemaMetadata.getAction",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"actionId": {
+"description": "Required. Id of the action.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Resource name format: projects/{project}/locations/{location}/connections/{connection}/connectionSchemaMetadata",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/connectionSchemaMetadata$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:getAction",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getEntityType": {
+"description": "Get entity type.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/connectionSchemaMetadata:getEntityType",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.connectionSchemaMetadata.getEntityType",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"entityId": {
+"description": "Required. Id of the entity type.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Resource name format: projects/{project}/locations/{location}/connections/{connection}/connectionSchemaMetadata",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/connectionSchemaMetadata$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:getEntityType",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"listActions": {
+"description": "List actions.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/connectionSchemaMetadata:listActions",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.connectionSchemaMetadata.listActions",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "Required. Filter Wildcards are not supported in the filter currently.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Resource name format. projects/{project}/locations/{location}/connections/{connection}/connectionSchemaMetadata",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/connectionSchemaMetadata$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Page size. If unspecified, at most 50 actions will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "Specifies which fields are returned in response. Defaults to BASIC view.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}:listActions",
+"response": {
+"$ref": "ListActionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"listEntityTypes": {
+"description": "List entity types.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/connectionSchemaMetadata:listEntityTypes",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.connectionSchemaMetadata.listEntityTypes",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "Required. Filter Wildcards are not supported in the filter currently.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Resource name format: projects/{project}/locations/{location}/connections/{connection}/connectionSchemaMetadata",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/connectionSchemaMetadata$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Page size. If unspecified, at most 50 entity types will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "Specifies which fields are returned in response. Defaults to BASIC view.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"BASIC"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}:listEntityTypes",
+"response": {
+"$ref": "ListEntityTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"refresh": {
+"description": "Refresh runtime schema of a connection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/connectionSchemaMetadata:refresh",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.connectionSchemaMetadata.refresh",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name. Format: projects/{project}/locations/{location}/connections/{connection}/connectionSchemaMetadata",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/connectionSchemaMetadata$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:refresh",
+"request": {
+"$ref": "RefreshConnectionSchemaMetadataRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"eventSubscriptions": {
+"methods": {
+"create": {
+"description": "Creates a new EventSubscription in a given project,location and connection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.eventSubscriptions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"eventSubscriptionId": {
+"description": "Required. Identifier to assign to the Event Subscription. Must be unique within scope of the parent resource.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the EventSubscription, of the form: `projects/*/locations/*/connections/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/eventSubscriptions",
+"request": {
+"$ref": "EventSubscription"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single EventSubscription.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions/{eventSubscriptionsId}",
+"httpMethod": "DELETE",
+"id": "connectors.projects.locations.connections.eventSubscriptions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/connections/*/eventsubscriptions/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/eventSubscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single EventSubscription.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions/{eventSubscriptionsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.eventSubscriptions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/connections/*/eventSubscriptions/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/eventSubscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "EventSubscription"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List EventSubscriptions in a given project,location and connection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.eventSubscriptions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Order by parameters.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the EventSubscription, of the form: `projects/*/locations/*/connections/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/eventSubscriptions",
+"response": {
+"$ref": "ListEventSubscriptionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single EventSubscription.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions/{eventSubscriptionsId}",
+"httpMethod": "PATCH",
+"id": "connectors.projects.locations.connections.eventSubscriptions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the EventSubscription. Format: projects/{project}/locations/{location}/connections/{connection}/eventSubscriptions/{event_subscription}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/eventSubscriptions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to update. Fields are specified relative to the Subscription. A field will be overwritten if it is in the mask. You can modify only the fields listed below. To update the EventSubscription details: * `serviceAccount`",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "EventSubscription"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"retry": {
+"description": "RetryEventSubscription retries the registration of Subscription.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/eventSubscriptions/{eventSubscriptionsId}:retry",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.eventSubscriptions.retry",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/connections/*/eventSubscriptions/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/eventSubscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:retry",
+"request": {
+"$ref": "RetryEventSubscriptionRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"runtimeActionSchemas": {
+"methods": {
+"list": {
+"description": "List schema of a runtime actions filtered by action name.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/runtimeActionSchemas",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.runtimeActionSchemas.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Required. Filter Format: action=\"{actionId}\" Only action field is supported with literal equality operator. Accepted filter example: action=\"CancelOrder\" Wildcards are not supported in the filter currently.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of RuntimeActionSchema Format: projects/{project}/locations/{location}/connections/{connection}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+},
+"schemaAsString": {
+"description": "Optional. Flag to indicate if schema should be returned as string or not",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+parent}/runtimeActionSchemas",
+"response": {
+"$ref": "ListRuntimeActionSchemasResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"runtimeEntitySchemas": {
+"methods": {
+"list": {
+"description": "List schema of a runtime entities filtered by entity name.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/runtimeEntitySchemas",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.runtimeEntitySchemas.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Required. Filter Format: entity=\"{entityId}\" Only entity field is supported with literal equality operator. Accepted filter example: entity=\"Order\" Wildcards are not supported in the filter currently.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of RuntimeEntitySchema Format: projects/{project}/locations/{location}/connections/{connection}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/runtimeEntitySchemas",
+"response": {
+"$ref": "ListRuntimeEntitySchemasResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"customConnectors": {
+"methods": {
+"validateCustomConnectorSpec": {
+"description": "Validates a Custom Connector Spec.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/customConnectors:validateCustomConnectorSpec",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.customConnectors.validateCustomConnectorSpec",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Location at which the custom connector is being created.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/customConnectors:validateCustomConnectorSpec",
+"request": {
+"$ref": "ValidateCustomConnectorSpecRequest"
+},
+"response": {
+"$ref": "ValidateCustomConnectorSpecResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"customConnectorVersions": {
+"methods": {
+"delete": {
+"description": "Deletes a single CustomConnectorVersion.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/customConnectors/{customConnectorsId}/customConnectorVersions/{customConnectorVersionsId}",
+"httpMethod": "DELETE",
+"id": "connectors.projects.locations.customConnectors.customConnectorVersions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/{project}/locations/{location}/customConnectors/{custom_connector}/customConnectorVersions/{custom_connector_version}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/customConnectors/[^/]+/customConnectorVersions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"deprecate": {
+"description": "Deprecates a single CustomConnectorVersion.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/customConnectors/{customConnectorsId}/customConnectorVersions/{customConnectorVersionsId}:deprecate",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.customConnectors.customConnectorVersions.deprecate",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/{project}/locations/{location}/customConnectors/{custom_connector}/customConnectorVersions/{custom_connector_version}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/customConnectors/[^/]+/customConnectorVersions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:deprecate",
+"request": {
+"$ref": "DeprecateCustomConnectorVersionRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"publish": {
+"description": "Publish request for the CustomConnectorVersion. Once approved, the CustomConnectorVersion will be published as PartnerConnector.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/customConnectors/{customConnectorsId}/customConnectorVersions/{customConnectorVersionsId}:publish",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.customConnectors.customConnectorVersions.publish",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/{project}/locations/{location}/customConnectors/{custom_connector}/customConnectorVersions/{custom_connector_version}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/customConnectors/[^/]+/customConnectorVersions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:publish",
+"request": {
+"$ref": "PublishCustomConnectorVersionRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"withdraw": {
+"description": "Withdraw the publish request for the CustomConnectorVersion. This can only be used before the CustomConnectorVersion is published.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/customConnectors/{customConnectorsId}/customConnectorVersions/{customConnectorVersionsId}:withdraw",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.customConnectors.customConnectorVersions.withdraw",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/{project}/locations/{location}/customConnectors/{custom_connector}/customConnectorVersions/{custom_connector_version}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/customConnectors/[^/]+/customConnectorVersions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:withdraw",
+"request": {
+"$ref": "WithdrawCustomConnectorVersionRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"endpointAttachments": {
+"methods": {
+"create": {
+"description": "Creates a new EndpointAttachment in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointAttachments",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.endpointAttachments.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"endpointAttachmentId": {
+"description": "Required. Identifier to assign to the EndpointAttachment. Must be unique within scope of the parent resource.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the EndpointAttachment, of the form: `projects/*/locations/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/endpointAttachments",
+"request": {
+"$ref": "EndpointAttachment"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single EndpointAttachment.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointAttachments/{endpointAttachmentsId}",
+"httpMethod": "DELETE",
+"id": "connectors.projects.locations.endpointAttachments.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/endpointAttachments/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpointAttachments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single EndpointAttachment.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointAttachments/{endpointAttachmentsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.endpointAttachments.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/endpointAttachments/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpointAttachments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Optional. Specifies which fields of the EndpointAttachment are returned in the response. Defaults to `ENDPOINT_ATTACHMENT_VIEW_BASIC` view.",
+"enum": [
+"ENDPOINT_ATTACHMENT_VIEW_UNSPECIFIED",
+"ENDPOINT_ATTACHMENT_VIEW_BASIC",
+"ENDPOINT_ATTACHMENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"ENDPOINT_ATTACHMENT_VIEW_UNSPECIFIED.",
+"Do not include status.",
+"Includes Status."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "EndpointAttachment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List EndpointAttachments in a given project",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointAttachments",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.endpointAttachments.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Order by parameters.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource od the EndpointAttachment, of the form: `projects/*/locations/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Optional. Specifies which fields of the EndpointAttachment are returned in the response. Defaults to `ENDPOINT_ATTACHMENT_VIEW_BASIC` view.",
+"enum": [
+"ENDPOINT_ATTACHMENT_VIEW_UNSPECIFIED",
+"ENDPOINT_ATTACHMENT_VIEW_BASIC",
+"ENDPOINT_ATTACHMENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"ENDPOINT_ATTACHMENT_VIEW_UNSPECIFIED.",
+"Do not include status.",
+"Includes Status."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/endpointAttachments",
+"response": {
+"$ref": "ListEndpointAttachmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single EndpointAttachment.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointAttachments/{endpointAttachmentsId}",
+"httpMethod": "PATCH",
+"id": "connectors.projects.locations.endpointAttachments.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Resource name of the Endpoint Attachment. Format: projects/{project}/locations/{location}/endpointAttachments/{endpoint_attachment}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpointAttachments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to update. Fields are specified relative to the endpointAttachment. A field will be overwritten if it is in the mask. You can modify only the fields listed below. To update the endpointAttachment details: * `description` * `labels`",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "EndpointAttachment"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"global": {
+"methods": {
+"getSettings": {
+"description": "GetGlobalSettings gets settings of a project. GlobalSettings is a singleton resource.",
+"flatPath": "v1/projects/{projectsId}/locations/global/settings",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.global.getSettings",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the Settings.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/settings$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Settings"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updateSettings": {
+"description": "Update the global settings of a project.",
+"flatPath": "v1/projects/{projectsId}/locations/global/settings",
+"httpMethod": "PATCH",
+"id": "connectors.projects.locations.global.updateSettings",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Resource name of the Connection. Format: projects/{project}/locations/global/settings}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/settings$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Settings"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"customConnectors": {
+"methods": {
+"create": {
+"description": "Creates a new CustomConnector in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/global/customConnectors",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.global.customConnectors.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"customConnectorId": {
+"description": "Required. Identifier to assign to the CreateCustomConnector. Must be unique within scope of the parent resource.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the CreateCustomConnector, of the form: `projects/{project}/locations/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/customConnectors",
+"request": {
+"$ref": "CustomConnector"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single CustomConnector.",
+"flatPath": "v1/projects/{projectsId}/locations/global/customConnectors/{customConnectorsId}",
+"httpMethod": "DELETE",
+"id": "connectors.projects.locations.global.customConnectors.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Optional. If set to true, any customConnectorVersion which is a child resource will also be deleted. https://aip.dev/135#cascading-delete",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. Resource name of the form: `projects/{project}/locations/{location}/customConnectors/{connector}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/customConnectors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single CustomConnector.",
+"flatPath": "v1/projects/{projectsId}/locations/global/customConnectors/{customConnectorsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.global.customConnectors.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/customConnectors/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/customConnectors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "CustomConnector"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List CustomConnectorVersions in a given project",
+"flatPath": "v1/projects/{projectsId}/locations/global/customConnectors",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.global.customConnectors.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filter string.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the custom connectors, of the form: `projects/*/locations/*` Only global location is supported for CustomConnector resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/customConnectors",
+"response": {
+"$ref": "ListCustomConnectorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a CustomConnector.",
+"flatPath": "v1/projects/{projectsId}/locations/global/customConnectors/{customConnectorsId}",
+"httpMethod": "PATCH",
+"id": "connectors.projects.locations.global.customConnectors.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Resource name of the CustomConnector. Format: projects/{project}/locations/{location}/customConnectors/{connector}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/customConnectors/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask is used to specify the fields to be overwritten in the Connector resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. Set the mask as \"*\" for full replacement, which means all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "CustomConnector"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"customConnectorVersions": {
+"methods": {
+"create": {
+"description": "Creates a new CustomConnectorVersion in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/global/customConnectors/{customConnectorsId}/customConnectorVersions",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.global.customConnectors.customConnectorVersions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"customConnectorVersionId": {
+"description": "Required. Identifier to assign to the CreateCustomConnectorVersion. Must be unique within scope of the parent resource.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the CreateCustomConnector, of the form: `projects/{project}/locations/{location}/customConnectors/{custom_connector}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/customConnectors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/customConnectorVersions",
+"request": {
+"$ref": "CustomConnectorVersion"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single CustomConnectorVersion.",
+"flatPath": "v1/projects/{projectsId}/locations/global/customConnectors/{customConnectorsId}/customConnectorVersions/{customConnectorVersionsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.global.customConnectors.customConnectorVersions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/{location}/customConnectors/*/customConnectorVersions/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/customConnectors/[^/]+/customConnectorVersions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "CustomConnectorVersion"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List CustomConnectorVersions in a given project",
+"flatPath": "v1/projects/{projectsId}/locations/global/customConnectors/{customConnectorsId}/customConnectorVersions",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.global.customConnectors.customConnectorVersions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the connectors, of the form: `projects/*/locations/{location}/customConnectors/*/customConnectorVersions/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/customConnectors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/customConnectorVersions",
+"response": {
+"$ref": "ListCustomConnectorVersionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"managedZones": {
+"methods": {
+"create": {
+"description": "Creates a new ManagedZone in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/global/managedZones",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.global.managedZones.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"managedZoneId": {
+"description": "Required. Identifier to assign to the ManagedZone. Must be unique within scope of the parent resource.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the ManagedZone, of the form: `projects/*/locations/global`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/managedZones",
+"request": {
+"$ref": "ManagedZone"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single ManagedZone.",
+"flatPath": "v1/projects/{projectsId}/locations/global/managedZones/{managedZonesId}",
+"httpMethod": "DELETE",
+"id": "connectors.projects.locations.global.managedZones.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/global/managedZones/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/managedZones/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single ManagedZone.",
+"flatPath": "v1/projects/{projectsId}/locations/global/managedZones/{managedZonesId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.global.managedZones.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/global/managedZones/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/managedZones/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "ManagedZone"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List ManagedZones in a given project",
+"flatPath": "v1/projects/{projectsId}/locations/global/managedZones",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.global.managedZones.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Order by parameters.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the Managed Zone, of the form: `projects/*/locations/global`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/managedZones",
+"response": {
+"$ref": "ListManagedZonesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single ManagedZone.",
+"flatPath": "v1/projects/{projectsId}/locations/global/managedZones/{managedZonesId}",
+"httpMethod": "PATCH",
+"id": "connectors.projects.locations.global.managedZones.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Resource name of the Managed Zone. Format: projects/{project}/locations/global/managedZones/{managed_zone}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/global/managedZones/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The list of fields to update. Fields are specified relative to the managedZone. A field will be overwritten if it is in the mask. You can modify only the fields listed below. To update the managedZone details: * `description` * `labels` * `target_project` * `target_network`",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "ManagedZone"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "connectors.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"providers": {
+"methods": {
+"get": {
+"description": "Gets details of a provider.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/providers/*` Only global location is supported for Provider resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Provider"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Providers in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the API, of the form: `projects/*/locations/*` Only global location is supported for Provider resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/providers",
+"response": {
+"$ref": "ListProvidersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.providers.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.providers.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"connectors": {
+"methods": {
+"get": {
+"description": "Gets details of a single Connector.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors/{connectorsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.connectors.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/providers/*/connectors/*` Only global location is supported for Connector resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+/connectors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Connector"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Connectors in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.connectors.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filter string.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the connectors, of the form: `projects/*/locations/*/providers/*` Only global location is supported for Connector resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/connectors",
+"response": {
+"$ref": "ListConnectorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"versions": {
+"methods": {
+"fetchAuthSchema": {
+"description": "fetch and return the list of auth config variables required to override the connection backend auth.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors/{connectorsId}/versions/{versionsId}:fetchAuthSchema",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.connectors.versions.fetchAuthSchema",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Parent resource of the Connector Version, of the form: `projects/*/locations/*/providers/*/connectors/*/versions/*`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+/connectors/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Optional. View of the AuthSchema. The default value is BASIC.",
+"enum": [
+"AUTH_SCHEMA_VIEW_UNSPECIFIED",
+"BASIC",
+"JSON_SCHEMA"
+],
+"enumDescriptions": [
+"Default value.",
+"Basic view of the AuthSchema.",
+"JSON schema view of the AuthSchema."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}:fetchAuthSchema",
+"response": {
+"$ref": "FetchAuthSchemaResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single connector version.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors/{connectorsId}/versions/{versionsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.connectors.versions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/providers/*/connectors/*/versions/*` Only global location is supported for ConnectorVersion resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+/connectors/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Specifies which fields of the ConnectorVersion are returned in the response. Defaults to `CUSTOMER` view.",
+"enum": [
+"CONNECTOR_VERSION_VIEW_UNSPECIFIED",
+"CONNECTOR_VERSION_VIEW_BASIC",
+"CONNECTOR_VERSION_VIEW_FULL"
+],
+"enumDescriptions": [
+"CONNECTOR_VERSION_VIEW_UNSPECIFIED.",
+"Do not include role grant configs.",
+"Include role grant configs."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "ConnectorVersion"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Connector Versions in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors/{connectorsId}/versions",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.connectors.versions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the connectors, of the form: `projects/*/locations/*/providers/*/connectors/*` Only global location is supported for ConnectorVersion resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+/connectors/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Specifies which fields of the ConnectorVersion are returned in the response. Defaults to `BASIC` view.",
+"enum": [
+"CONNECTOR_VERSION_VIEW_UNSPECIFIED",
+"CONNECTOR_VERSION_VIEW_BASIC",
+"CONNECTOR_VERSION_VIEW_FULL"
+],
+"enumDescriptions": [
+"CONNECTOR_VERSION_VIEW_UNSPECIFIED.",
+"Do not include role grant configs.",
+"Include role grant configs."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/versions",
+"response": {
+"$ref": "ListConnectorVersionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"eventtypes": {
+"methods": {
+"get": {
+"description": "Gets details of a single event type.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors/{connectorsId}/versions/{versionsId}/eventtypes/{eventtypesId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.connectors.versions.eventtypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the form: `projects/*/locations/*/providers/*/connectors/*/versions/*/eventtypes/*` Only global location is supported for EventType resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+/connectors/[^/]+/versions/[^/]+/eventtypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "EventType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Event Types in a given Connector Version.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}/connectors/{connectorsId}/versions/{versionsId}/eventtypes",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.providers.connectors.versions.eventtypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource of the connectors, of the form: `projects/*/locations/*/providers/*/connectors/*/versions/*` Only global location is supported for EventType resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+/connectors/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/eventtypes",
+"response": {
+"$ref": "ListEventTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20250101",
+"rootUrl": "https://connectors.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuthConfig": {
+"description": "AuthConfig defines details of a authentication type.",
+"id": "AuthConfig",
+"properties": {
+"additionalVariables": {
+"description": "List containing additional auth configs.",
+"items": {
+"$ref": "ConfigVariable"
+},
+"type": "array"
+},
+"authKey": {
+"description": "Identifier key for auth config",
+"type": "string"
+},
+"authType": {
+"description": "The type of authentication configured.",
+"enum": [
+"AUTH_TYPE_UNSPECIFIED",
+"USER_PASSWORD",
+"OAUTH2_JWT_BEARER",
+"OAUTH2_CLIENT_CREDENTIALS",
+"SSH_PUBLIC_KEY",
+"OAUTH2_AUTH_CODE_FLOW",
+"GOOGLE_AUTHENTICATION",
+"OAUTH2_AUTH_CODE_FLOW_GOOGLE_MANAGED"
+],
+"enumDescriptions": [
+"Authentication type not specified.",
+"Username and Password Authentication.",
+"JSON Web Token (JWT) Profile for Oauth 2.0 Authorization Grant based authentication",
+"Oauth 2.0 Client Credentials Grant Authentication",
+"SSH Public Key Authentication",
+"Oauth 2.0 Authorization Code Flow",
+"Google authentication",
+"Oauth 2.0 Authorization Code Flow with Google Provided OAuth Client"
+],
+"type": "string"
+},
+"oauth2AuthCodeFlow": {
+"$ref": "Oauth2AuthCodeFlow",
+"description": "Oauth2AuthCodeFlow."
+},
+"oauth2AuthCodeFlowGoogleManaged": {
+"$ref": "Oauth2AuthCodeFlowGoogleManaged",
+"description": "Oauth2AuthCodeFlowGoogleManaged."
+},
+"oauth2ClientCredentials": {
+"$ref": "Oauth2ClientCredentials",
+"description": "Oauth2ClientCredentials."
+},
+"oauth2JwtBearer": {
+"$ref": "Oauth2JwtBearer",
+"description": "Oauth2JwtBearer."
+},
+"sshPublicKey": {
+"$ref": "SshPublicKey",
+"description": "SSH Public Key."
+},
+"userPassword": {
+"$ref": "UserPassword",
+"description": "UserPassword."
+}
+},
+"type": "object"
+},
+"AuthConfigTemplate": {
+"description": "AuthConfigTemplate defines required field over an authentication type.",
+"id": "AuthConfigTemplate",
+"properties": {
+"authKey": {
+"description": "Identifier key for auth config",
+"type": "string"
+},
+"authType": {
+"description": "The type of authentication configured.",
+"enum": [
+"AUTH_TYPE_UNSPECIFIED",
+"USER_PASSWORD",
+"OAUTH2_JWT_BEARER",
+"OAUTH2_CLIENT_CREDENTIALS",
+"SSH_PUBLIC_KEY",
+"OAUTH2_AUTH_CODE_FLOW",
+"GOOGLE_AUTHENTICATION",
+"OAUTH2_AUTH_CODE_FLOW_GOOGLE_MANAGED"
+],
+"enumDescriptions": [
+"Authentication type not specified.",
+"Username and Password Authentication.",
+"JSON Web Token (JWT) Profile for Oauth 2.0 Authorization Grant based authentication",
+"Oauth 2.0 Client Credentials Grant Authentication",
+"SSH Public Key Authentication",
+"Oauth 2.0 Authorization Code Flow",
+"Google authentication",
+"Oauth 2.0 Authorization Code Flow with Google Provided OAuth Client"
+],
+"type": "string"
+},
+"configVariableTemplates": {
+"description": "Config variables to describe an `AuthConfig` for a `Connection`.",
+"items": {
+"$ref": "ConfigVariableTemplate"
+},
+"type": "array"
+},
+"description": {
+"description": "Connector specific description for an authentication template.",
+"type": "string"
+},
+"displayName": {
+"description": "Display name for authentication template.",
+"type": "string"
+},
+"isDefault": {
+"description": "Whether the auth config is the default one.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"AuthField": {
+"description": "AuthField defines a field in an authentication type.",
+"id": "AuthField",
+"properties": {
+"dataType": {
+"description": "Data type of the field.",
+"type": "string"
+},
+"description": {
+"description": "Description of the field.",
+"type": "string"
+},
+"key": {
+"description": "Key of the field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuthObject": {
+"description": "AuthObject defines a JSON schema of an authentication type.",
+"id": "AuthObject",
+"properties": {
+"additionalProperties": {
+"description": "Whether the object has additional properties.",
+"type": "boolean"
+},
+"authKey": {
+"description": "Auth key of the object.",
+"type": "string"
+},
+"authType": {
+"description": "Auth type of the object.",
+"type": "string"
+},
+"description": {
+"description": "Description of the object.",
+"type": "string"
+},
+"isDefault": {
+"description": "Whether the object is the default one.",
+"type": "boolean"
+},
+"properties": {
+"additionalProperties": {
+"$ref": "AuthProperty"
+},
+"description": "Properties of the object.",
+"type": "object"
+},
+"type": {
+"description": "Type of the object.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuthProperty": {
+"description": "AuthProperty defines a property of an authentication type.",
+"id": "AuthProperty",
+"properties": {
+"description": {
+"description": "Description of the property.",
+"type": "string"
+},
+"type": {
+"description": "Type of the property.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuthSchema": {
+"description": "AuthSchema defines the schema of an authentication type.",
+"id": "AuthSchema",
+"properties": {
+"authFields": {
+"description": "List of AuthFields.",
+"items": {
+"$ref": "AuthField"
+},
+"type": "array"
+},
+"authKey": {
+"description": "Auth key of the schema.",
+"type": "string"
+},
+"authType": {
+"description": "Auth type of the schema.",
+"enum": [
+"AUTH_TYPE_UNSPECIFIED",
+"USER_PASSWORD",
+"OAUTH2_JWT_BEARER",
+"OAUTH2_CLIENT_CREDENTIALS",
+"SSH_PUBLIC_KEY",
+"OAUTH2_AUTH_CODE_FLOW",
+"GOOGLE_AUTHENTICATION",
+"OAUTH2_AUTH_CODE_FLOW_GOOGLE_MANAGED"
+],
+"enumDescriptions": [
+"Authentication type not specified.",
+"Username and Password Authentication.",
+"JSON Web Token (JWT) Profile for Oauth 2.0 Authorization Grant based authentication",
+"Oauth 2.0 Client Credentials Grant Authentication",
+"SSH Public Key Authentication",
+"Oauth 2.0 Authorization Code Flow",
+"Google authentication",
+"Oauth 2.0 Authorization Code Flow with Google Provided OAuth Client"
+],
+"type": "string"
+},
+"description": {
+"description": "Description of the schema.",
+"type": "string"
+},
+"displayName": {
+"description": "Display name of the schema.",
+"type": "string"
+},
+"isDefault": {
+"description": "Whether the auth schema is the default one.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"AuthorizationCodeLink": {
+"description": "This configuration captures the details required to render an authorization link for the OAuth Authorization Code Flow.",
+"id": "AuthorizationCodeLink",
+"properties": {
+"clientId": {
+"description": "Optional. The client ID assigned to the Google Cloud Connectors OAuth app for the connector data source.",
+"type": "string"
+},
+"clientSecret": {
+"$ref": "Secret",
+"description": "Optional. The client secret assigned to the Google Cloud Connectors OAuth app for the connector data source."
+},
+"enablePkce": {
+"description": "Optional. Whether to enable PKCE for the auth code flow.",
+"type": "boolean"
+},
+"omitQueryParams": {
+"description": "Optional. Omit query params from the redirect URI.",
+"type": "boolean"
+},
+"scopes": {
+"description": "Optional. The scopes for which the user will authorize Google Cloud Connectors on the connector data source.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"uri": {
+"description": "Optional. The base URI the user must click to trigger the authorization code login flow.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BillingConfig": {
+"description": "Billing config for the connection.",
+"id": "BillingConfig",
+"properties": {
+"billingCategory": {
+"description": "Output only. Billing category for the connector.",
+"enum": [
+"BILLING_CATEGORY_UNSPECIFIED",
+"GCP_AND_TECHNICAL_CONNECTOR",
+"NON_GCP_CONNECTOR"
+],
+"enumDescriptions": [
+"Billing category is not specified.",
+"GCP/Technical connector.",
+"Non-GCP connector."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"ConfigVariable": {
+"description": "ConfigVariable represents a configuration variable present in a Connection. or AuthConfig.",
+"id": "ConfigVariable",
+"properties": {
+"boolValue": {
+"description": "Value is a bool.",
+"type": "boolean"
+},
+"encryptionKeyValue": {
+"$ref": "EncryptionKey",
+"description": "Value is a Encryption Key."
+},
+"intValue": {
+"description": "Value is an integer",
+"format": "int64",
+"type": "string"
+},
+"key": {
+"description": "Key of the config variable.",
+"type": "string"
+},
+"secretValue": {
+"$ref": "Secret",
+"description": "Value is a secret."
+},
+"stringValue": {
+"description": "Value is a string.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigVariableTemplate": {
+"description": "ConfigVariableTemplate provides metadata about a `ConfigVariable` that is used in a Connection.",
+"id": "ConfigVariableTemplate",
+"properties": {
+"authorizationCodeLink": {
+"$ref": "AuthorizationCodeLink",
+"description": "Optional. Authorization code link options. To be populated if `ValueType` is `AUTHORIZATION_CODE`"
+},
+"description": {
+"description": "Optional. Description.",
+"type": "string"
+},
+"displayName": {
+"description": "Optional. Display name of the parameter.",
+"type": "string"
+},
+"enumOptions": {
+"description": "Optional. Enum options. To be populated if `ValueType` is `ENUM`",
+"items": {
+"$ref": "EnumOption"
+},
+"type": "array"
+},
+"enumSource": {
+"description": "Optional. enum source denotes the source of api to fill the enum options",
+"enum": [
+"ENUM_SOURCE_UNSPECIFIED",
+"EVENT_TYPES_API"
+],
+"enumDescriptions": [
+"Api type unspecified.",
+"list event types."
+],
+"type": "string"
+},
+"isAdvanced": {
+"description": "Optional. Indicates if current template is part of advanced settings",
+"type": "boolean"
+},
+"key": {
+"description": "Optional. Key of the config variable.",
+"type": "string"
+},
+"locationType": {
+"description": "Optional. Location Tyep denotes where this value should be sent in BYOC connections.",
+"enum": [
+"LOCATION_TYPE_UNSPECIFIED",
+"HEADER",
+"PAYLOAD",
+"QUERY_PARAM",
+"PATH_PARAM"
+],
+"enumDescriptions": [
+"Location type unspecified.",
+"Request header.",
+"Request Payload.",
+"Request query param.",
+"Request path param."
+],
+"type": "string"
+},
+"multipleSelectConfig": {
+"$ref": "MultipleSelectConfig",
+"description": "Optional. MultipleSelectConfig represents the multiple options for a config variable."
+},
+"required": {
+"description": "Optional. Flag represents that this `ConfigVariable` must be provided for a connection.",
+"type": "boolean"
+},
+"requiredCondition": {
+"$ref": "LogicalExpression",
+"description": "Optional. Condition under which a field would be required. The condition can be represented in the form of a logical expression."
+},
+"roleGrant": {
+"$ref": "RoleGrant",
+"description": "Optional. Role grant configuration for the config variable."
+},
+"state": {
+"description": "Output only. State of the config variable.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Status is unspecified.",
+"Config variable is active",
+"Config variable is deprecated."
+],
+"readOnly": true,
+"type": "string"
+},
+"validationRegex": {
+"description": "Optional. Regular expression in RE2 syntax used for validating the `value` of a `ConfigVariable`.",
+"type": "string"
+},
+"valueType": {
+"description": "Optional. Type of the parameter: string, int, bool etc. consider custom type for the benefit for the validation.",
+"enum": [
+"VALUE_TYPE_UNSPECIFIED",
+"STRING",
+"INT",
+"BOOL",
+"SECRET",
+"ENUM",
+"AUTHORIZATION_CODE",
+"ENCRYPTION_KEY",
+"MULTIPLE_SELECT"
+],
+"enumDescriptions": [
+"Value type is not specified.",
+"Value type is string.",
+"Value type is integer.",
+"Value type is boolean.",
+"Value type is secret.",
+"Value type is enum.",
+"Value type is authorization code.",
+"Encryption Key.",
+"Value type is multiple select."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Connection": {
+"description": "Connection represents an instance of connector.",
+"id": "Connection",
+"properties": {
+"asyncOperationsEnabled": {
+"description": "Optional. Async operations enabled for the connection. If Async Operations is enabled, Connection allows the customers to initiate async long running operations using the actions API.",
+"type": "boolean"
+},
+"authConfig": {
+"$ref": "AuthConfig",
+"description": "Optional. Configuration for establishing the connection's authentication with an external system."
+},
+"authOverrideEnabled": {
+"description": "Optional. Auth override enabled for the connection. If Auth Override is enabled, Connection allows the backend service auth to be overridden in the entities/actions API.",
+"type": "boolean"
+},
+"billingConfig": {
+"$ref": "BillingConfig",
+"description": "Output only. Billing config for the connection.",
+"readOnly": true
+},
+"configVariables": {
+"description": "Optional. Configuration for configuring the connection with an external system.",
+"items": {
+"$ref": "ConfigVariable"
+},
+"type": "array"
+},
+"connectionRevision": {
+"description": "Output only. Connection revision. This field is only updated when the connection is created or updated by User.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"connectorVersion": {
+"description": "Required. Connector version on which the connection is created. The format is: projects/*/locations/*/providers/*/connectors/*/versions/* Only global location is supported for ConnectorVersion resource.",
+"type": "string"
+},
+"connectorVersionInfraConfig": {
+"$ref": "ConnectorVersionInfraConfig",
+"description": "Output only. Infra configs supported by Connector Version.",
+"readOnly": true
+},
+"connectorVersionLaunchStage": {
+"description": "Output only. Flag to mark the version indicating the launch stage.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"PREVIEW",
+"GA",
+"DEPRECATED",
+"TEST",
+"PRIVATE_PREVIEW"
+],
+"enumDescriptions": [
+"LAUNCH_STAGE_UNSPECIFIED.",
+"PREVIEW.",
+"GA.",
+"DEPRECATED.",
+"TEST.",
+"PRIVATE_PREVIEW."
+],
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of the resource.",
+"type": "string"
+},
+"destinationConfigs": {
+"description": "Optional. Configuration of the Connector's destination. Only accepted for Connectors that accepts user defined destination(s).",
+"items": {
+"$ref": "DestinationConfig"
+},
+"type": "array"
+},
+"envoyImageLocation": {
+"description": "Output only. GCR location where the envoy image is stored. formatted like: gcr.io/{bucketName}/{imageName}",
+"readOnly": true,
+"type": "string"
+},
+"eventingConfig": {
+"$ref": "EventingConfig",
+"description": "Optional. Eventing config of a connection"
+},
+"eventingEnablementType": {
+"description": "Optional. Eventing enablement type. Will be nil if eventing is not enabled.",
+"enum": [
+"EVENTING_ENABLEMENT_TYPE_UNSPECIFIED",
+"EVENTING_AND_CONNECTION",
+"ONLY_EVENTING"
+],
+"enumDescriptions": [
+"Eventing Enablement Type Unspecifeied.",
+"Both connection and eventing.",
+"Only Eventing."
+],
+"type": "string"
+},
+"eventingRuntimeData": {
+"$ref": "EventingRuntimeData",
+"description": "Output only. Eventing Runtime Data.",
+"readOnly": true
+},
+"host": {
+"description": "Output only. The name of the Hostname of the Service Directory service with TLS.",
+"readOnly": true,
+"type": "string"
+},
+"imageLocation": {
+"description": "Output only. GCR location where the runtime image is stored. formatted like: gcr.io/{bucketName}/{imageName}",
+"readOnly": true,
+"type": "string"
+},
+"isTrustedTester": {
+"description": "Output only. Is trusted tester program enabled for the project.",
+"readOnly": true,
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
+"type": "object"
+},
+"lockConfig": {
+"$ref": "LockConfig",
+"description": "Optional. Configuration that indicates whether or not the Connection can be edited."
+},
+"logConfig": {
+"$ref": "ConnectorsLogConfig",
+"description": "Optional. Log configuration for the connection."
+},
+"name": {
+"description": "Output only. Resource name of the Connection. Format: projects/{project}/locations/{location}/connections/{connection}",
+"readOnly": true,
+"type": "string"
+},
+"nodeConfig": {
+"$ref": "NodeConfig",
+"description": "Optional. Node configuration for the connection."
+},
+"serviceAccount": {
+"description": "Optional. Service account needed for runtime plane to access Google Cloud resources.",
+"type": "string"
+},
+"serviceDirectory": {
+"description": "Output only. The name of the Service Directory service name. Used for Private Harpoon to resolve the ILB address. e.g. \"projects/cloud-connectors-e2e-testing/locations/us-central1/namespaces/istio-system/services/istio-ingressgateway-connectors\"",
+"readOnly": true,
+"type": "string"
+},
+"sslConfig": {
+"$ref": "SslConfig",
+"description": "Optional. Ssl config of a connection"
+},
+"status": {
+"$ref": "ConnectionStatus",
+"description": "Output only. Current status of the connection.",
+"readOnly": true
+},
+"subscriptionType": {
+"description": "Output only. This subscription type enum states the subscription type of the project.",
+"enum": [
+"SUBSCRIPTION_TYPE_UNSPECIFIED",
+"PAY_G",
+"PAID"
+],
+"enumDescriptions": [
+"Unspecified subscription type.",
+"PayG subscription.",
+"Paid Subscription."
+],
+"readOnly": true,
+"type": "string"
+},
+"suspended": {
+"description": "Optional. Suspended indicates if a user has suspended a connection or not.",
+"type": "boolean"
+},
+"tlsServiceDirectory": {
+"description": "Output only. The name of the Service Directory service with TLS.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConnectionSchemaMetadata": {
+"description": "ConnectionSchemaMetadata is the singleton resource of each connection. It includes the entity and action names of runtime resources exposed by a connection backend.",
+"id": "ConnectionSchemaMetadata",
+"properties": {
+"actions": {
+"description": "Output only. List of actions.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"entities": {
+"description": "Output only. List of entity names.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"errorMessage": {
+"description": "Error message for users.",
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name. Format: projects/{project}/locations/{location}/connections/{connection}/connectionSchemaMetadata",
+"readOnly": true,
+"type": "string"
+},
+"refreshTime": {
+"description": "Output only. Timestamp when the connection runtime schema refresh was triggered.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state of runtime schema.",
+"enum": [
+"STATE_UNSPECIFIED",
+"REFRESHING",
+"UPDATED",
+"REFRESHING_SCHEMA_METADATA",
+"UPDATED_SCHEMA_METADATA",
+"REFRESH_SCHEMA_METADATA_FAILED",
+"REFRESHING_FULL_SCHEMA",
+"UPDATED_FULL_SCHEMA"
+],
+"enumDescriptions": [
+"Default state.",
+"Schema refresh is in progress.",
+"Schema has been updated.",
+"Schema refresh for metadata is in progress.",
+"Schema metadata has been updated.",
+"Failed to refresh schema metadata",
+"Triggered full schema refresh",
+"Updated full schema"
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Timestamp when the connection runtime schema was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConnectionStatus": {
+"description": "ConnectionStatus indicates the state of the connection.",
+"id": "ConnectionStatus",
+"properties": {
+"description": {
+"description": "Description.",
+"type": "string"
+},
+"state": {
+"description": "State.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"ACTIVE",
+"INACTIVE",
+"DELETING",
+"UPDATING",
+"ERROR",
+"AUTHORIZATION_REQUIRED"
+],
+"enumDescriptions": [
+"Connection does not have a state yet.",
+"Connection is being created.",
+"Connection is running and ready for requests.",
+"Connection is stopped.",
+"Connection is being deleted.",
+"Connection is being updated.",
+"Connection is not running due to an error.",
+"Connection is not running because the authorization configuration is not complete."
+],
+"type": "string"
+},
+"status": {
+"description": "Status provides detailed information for the state.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Connector": {
+"description": "Connectors indicates a specific connector type, e.x. Salesforce, SAP etc.",
+"id": "Connector",
+"properties": {
+"category": {
+"description": "Output only. Category of the connector.",
+"readOnly": true,
+"type": "string"
+},
+"connectorType": {
+"description": "Output only. The type of the connector.",
+"enum": [
+"CONNECTOR_TYPE_UNSPECIFIED",
+"CONNECTOR_TYPE_GOOGLE",
+"CONNECTOR_TYPE_TECHNICAL",
+"CONNECTOR_TYPE_THIRD_PARTY"
+],
+"enumDescriptions": [
+"Default value.",
+"Google connectors.",
+"Technical connectors.",
+"Third Party connectors."
+],
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Output only. Description of the resource.",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Output only. Display name.",
+"readOnly": true,
+"type": "string"
+},
+"documentationUri": {
+"description": "Output only. Link to documentation page.",
+"readOnly": true,
+"type": "string"
+},
+"eventingDetails": {
+"$ref": "EventingDetails",
+"description": "Output only. Eventing details. Will be null if eventing is not supported.",
+"readOnly": true
+},
+"externalUri": {
+"description": "Output only. Link to external page.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
+"readOnly": true,
+"type": "object"
+},
+"launchStage": {
+"description": "Output only. Flag to mark the version indicating the launch stage.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"PREVIEW",
+"GA",
+"DEPRECATED",
+"TEST",
+"PRIVATE_PREVIEW"
+],
+"enumDescriptions": [
+"LAUNCH_STAGE_UNSPECIFIED.",
+"PREVIEW.",
+"GA.",
+"DEPRECATED.",
+"TEST.",
+"PRIVATE_PREVIEW."
+],
+"readOnly": true,
+"type": "string"
+},
+"marketplaceConnectorDetails": {
+"$ref": "MarketplaceConnectorDetails",
+"description": "Output only. Marketplace connector details. Will be null if the connector is not marketplace connector.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. Resource name of the Connector. Format: projects/{project}/locations/{location}/providers/{provider}/connectors/{connector} Only global location is supported for Connector resource.",
+"readOnly": true,
+"type": "string"
+},
+"tags": {
+"description": "Output only. Tags of the connector.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"webAssetsLocation": {
+"description": "Output only. Cloud storage location of icons etc consumed by UI.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConnectorInfraConfig": {
+"description": "This cofiguration provides infra configs like rate limit threshold which need to be configurable for every connector version",
+"id": "ConnectorInfraConfig",
+"properties": {
+"alwaysAllocateCpu": {
+"description": "Indicates that the Cloud Run CPU should always be allocated.",
+"type": "boolean"
+},
+"connectionRatelimitWindowSeconds": {
+"description": "The window used for ratelimiting runtime requests to connections.",
+"format": "int64",
+"type": "string"
+},
+"connectorVersioningEnabled": {
+"description": "Indicate whether connector versioning is enabled.",
+"type": "boolean"
+},
+"deploymentModel": {
+"description": "Indicate whether connector is deployed on GKE/CloudRun",
+"enum": [
+"DEPLOYMENT_MODEL_UNSPECIFIED",
+"GKE_MST",
+"CLOUD_RUN_MST"
+],
+"enumDescriptions": [
+"Deployment model is not specified.",
+"Default model gke mst.",
+"Cloud run mst."
+],
+"type": "string"
+},
+"hpaConfig": {
+"$ref": "HPAConfig",
+"description": "HPA autoscaling config."
+},
+"internalclientRatelimitThreshold": {
+"description": "Max QPS supported for internal requests originating from Connd.",
+"format": "int64",
+"type": "string"
+},
+"maxInstanceRequestConcurrency": {
+"description": "Max Instance Request Conncurrency for Cloud Run service.",
+"format": "int32",
+"type": "integer"
+},
+"migrateDeploymentModel": {
+"description": "Indicate whether connector is being migrated to cloud run deployment model.",
+"type": "boolean"
+},
+"migrateTls": {
+"description": "Indicate whether connector is being migrated to TLS.",
+"type": "boolean"
+},
+"provisionCloudSpanner": {
+"description": "Indicate whether cloud spanner is required for connector job.",
+"type": "boolean"
+},
+"ratelimitThreshold": {
+"description": "Max QPS supported by the connector version before throttling of requests.",
+"format": "int64",
+"type": "string"
+},
+"resourceLimits": {
+"$ref": "ResourceLimits",
+"description": "System resource limits."
+},
+"resourceRequests": {
+"$ref": "ResourceRequests",
+"description": "System resource requests."
+},
+"sharedDeployment": {
+"description": "The name of shared connector deployment.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConnectorVersion": {
+"description": "ConnectorVersion indicates a specific version of a connector.",
+"id": "ConnectorVersion",
+"properties": {
+"authConfigTemplates": {
+"description": "Output only. List of auth configs supported by the Connector Version.",
+"items": {
+"$ref": "AuthConfigTemplate"
+},
+"readOnly": true,
+"type": "array"
+},
+"authOverrideEnabled": {
+"description": "Output only. Flag to mark the dynamic auth override.",
+"readOnly": true,
+"type": "boolean"
+},
+"configVariableTemplates": {
+"description": "Output only. List of config variables needed to create a connection.",
+"items": {
+"$ref": "ConfigVariableTemplate"
+},
+"readOnly": true,
+"type": "array"
+},
+"connectorInfraConfig": {
+"$ref": "ConnectorInfraConfig",
+"description": "Output only. Infra configs supported by Connector.",
+"readOnly": true
+},
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"destinationConfigTemplates": {
+"description": "Output only. List of destination configs needed to create a connection.",
+"items": {
+"$ref": "DestinationConfigTemplate"
+},
+"readOnly": true,
+"type": "array"
+},
+"displayName": {
+"description": "Output only. Display name.",
+"readOnly": true,
+"type": "string"
+},
+"egressControlConfig": {
+"$ref": "EgressControlConfig",
+"description": "Output only. Configuration for Egress Control.",
+"readOnly": true
+},
+"eventingConfigTemplate": {
+"$ref": "EventingConfigTemplate",
+"description": "Output only. Eventing configuration supported by the Connector.",
+"readOnly": true
+},
+"isAsyncOperationsSupported": {
+"description": "Output only. Is async operations supported.",
+"readOnly": true,
+"type": "boolean"
+},
+"isCustomActionsSupported": {
+"description": "Output only. Is custom actions supported.",
+"readOnly": true,
+"type": "boolean"
+},
+"isCustomEntitiesSupported": {
+"description": "Output only. Is custom entities supported.",
+"readOnly": true,
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
+"readOnly": true,
+"type": "object"
+},
+"launchStage": {
+"description": "Output only. Flag to mark the version indicating the launch stage.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"PREVIEW",
+"GA",
+"DEPRECATED",
+"TEST",
+"PRIVATE_PREVIEW"
+],
+"enumDescriptions": [
+"LAUNCH_STAGE_UNSPECIFIED.",
+"PREVIEW.",
+"GA.",
+"DEPRECATED.",
+"TEST.",
+"PRIVATE_PREVIEW."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of the Version. Format: projects/{project}/locations/{location}/providers/{provider}/connectors/{connector}/versions/{version} Only global location is supported for Connector resource.",
+"readOnly": true,
+"type": "string"
+},
+"releaseVersion": {
+"description": "Output only. ReleaseVersion of the connector, for example: \"1.0.1-alpha\".",
+"readOnly": true,
+"type": "string"
+},
+"roleGrant": {
+"$ref": "RoleGrant",
+"description": "Output only. Role grant configuration for this config variable. It will be DEPRECATED soon.",
+"readOnly": true
+},
+"roleGrants": {
+"description": "Output only. Role grant configurations for this connector version.",
+"items": {
+"$ref": "RoleGrant"
+},
+"readOnly": true,
+"type": "array"
+},
+"schemaRefreshConfig": {
+"$ref": "SchemaRefreshConfig",
+"description": "Connection Schema Refresh Config"
+},
+"sslConfigTemplate": {
+"$ref": "SslConfigTemplate",
+"description": "Output only. Ssl configuration supported by the Connector.",
+"readOnly": true
+},
+"supportedRuntimeFeatures": {
+"$ref": "SupportedRuntimeFeatures",
+"description": "Output only. Information about the runtime features supported by the Connector.",
+"readOnly": true
+},
+"supportedStandardActions": {
+"description": "Output only. Supported standard actions.",
+"items": {
+"$ref": "StandardAction"
+},
+"readOnly": true,
+"type": "array"
+},
+"supportedStandardEntities": {
+"description": "Output only. Supported standard entities.",
+"items": {
+"$ref": "StandardEntity"
+},
+"readOnly": true,
+"type": "array"
+},
+"unsupportedConnectionTypes": {
+"description": "Output only. Unsupported connection types.",
+"items": {
+"enum": [
+"CONNECTION_TYPE_UNSPECIFIED",
+"CONNECTION_WITH_EVENTING",
+"ONLY_CONNECTION",
+"ONLY_EVENTING"
+],
+"enumDescriptions": [
+"Connection type is unspecified.",
+"Connection with eventing.",
+"Only connection.",
+"Only eventing."
+],
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConnectorVersionInfraConfig": {
+"description": "This cofiguration provides infra configs like rate limit threshold which need to be configurable for every connector version",
+"id": "ConnectorVersionInfraConfig",
+"properties": {
+"connectionRatelimitWindowSeconds": {
+"description": "Output only. The window used for ratelimiting runtime requests to connections.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"deploymentModel": {
+"description": "Output only. Indicates whether connector is deployed on GKE/CloudRun",
+"enum": [
+"DEPLOYMENT_MODEL_UNSPECIFIED",
+"GKE_MST",
+"CLOUD_RUN_MST"
+],
+"enumDescriptions": [
+"Deployment model is not specified.",
+"Default model gke mst.",
+"Cloud run mst."
+],
+"readOnly": true,
+"type": "string"
+},
+"deploymentModelMigrationState": {
+"description": "Output only. Status of the deployment model migration.",
+"enum": [
+"DEPLOYMENT_MODEL_MIGRATION_STATE_UNSPECIFIED",
+"IN_PROGRESS",
+"COMPLETED",
+"ROLLEDBACK",
+"ROLLBACK_IN_PROGRESS"
+],
+"enumDescriptions": [
+"Deployment model migration state is not specified.",
+"Deployment model migration is in progress.",
+"Deployment model migration is completed.",
+"Deployment model migration rolledback.",
+"Deployment model migration rollback in progress."
+],
+"readOnly": true,
+"type": "string"
+},
+"hpaConfig": {
+"$ref": "HPAConfig",
+"description": "Output only. HPA autoscaling config.",
+"readOnly": true
+},
+"internalclientRatelimitThreshold": {
+"description": "Output only. Max QPS supported for internal requests originating from Connd.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"maxInstanceRequestConcurrency": {
+"description": "Output only. Max instance request concurrency.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"ratelimitThreshold": {
+"description": "Output only. Max QPS supported by the connector version before throttling of requests.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"resourceLimits": {
+"$ref": "ResourceLimits",
+"description": "Output only. System resource limits.",
+"readOnly": true
+},
+"resourceRequests": {
+"$ref": "ResourceRequests",
+"description": "Output only. System resource requests.",
+"readOnly": true
+},
+"sharedDeployment": {
+"description": "Output only. The name of shared connector deployment.",
+"readOnly": true,
+"type": "string"
+},
+"tlsMigrationState": {
+"description": "Output only. Status of the TLS migration.",
+"enum": [
+"TLS_MIGRATION_STATE_UNSPECIFIED",
+"TLS_MIGRATION_NOT_STARTED",
+"TLS_MIGRATION_COMPLETED"
+],
+"enumDescriptions": [
+"TLS migration state is not specified.",
+"TLS migration is in progress.",
+"TLS migration is completed."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConnectorsLogConfig": {
+"description": "Log configuration for the connection.",
+"id": "ConnectorsLogConfig",
+"properties": {
+"enabled": {
+"description": "Enabled represents whether logging is enabled or not for a connection.",
+"type": "boolean"
+},
+"level": {
+"description": "Optional. Log configuration level.",
+"enum": [
+"LOG_LEVEL_UNSPECIFIED",
+"ERROR",
+"INFO",
+"DEBUG"
+],
+"enumDescriptions": [
+"Log level unspecified.",
+"Only error logs are enabled.",
+"Info and error logs are enabled.",
+"Debug and high verbosity logs are enabled."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CustomConnector": {
+"description": "CustomConnector represents the custom connector defined by the customer as part of byoc.",
+"id": "CustomConnector",
+"properties": {
+"activeConnectorVersions": {
+"description": "Output only. Active connector versions.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"allConnectorVersions": {
+"description": "Output only. All connector versions.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"allMarketplaceVersions": {
+"description": "Output only. All marketplace versions.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"customConnectorType": {
+"description": "Required. Type of the custom connector.",
+"enum": [
+"CUSTOM_CONNECTOR_TYPE_UNSPECIFIED",
+"OPEN_API",
+"PROTO"
+],
+"enumDescriptions": [
+"Connector type is not specified.",
+"OpenAPI connector.",
+"Proto connector."
+],
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of the resource.",
+"type": "string"
+},
+"displayName": {
+"description": "Optional. Display name.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
+"type": "object"
+},
+"logo": {
+"description": "Optional. Logo of the resource.",
+"type": "string"
+},
+"name": {
+"description": "Identifier. Resource name of the CustomConnector. Format: projects/{project}/locations/{location}/customConnectors/{connector}",
+"type": "string"
+},
+"publishedMarketplaceVersions": {
+"description": "Output only. Published marketplace versions.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CustomConnectorVersion": {
+"description": "CustomConnectorVersion indicates a specific version of a connector.",
+"id": "CustomConnectorVersion",
+"properties": {
+"authConfig": {
+"$ref": "AuthConfig",
+"description": "Optional. Authentication config for accessing connector facade/ proxy. This is used only when enable_backend_destination_config is true."
+},
+"backendVariableTemplates": {
+"description": "Optional. Backend variables config templates. This translates to additional variable templates in connection.",
+"items": {
+"$ref": "ConfigVariableTemplate"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"destinationConfigs": {
+"description": "Optional. Destination config(s) for accessing connector facade/ proxy. This is used only when enable_backend_destination_config is true.",
+"items": {
+"$ref": "DestinationConfig"
+},
+"type": "array"
+},
+"enableBackendDestinationConfig": {
+"description": "Optional. When enabled, the connector will be a facade/ proxy, and connects to the destination provided during connection creation.",
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
+"type": "object"
+},
+"name": {
+"description": "Output only. Identifier. Resource name of the Version. Format: projects/{project}/locations/{location}/customConnectors/{custom_connector}/customConnectorVersions/{custom_connector_version}",
+"readOnly": true,
+"type": "string"
+},
+"partnerMetadata": {
+"$ref": "PartnerMetadata",
+"description": "Optional. Partner metadata details. This should be populated only when publishing the custom connector to partner connector."
+},
+"publishStatus": {
+"$ref": "PublishStatus",
+"description": "Output only. Publish status of a custom connector.",
+"readOnly": true
+},
+"serviceAccount": {
+"description": "Optional. Service account used by runtime plane to access auth config secrets.",
+"type": "string"
+},
+"specLocation": {
+"description": "Optional. Location of the custom connector spec. The location can be either a public url like `https://public-url.com/spec` Or a Google Cloud Storage location like `gs:///`",
+"type": "string"
+},
+"specServerUrls": {
+"description": "Output only. Server URLs parsed from the spec.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"state": {
+"description": "Output only. State of the custom connector version.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"State Unspecified.",
+"Active state. By default we set the state to Active.",
+"Deprecated state."
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"DailyCycle": {
+"description": "Time window specified for daily operations.",
+"id": "DailyCycle",
+"properties": {
+"duration": {
+"description": "Output only. Duration of the time window, set by service producer.",
+"format": "google-duration",
+"type": "string"
+},
+"startTime": {
+"$ref": "TimeOfDay",
+"description": "Time within the day to start the operations."
+}
+},
+"type": "object"
+},
+"Date": {
+"description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+"id": "Date",
+"properties": {
+"day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"type": "integer"
+},
+"month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"type": "integer"
+},
+"year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"DeadLetterConfig": {
+"description": "Dead Letter configuration details provided by the user.",
+"id": "DeadLetterConfig",
+"properties": {
+"projectId": {
+"description": "Optional. Project which has the topic given.",
+"type": "string"
+},
+"topic": {
+"description": "Optional. Topic to push events which couldn't be processed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DenyMaintenancePeriod": {
+"description": "DenyMaintenancePeriod definition. Maintenance is forbidden within the deny period. The start_date must be less than the end_date.",
+"id": "DenyMaintenancePeriod",
+"properties": {
+"endDate": {
+"$ref": "Date",
+"description": "Deny period end date. This can be: * A full date, with non-zero year, month and day values. * A month and day value, with a zero year. Allows recurring deny periods each year. Date matching this period will have to be before the end."
+},
+"startDate": {
+"$ref": "Date",
+"description": "Deny period start date. This can be: * A full date, with non-zero year, month and day values. * A month and day value, with a zero year. Allows recurring deny periods each year. Date matching this period will have to be the same or after the start."
+},
+"time": {
+"$ref": "TimeOfDay",
+"description": "Time in UTC when the Blackout period starts on start_date and ends on end_date. This can be: * Full time. * All zeros for 00:00:00 UTC"
+}
+},
+"type": "object"
+},
+"DeprecateCustomConnectorVersionRequest": {
+"description": "Request message for ConnectorsService.DeprecateCustomConnectorVersion",
+"id": "DeprecateCustomConnectorVersionRequest",
+"properties": {},
+"type": "object"
+},
+"Destination": {
+"id": "Destination",
+"properties": {
+"host": {
+"description": "For publicly routable host.",
+"type": "string"
+},
+"port": {
+"description": "The port is the target port number that is accepted by the destination.",
+"format": "int32",
+"type": "integer"
+},
+"serviceAttachment": {
+"deprecated": true,
+"description": "PSC service attachments. Format: projects/*/regions/*/serviceAttachments/*",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DestinationConfig": {
+"description": "Define the Connectors target endpoint.",
+"id": "DestinationConfig",
+"properties": {
+"destinations": {
+"description": "The destinations for the key.",
+"items": {
+"$ref": "Destination"
+},
+"type": "array"
+},
+"key": {
+"description": "The key is the destination identifier that is supported by the Connector.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DestinationConfigTemplate": {
+"description": "DestinationConfigTemplate defines required destinations supported by the Connector.",
+"id": "DestinationConfigTemplate",
+"properties": {
+"autocompleteSuggestions": {
+"description": "Autocomplete suggestions for destination URL field.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"defaultPort": {
+"description": "The default port.",
+"format": "int32",
+"type": "integer"
+},
+"description": {
+"description": "Description.",
+"type": "string"
+},
+"displayName": {
+"description": "Display name of the parameter.",
+"type": "string"
+},
+"isAdvanced": {
+"description": "Whether the current destination tempalate is part of Advanced settings",
+"type": "boolean"
+},
+"key": {
+"description": "Key of the destination.",
+"type": "string"
+},
+"max": {
+"description": "The maximum number of destinations supported for this key.",
+"format": "int32",
+"type": "integer"
+},
+"min": {
+"description": "The minimum number of destinations supported for this key.",
+"format": "int32",
+"type": "integer"
+},
+"portFieldType": {
+"description": "Whether port number should be provided by customers.",
+"enum": [
+"FIELD_TYPE_UNSPECIFIED",
+"REQUIRED",
+"OPTIONAL",
+"NOT_USED"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"regexPattern": {
+"description": "Regex pattern for host.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EgressControlConfig": {
+"description": "Egress control config for connector runtime. These configurations define the rules to identify which outbound domains/hosts needs to be whitelisted. It may be a static information for a particular connector version or it is derived from the configurations provided by the customer in Connection resource.",
+"id": "EgressControlConfig",
+"properties": {
+"backends": {
+"description": "Static Comma separated backends which are common for all Connection resources. Supported formats for each backend are host:port or just host (host can be ip address or domain name).",
+"type": "string"
+},
+"extractionRules": {
+"$ref": "ExtractionRules",
+"description": "Extractions Rules to extract the backends from customer provided configuration."
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"EncryptionConfig": {
+"description": "Regional encryption config for CMEK details.",
+"id": "EncryptionConfig",
+"properties": {
+"encryptionType": {
+"description": "Optional. Encryption type for the region.",
+"enum": [
+"ENCRYPTION_TYPE_UNSPECIFIED",
+"GMEK",
+"CMEK"
+],
+"enumDescriptions": [
+"Encryption type unspecified.",
+"Google managed encryption keys",
+"Customer managed encryption keys."
+],
+"type": "string"
+},
+"kmsKeyName": {
+"description": "Optional. KMS crypto key. This field accepts identifiers of the form `projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/ {crypto_key}`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EncryptionKey": {
+"description": "Encryption Key value.",
+"id": "EncryptionKey",
+"properties": {
+"kmsKeyName": {
+"description": "The [KMS key name] with which the content of the Operation is encrypted. The expected format: `projects/*/locations/*/keyRings/*/cryptoKeys/*`. Will be empty string if google managed.",
+"type": "string"
+},
+"type": {
+"description": "Type.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"GOOGLE_MANAGED",
+"CUSTOMER_MANAGED"
+],
+"enumDescriptions": [
+"Value type is not specified.",
+"Google Managed.",
+"Customer Managed."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"EndPoint": {
+"description": "Endpoint message includes details of the Destination endpoint.",
+"id": "EndPoint",
+"properties": {
+"endpointUri": {
+"description": "The URI of the Endpoint.",
+"type": "string"
+},
+"headers": {
+"description": "List of Header to be added to the Endpoint.",
+"items": {
+"$ref": "Header"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"EndpointAttachment": {
+"description": "represents the Connector's Endpoint Attachment resource",
+"id": "EndpointAttachment",
+"properties": {
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of the resource.",
+"type": "string"
+},
+"endpointGlobalAccess": {
+"description": "Optional. The Private Service Connect Connection Endpoint Global Access. https://cloud.google.com/vpc/docs/about-accessing-vpc-hosted-services-endpoints#global-access",
+"type": "boolean"
+},
+"endpointIp": {
+"description": "Output only. The Private Service Connect connection endpoint ip",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
+"type": "object"
+},
+"name": {
+"description": "Output only. Resource name of the Endpoint Attachment. Format: projects/{project}/locations/{location}/endpointAttachments/{endpoint_attachment}",
+"readOnly": true,
+"type": "string"
+},
+"serviceAttachment": {
+"description": "Required. The path of the service attachment",
+"type": "string"
+},
+"state": {
+"description": "Output only. The Private Service Connect Connection Endpoint State. This value is only available in the Full view.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"ACCEPTED",
+"REJECTED",
+"CLOSED",
+"FROZEN",
+"NEEDS_ATTENTION",
+"ACCEPTED_NOT_PROGRAMMED"
+],
+"enumDescriptions": [
+"STATE_UNSPECIFIED.",
+"The endpoint is pending acceptance by the producer.",
+"The endpoint has been accepted by the producer.",
+"The endpoint has been rejected by the producer.",
+"The endpoint has been closed by the producer and will not serve traffic going forward.",
+"The endpoint has been frozen by the producer and will not serve traffic.",
+"The endpoint has been accepted by the producer, but it is not ready to serve the traffic due to producer side issues.",
+"The endpoint has been accepted by the producer, but it cannot be programmed to the data plane due to invariant violation."
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"EnumOption": {
+"description": "EnumOption definition",
+"id": "EnumOption",
+"properties": {
+"displayName": {
+"description": "Optional. Display name of the option.",
+"type": "string"
+},
+"id": {
+"description": "Optional. Id of the option.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventSubscription": {
+"description": "represents the Connector's EventSubscription resource",
+"id": "EventSubscription",
+"properties": {
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"destinations": {
+"$ref": "EventSubscriptionDestination",
+"description": "Optional. The destination to hit when we receive an event"
+},
+"eventTypeId": {
+"description": "Optional. Event type id of the event of current EventSubscription.",
+"type": "string"
+},
+"jms": {
+"$ref": "JMS",
+"description": "Optional. JMS is the source for the event listener."
+},
+"name": {
+"description": "Required. Resource name of the EventSubscription. Format: projects/{project}/locations/{location}/connections/{connection}/eventSubscriptions/{event_subscription}",
+"type": "string"
+},
+"status": {
+"$ref": "EventSubscriptionStatus",
+"description": "Optional. Status indicates the status of the event subscription resource"
+},
+"subscriber": {
+"description": "Optional. name of the Subscriber for the current EventSubscription.",
+"type": "string"
+},
+"subscriberLink": {
+"description": "Optional. Link for Subscriber of the current EventSubscription.",
+"type": "string"
+},
+"triggerConfigVariables": {
+"description": "Optional. Configuration for configuring the trigger",
+"items": {
+"$ref": "ConfigVariable"
+},
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventSubscriptionDestination": {
+"description": "Message for EventSubscription Destination to act on receiving an event",
+"id": "EventSubscriptionDestination",
+"properties": {
+"endpoint": {
+"$ref": "EndPoint",
+"description": "OPTION 1: Hit an endpoint when we receive an event."
+},
+"serviceAccount": {
+"description": "Service account needed for runtime plane to trigger IP workflow.",
+"type": "string"
+},
+"type": {
+"description": "type of the destination",
+"enum": [
+"TYPE_UNSPECIFIED",
+"ENDPOINT",
+"GCS",
+"PUBSUB"
+],
+"enumDescriptions": [
+"Default state.",
+"Endpoint - Hit the value of endpoint when event is received",
+"Cloud Storage - Write the event to Cloud Storage bucket",
+"Pub/Sub - Write the event to Pub/Sub topic"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventSubscriptionStatus": {
+"description": "EventSubscription Status denotes the status of the EventSubscription resource.",
+"id": "EventSubscriptionStatus",
+"properties": {
+"description": {
+"description": "Output only. Description of the state.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. State of Event Subscription resource.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"UPDATING",
+"ACTIVE",
+"SUSPENDED",
+"ERROR"
+],
+"enumDescriptions": [
+"Default state.",
+"EventSubscription creation is in progress.",
+"EventSubscription is in Updating status.",
+"EventSubscription is in Active state and is ready to receive events.",
+"EventSubscription is currently suspended.",
+"EventSubscription is in Error state."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventType": {
+"description": "EventType includes fields.",
+"id": "EventType",
+"properties": {
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"enrichedEventPayloadSchema": {
+"description": "Output only. Schema of the event payload after enriched. Will be null if read before send is not supported.",
+"readOnly": true,
+"type": "string"
+},
+"entityType": {
+"description": "Output only. Runtime entity type name. Will be null if entity type map is not available. Used for read before send feature.",
+"readOnly": true,
+"type": "string"
+},
+"eventPayloadSchema": {
+"description": "Output only. Schema of webhook event payload.",
+"readOnly": true,
+"type": "string"
+},
+"eventTypeId": {
+"description": "Output only. Event type id. Example: `ticket.created`.",
+"readOnly": true,
+"type": "string"
+},
+"idPath": {
+"description": "Output only. Id path denotes the path of id in webhook payload.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of the eventtype. Format: projects/{project}/locations/{location}/providers/{provider}/connectors/{connector}/versions/{version}/eventtypes/{eventtype} Only global location is supported for Connector resource.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventingConfig": {
+"description": "Eventing Configuration of a connection",
+"id": "EventingConfig",
+"properties": {
+"additionalVariables": {
+"description": "Optional. Additional eventing related field values",
+"items": {
+"$ref": "ConfigVariable"
+},
+"type": "array"
+},
+"authConfig": {
+"$ref": "AuthConfig",
+"description": "Optional. Auth details for the webhook adapter."
+},
+"deadLetterConfig": {
+"$ref": "DeadLetterConfig",
+"description": "Optional. Dead letter configuration for eventing of a connection."
+},
+"enrichmentEnabled": {
+"description": "Optional. Enrichment Enabled.",
+"type": "boolean"
+},
+"eventsListenerIngressEndpoint": {
+"description": "Optional. Ingress endpoint of the event listener. This is used only when private connectivity is enabled.",
+"type": "string"
+},
+"listenerAuthConfig": {
+"$ref": "AuthConfig",
+"description": "Optional. Auth details for the event listener."
+},
+"privateConnectivityEnabled": {
+"description": "Optional. Private Connectivity Enabled.",
+"type": "boolean"
+},
+"proxyDestinationConfig": {
+"$ref": "DestinationConfig",
+"description": "Optional. Proxy for Eventing auto-registration."
+},
+"registrationDestinationConfig": {
+"$ref": "DestinationConfig",
+"description": "Optional. Registration endpoint for auto registration."
+}
+},
+"type": "object"
+},
+"EventingConfigTemplate": {
+"description": "Eventing Config details of a connector version.",
+"id": "EventingConfigTemplate",
+"properties": {
+"additionalVariables": {
+"description": "Additional fields that need to be rendered.",
+"items": {
+"$ref": "ConfigVariableTemplate"
+},
+"type": "array"
+},
+"authConfigTemplates": {
+"description": "AuthConfigTemplates represents the auth values for the webhook adapter.",
+"items": {
+"$ref": "AuthConfigTemplate"
+},
+"type": "array"
+},
+"autoRefresh": {
+"description": "Auto refresh to extend webhook life.",
+"type": "boolean"
+},
+"autoRegistrationSupported": {
+"description": "Auto Registration supported.",
+"type": "boolean"
+},
+"encryptionKeyTemplate": {
+"$ref": "ConfigVariableTemplate",
+"description": "Encryption key (can be either Google managed or CMEK)."
+},
+"enrichmentSupported": {
+"description": "Enrichment Supported.",
+"type": "boolean"
+},
+"eventListenerType": {
+"description": "The type of the event listener for a specific connector.",
+"enum": [
+"EVENT_LISTENER_TYPE_UNSPECIFIED",
+"WEBHOOK_LISTENER",
+"JMS_LISTENER"
+],
+"enumDescriptions": [
+"Default value.",
+"Webhook listener. e.g. Jira, Zendesk, Servicenow etc.,",
+"JMS Listener. e.g. IBM MQ, Rabbit MQ etc.,"
+],
+"type": "string"
+},
+"isEventingSupported": {
+"description": "Is Eventing Supported.",
+"type": "boolean"
+},
+"listenerAuthConfigTemplates": {
+"description": "ListenerAuthConfigTemplates represents the auth values for the event listener.",
+"items": {
+"$ref": "AuthConfigTemplate"
+},
+"type": "array"
+},
+"proxyDestinationConfig": {
+"$ref": "DestinationConfigTemplate",
+"description": "Proxy destination config template."
+},
+"registrationDestinationConfig": {
+"$ref": "DestinationConfigTemplate",
+"description": "Registration host destination config template."
+},
+"triggerConfigVariables": {
+"description": "Trigger Config fields that needs to be rendered",
+"items": {
+"$ref": "ConfigVariableTemplate"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"EventingDetails": {
+"description": "Eventing Details message.",
+"id": "EventingDetails",
+"properties": {
+"customEventTypes": {
+"description": "Output only. Custom Event Types.",
+"readOnly": true,
+"type": "boolean"
+},
+"description": {
+"description": "Output only. Description.",
+"readOnly": true,
+"type": "string"
+},
+"documentationLink": {
+"description": "Output only. Link to public documentation.",
+"readOnly": true,
+"type": "string"
+},
+"iconLocation": {
+"description": "Output only. Cloud storage location of the icon.",
+"readOnly": true,
+"type": "string"
+},
+"launchStage": {
+"description": "Output only. Eventing Launch Stage.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"PREVIEW",
+"GA",
+"DEPRECATED",
+"TEST",
+"PRIVATE_PREVIEW"
+],
+"enumDescriptions": [
+"LAUNCH_STAGE_UNSPECIFIED.",
+"PREVIEW.",
+"GA.",
+"DEPRECATED.",
+"TEST.",
+"PRIVATE_PREVIEW."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Name of the Eventing trigger.",
+"readOnly": true,
+"type": "string"
+},
+"searchTags": {
+"description": "Output only. Array of search keywords.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"type": {
+"description": "Output only. The type of the event listener for a specific connector.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"WEBHOOK",
+"JMS"
+],
+"enumDescriptions": [
+"Default value.",
+"Webhook listener. e.g. Jira, Zendesk, Servicenow etc.,",
+"JMS Listener. e.g. IBM MQ, Rabbit MQ etc.,"
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventingRuntimeData": {
+"description": "Eventing runtime data has the details related to eventing managed by the system.",
+"id": "EventingRuntimeData",
+"properties": {
+"eventsListenerEndpoint": {
+"description": "Output only. Events listener endpoint. The value will populated after provisioning the events listener.",
+"readOnly": true,
+"type": "string"
+},
+"eventsListenerPscSa": {
+"description": "Output only. Events listener PSC Service attachment. The value will be populated after provisioning the events listener with private connectivity enabled.",
+"readOnly": true,
+"type": "string"
+},
+"status": {
+"$ref": "EventingStatus",
+"description": "Output only. Current status of eventing.",
+"readOnly": true
+},
+"webhookData": {
+"$ref": "WebhookData",
+"description": "Output only. Webhook data.",
+"readOnly": true
+},
+"webhookSubscriptions": {
+"$ref": "WebhookSubscriptions",
+"description": "Output only. Webhook subscriptions.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"EventingStatus": {
+"description": "EventingStatus indicates the state of eventing.",
+"id": "EventingStatus",
+"properties": {
+"description": {
+"description": "Output only. Description of error if State is set to \"ERROR\".",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. State.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"ERROR",
+"INGRESS_ENDPOINT_REQUIRED"
+],
+"enumDescriptions": [
+"Default state.",
+"Eventing is enabled and ready to receive events.",
+"Eventing is not active due to an error.",
+"Ingress endpoint required."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExtractionRule": {
+"description": "Extraction Rule.",
+"id": "ExtractionRule",
+"properties": {
+"extractionRegex": {
+"description": "Regex used to extract backend details from source. If empty, whole source value will be used.",
+"type": "string"
+},
+"source": {
+"$ref": "Source",
+"description": "Source on which the rule is applied."
+}
+},
+"type": "object"
+},
+"ExtractionRules": {
+"description": "Extraction Rules to identity the backends from customer provided configuration in Connection resource.",
+"id": "ExtractionRules",
+"properties": {
+"extractionRule": {
+"description": "Collection of Extraction Rule.",
+"items": {
+"$ref": "ExtractionRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"FetchAuthSchemaResponse": {
+"description": "Response message for Connectors.GetAuthSchema.",
+"id": "FetchAuthSchemaResponse",
+"properties": {
+"authSchemas": {
+"description": "List of AuthSchemas.",
+"items": {
+"$ref": "AuthSchema"
+},
+"type": "array"
+},
+"jsonSchema": {
+"$ref": "JsonAuthSchema",
+"description": "JSON schema of the AuthSchemas. This is only populated if the view is JSON_SCHEMA. The schema is in draft-07 format."
+}
+},
+"type": "object"
+},
+"Field": {
+"description": "Metadata of an entity field.",
+"id": "Field",
+"properties": {
+"additionalDetails": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The following map contains fields that are not explicitly mentioned above,this give connectors the flexibility to add new metadata fields.",
+"type": "object"
+},
+"dataType": {
+"description": "The data type of the Field.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"DATA_TYPE_INT",
+"DATA_TYPE_SMALLINT",
+"DATA_TYPE_DOUBLE",
+"DATA_TYPE_DATE",
+"DATA_TYPE_DATETIME",
+"DATA_TYPE_TIME",
+"DATA_TYPE_STRING",
+"DATA_TYPE_LONG",
+"DATA_TYPE_BOOLEAN",
+"DATA_TYPE_DECIMAL",
+"DATA_TYPE_UUID",
+"DATA_TYPE_BLOB",
+"DATA_TYPE_BIT",
+"DATA_TYPE_TINYINT",
+"DATA_TYPE_INTEGER",
+"DATA_TYPE_BIGINT",
+"DATA_TYPE_FLOAT",
+"DATA_TYPE_REAL",
+"DATA_TYPE_NUMERIC",
+"DATA_TYPE_CHAR",
+"DATA_TYPE_VARCHAR",
+"DATA_TYPE_LONGVARCHAR",
+"DATA_TYPE_TIMESTAMP",
+"DATA_TYPE_NCHAR",
+"DATA_TYPE_NVARCHAR",
+"DATA_TYPE_LONGNVARCHAR",
+"DATA_TYPE_NULL",
+"DATA_TYPE_OTHER",
+"DATA_TYPE_JAVA_OBJECT",
+"DATA_TYPE_DISTINCT",
+"DATA_TYPE_STRUCT",
+"DATA_TYPE_ARRAY",
+"DATA_TYPE_CLOB",
+"DATA_TYPE_REF",
+"DATA_TYPE_DATALINK",
+"DATA_TYPE_ROWID",
+"DATA_TYPE_BINARY",
+"DATA_TYPE_VARBINARY",
+"DATA_TYPE_LONGVARBINARY",
+"DATA_TYPE_NCLOB",
+"DATA_TYPE_SQLXML",
+"DATA_TYPE_REF_CURSOR",
+"DATA_TYPE_TIME_WITH_TIMEZONE",
+"DATA_TYPE_TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Data type is not specified.",
+"DEPRECATED! Use DATA_TYPE_INTEGER.",
+"Short integer(int16) data type.",
+"Double data type.",
+"Date data type.",
+"DEPRECATED! Use DATA_TYPE_TIMESTAMP.",
+"Time data type.",
+"DEPRECATED! Use DATA_TYPE_VARCHAR.",
+"DEPRECATED! Use DATA_TYPE_BIGINT.",
+"Boolean data type.",
+"Decimal data type.",
+"DEPRECATED! Use DATA_TYPE_VARCHAR.",
+"UNSUPPORTED! Binary data type.",
+"Bit data type.",
+"Small integer(int8) data type.",
+"Integer(int32) data type.",
+"Long integer(int64) data type.",
+"Float data type.",
+"Real data type.",
+"Numeric data type.",
+"Char data type.",
+"Varchar data type.",
+"Longvarchar data type.",
+"Timestamp data type.",
+"Nchar data type.",
+"Nvarchar data type.",
+"Longnvarchar data type.",
+"Null data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Row id data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Variable binary data type.",
+"UNSUPPORTED! Long variable binary data type.",
+"UNSUPPORTED! NCLOB data type.",
+"UNSUPPORTED! SQL XML data type is not supported.",
+"UNSUPPORTED! Cursor reference type is not supported.",
+"UNSUPPORTED! Use TIME or TIMESTAMP instead.",
+"UNSUPPORTED! Use TIMESTAMP instead."
+],
+"type": "string"
+},
+"defaultValue": {
+"description": "The following field specifies the default value of the Field provided by the external system if a value is not provided.",
+"type": "any"
+},
+"description": {
+"description": "A brief description of the Field.",
+"type": "string"
+},
+"field": {
+"description": "Name of the Field.",
+"type": "string"
+},
+"jsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema representation of this entity's schema"
+},
+"key": {
+"description": "The following boolean field specifies if the current Field acts as a primary key or id if the parent is of type entity.",
+"type": "boolean"
+},
+"nullable": {
+"description": "Specifies whether a null value is allowed.",
+"type": "boolean"
+},
+"readonly": {
+"description": "Specifies if the Field is readonly.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"FieldComparison": {
+"description": "Field that needs to be compared.",
+"id": "FieldComparison",
+"properties": {
+"boolValue": {
+"description": "Boolean value",
+"type": "boolean"
+},
+"comparator": {
+"description": "Optional. Comparator to use for comparing the field value.",
+"enum": [
+"COMPARATOR_UNSPECIFIED",
+"EQUALS",
+"NOT_EQUALS"
+],
+"enumDescriptions": [
+"The default value.",
+"The field value must be equal to the specified value.",
+"The field value must not be equal to the specified value."
+],
+"type": "string"
+},
+"intValue": {
+"description": "Integer value",
+"format": "int64",
+"type": "string"
+},
+"key": {
+"description": "Optional. Key of the field.",
+"type": "string"
+},
+"stringValue": {
+"description": "String value",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HPAConfig": {
+"description": "Autoscaling config for connector deployment system metrics.",
+"id": "HPAConfig",
+"properties": {
+"cpuUtilizationThreshold": {
+"description": "Output only. Percent CPU utilization where HPA triggers autoscaling.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"memoryUtilizationThreshold": {
+"description": "Output only. Percent Memory utilization where HPA triggers autoscaling.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Header": {
+"description": "Header details for a given header to be added to Endpoint.",
+"id": "Header",
+"properties": {
+"key": {
+"description": "Key of Header.",
+"type": "string"
+},
+"value": {
+"description": "Value of Header.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"InputParameter": {
+"description": "Metadata of an input parameter.",
+"id": "InputParameter",
+"properties": {
+"dataType": {
+"description": "The data type of the Parameter.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"DATA_TYPE_INT",
+"DATA_TYPE_SMALLINT",
+"DATA_TYPE_DOUBLE",
+"DATA_TYPE_DATE",
+"DATA_TYPE_DATETIME",
+"DATA_TYPE_TIME",
+"DATA_TYPE_STRING",
+"DATA_TYPE_LONG",
+"DATA_TYPE_BOOLEAN",
+"DATA_TYPE_DECIMAL",
+"DATA_TYPE_UUID",
+"DATA_TYPE_BLOB",
+"DATA_TYPE_BIT",
+"DATA_TYPE_TINYINT",
+"DATA_TYPE_INTEGER",
+"DATA_TYPE_BIGINT",
+"DATA_TYPE_FLOAT",
+"DATA_TYPE_REAL",
+"DATA_TYPE_NUMERIC",
+"DATA_TYPE_CHAR",
+"DATA_TYPE_VARCHAR",
+"DATA_TYPE_LONGVARCHAR",
+"DATA_TYPE_TIMESTAMP",
+"DATA_TYPE_NCHAR",
+"DATA_TYPE_NVARCHAR",
+"DATA_TYPE_LONGNVARCHAR",
+"DATA_TYPE_NULL",
+"DATA_TYPE_OTHER",
+"DATA_TYPE_JAVA_OBJECT",
+"DATA_TYPE_DISTINCT",
+"DATA_TYPE_STRUCT",
+"DATA_TYPE_ARRAY",
+"DATA_TYPE_CLOB",
+"DATA_TYPE_REF",
+"DATA_TYPE_DATALINK",
+"DATA_TYPE_ROWID",
+"DATA_TYPE_BINARY",
+"DATA_TYPE_VARBINARY",
+"DATA_TYPE_LONGVARBINARY",
+"DATA_TYPE_NCLOB",
+"DATA_TYPE_SQLXML",
+"DATA_TYPE_REF_CURSOR",
+"DATA_TYPE_TIME_WITH_TIMEZONE",
+"DATA_TYPE_TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Data type is not specified.",
+"DEPRECATED! Use DATA_TYPE_INTEGER.",
+"Short integer(int16) data type.",
+"Double data type.",
+"Date data type.",
+"DEPRECATED! Use DATA_TYPE_TIMESTAMP.",
+"Time data type.",
+"DEPRECATED! Use DATA_TYPE_VARCHAR.",
+"DEPRECATED! Use DATA_TYPE_BIGINT.",
+"Boolean data type.",
+"Decimal data type.",
+"DEPRECATED! Use DATA_TYPE_VARCHAR.",
+"UNSUPPORTED! Binary data type.",
+"Bit data type.",
+"Small integer(int8) data type.",
+"Integer(int32) data type.",
+"Long integer(int64) data type.",
+"Float data type.",
+"Real data type.",
+"Numeric data type.",
+"Char data type.",
+"Varchar data type.",
+"Longvarchar data type.",
+"Timestamp data type.",
+"Nchar data type.",
+"Nvarchar data type.",
+"Longnvarchar data type.",
+"Null data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Row id data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Variable binary data type.",
+"UNSUPPORTED! Long variable binary data type.",
+"UNSUPPORTED! NCLOB data type.",
+"UNSUPPORTED! SQL XML data type is not supported.",
+"UNSUPPORTED! Cursor reference type is not supported.",
+"UNSUPPORTED! Use TIME or TIMESTAMP instead.",
+"UNSUPPORTED! Use TIMESTAMP instead."
+],
+"type": "string"
+},
+"defaultValue": {
+"description": "The following field specifies the default value of the Parameter provided by the external system if a value is not provided.",
+"type": "any"
+},
+"description": {
+"description": "A brief description of the Parameter.",
+"type": "string"
+},
+"jsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema representation of this action's parameter"
+},
+"nullable": {
+"description": "Specifies whether a null value is allowed.",
+"type": "boolean"
+},
+"parameter": {
+"description": "Name of the Parameter.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Instance": {
+"description": "Instance represents the interface for SLM services to actuate the state of control plane resources. Example Instance in JSON, where consumer-project-number=123456, producer-project-id=cloud-sql: ```json Instance: { \"name\": \"projects/123456/locations/us-east1/instances/prod-instance\", \"create_time\": { \"seconds\": 1526406431, }, \"labels\": { \"env\": \"prod\", \"foo\": \"bar\" }, \"state\": READY, \"software_versions\": { \"software_update\": \"cloud-sql-09-28-2018\", }, \"maintenance_policy_names\": { \"UpdatePolicy\": \"projects/123456/locations/us-east1/maintenancePolicies/prod-update-policy\", } \"tenant_project_id\": \"cloud-sql-test-tenant\", \"producer_metadata\": { \"cloud-sql-tier\": \"basic\", \"cloud-sql-instance-size\": \"1G\", }, \"provisioned_resources\": [ { \"resource-type\": \"compute-instance\", \"resource-url\": \"https://www.googleapis.com/compute/v1/projects/cloud-sql/zones/us-east1-b/instances/vm-1\", } ], \"maintenance_schedules\": { \"csa_rollout\": { \"start_time\": { \"seconds\": 1526406431, }, \"end_time\": { \"seconds\": 1535406431, }, }, \"ncsa_rollout\": { \"start_time\": { \"seconds\": 1526406431, }, \"end_time\": { \"seconds\": 1535406431, }, } }, \"consumer_defined_name\": \"my-sql-instance1\", } ``` LINT.IfChange",
+"id": "Instance",
+"properties": {
+"consumerDefinedName": {
+"description": "consumer_defined_name is the name of the instance set by the service consumers. Generally this is different from the `name` field which reperesents the system-assigned id of the instance which the service consumers do not recognize. This is a required field for tenants onboarding to Maintenance Window notifications (go/slm-rollout-maintenance-policies#prerequisites).",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"instanceType": {
+"description": "Optional. The instance_type of this instance of format: projects/{project_number}/locations/{location_id}/instanceTypes/{instance_type_id}. Instance Type represents a high-level tier or SKU of the service that this instance belong to. When enabled(eg: Maintenance Rollout), Rollout uses 'instance_type' along with 'software_versions' to determine whether instance needs an update or not.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user provided metadata. Each label is a key-value pair, where both the key and the value are arbitrary strings provided by the user.",
+"type": "object"
+},
+"maintenancePolicyNames": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. The MaintenancePolicies that have been attached to the instance. The key must be of the type name of the oneof policy name defined in MaintenancePolicy, and the referenced policy must define the same policy type. For details, please refer to go/mr-user-guide. Should not be set if maintenance_settings.maintenance_policies is set.",
+"type": "object"
+},
+"maintenanceSchedules": {
+"additionalProperties": {
+"$ref": "MaintenanceSchedule"
+},
+"description": "The MaintenanceSchedule contains the scheduling information of published maintenance schedule with same key as software_versions.",
+"type": "object"
+},
+"maintenanceSettings": {
+"$ref": "MaintenanceSettings",
+"description": "Optional. The MaintenanceSettings associated with instance."
+},
+"name": {
+"description": "Unique name of the resource. It uses the form: `projects/{project_number}/locations/{location_id}/instances/{instance_id}` Note: This name is passed, stored and logged across the rollout system. So use of consumer project_id or any other consumer PII in the name is strongly discouraged for wipeout (go/wipeout) compliance. See go/elysium/project_ids#storage-guidance for more details.",
+"type": "string"
+},
+"notificationParameters": {
+"additionalProperties": {
+"$ref": "NotificationParameter"
+},
+"description": "Optional. notification_parameter are information that service producers may like to include that is not relevant to Rollout. This parameter will only be passed to Gamma and Cloud Logging for notification/logging purpose.",
+"type": "object"
+},
+"producerMetadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. Custom string attributes used primarily to expose producer-specific information in monitoring dashboards. See go/get-instance-metadata.",
+"readOnly": true,
+"type": "object"
+},
+"provisionedResources": {
+"description": "Output only. The list of data plane resources provisioned for this instance, e.g. compute VMs. See go/get-instance-metadata.",
+"items": {
+"$ref": "ProvisionedResource"
+},
+"readOnly": true,
+"type": "array"
+},
+"slmInstanceTemplate": {
+"description": "Link to the SLM instance template. Only populated when updating SLM instances via SSA's Actuation service adaptor. Service producers with custom control plane (e.g. Cloud SQL) doesn't need to populate this field. Instead they should use software_versions.",
+"type": "string"
+},
+"sloMetadata": {
+"$ref": "SloMetadata",
+"description": "Output only. SLO metadata for instance classification in the Standardized dataplane SLO platform. See go/cloud-ssa-standard-slo for feature description.",
+"readOnly": true
+},
+"softwareVersions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Software versions that are used to deploy this instance. This can be mutated by rollout services.",
+"type": "object"
+},
+"state": {
+"description": "Output only. Current lifecycle state of the resource (e.g. if it's being created or ready to use).",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"UPDATING",
+"REPAIRING",
+"DELETING",
+"ERROR"
+],
+"enumDescriptions": [
+"Unspecified state.",
+"Instance is being created.",
+"Instance has been created and is ready to use.",
+"Instance is being updated.",
+"Instance is unheathy and under repair.",
+"Instance is being deleted.",
+"Instance encountered an error and is in indeterministic state."
+],
+"readOnly": true,
+"type": "string"
+},
+"tenantProjectId": {
+"description": "Output only. ID of the associated GCP tenant project. See go/get-instance-metadata.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Timestamp when the resource was last modified.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"JMS": {
+"description": "JMS message denotes the source of the event",
+"id": "JMS",
+"properties": {
+"name": {
+"description": "Optional. Name of the JMS source. i.e. queueName or topicName",
+"type": "string"
+},
+"type": {
+"description": "Optional. Type of the JMS Source. i.e. Queue or Topic",
+"enum": [
+"TYPE_UNSPECIFIED",
+"QUEUE",
+"TOPIC"
+],
+"enumDescriptions": [
+"Default state.",
+"JMS Queue.",
+"JMS Topic."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"JsonAuthSchema": {
+"description": "JsonAuthSchema defines the JSON schema of all authentication types.",
+"id": "JsonAuthSchema",
+"properties": {
+"$schema": {
+"description": "JSON schema of the AuthSchemas.",
+"type": "string"
+},
+"oneOf": {
+"description": "List of AuthObjects.",
+"items": {
+"$ref": "AuthObject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"JsonSchema": {
+"description": "JsonSchema representation of schema metadata",
+"id": "JsonSchema",
+"properties": {
+"default": {
+"description": "The default value of the field or object described by this schema.",
+"type": "any"
+},
+"description": {
+"description": "A description of this schema.",
+"type": "string"
+},
+"enum": {
+"description": "Possible values for an enumeration. This works in conjunction with `type` to represent types with a fixed set of legal values",
+"items": {
+"type": "any"
+},
+"type": "array"
+},
+"format": {
+"description": "Format of the value as per https://json-schema.org/understanding-json-schema/reference/string.html#format",
+"type": "string"
+},
+"items": {
+"$ref": "JsonSchema",
+"description": "Schema that applies to array values, applicable only if this is of type `array`."
+},
+"jdbcType": {
+"description": "JDBC datatype of the field.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"DATA_TYPE_INT",
+"DATA_TYPE_SMALLINT",
+"DATA_TYPE_DOUBLE",
+"DATA_TYPE_DATE",
+"DATA_TYPE_DATETIME",
+"DATA_TYPE_TIME",
+"DATA_TYPE_STRING",
+"DATA_TYPE_LONG",
+"DATA_TYPE_BOOLEAN",
+"DATA_TYPE_DECIMAL",
+"DATA_TYPE_UUID",
+"DATA_TYPE_BLOB",
+"DATA_TYPE_BIT",
+"DATA_TYPE_TINYINT",
+"DATA_TYPE_INTEGER",
+"DATA_TYPE_BIGINT",
+"DATA_TYPE_FLOAT",
+"DATA_TYPE_REAL",
+"DATA_TYPE_NUMERIC",
+"DATA_TYPE_CHAR",
+"DATA_TYPE_VARCHAR",
+"DATA_TYPE_LONGVARCHAR",
+"DATA_TYPE_TIMESTAMP",
+"DATA_TYPE_NCHAR",
+"DATA_TYPE_NVARCHAR",
+"DATA_TYPE_LONGNVARCHAR",
+"DATA_TYPE_NULL",
+"DATA_TYPE_OTHER",
+"DATA_TYPE_JAVA_OBJECT",
+"DATA_TYPE_DISTINCT",
+"DATA_TYPE_STRUCT",
+"DATA_TYPE_ARRAY",
+"DATA_TYPE_CLOB",
+"DATA_TYPE_REF",
+"DATA_TYPE_DATALINK",
+"DATA_TYPE_ROWID",
+"DATA_TYPE_BINARY",
+"DATA_TYPE_VARBINARY",
+"DATA_TYPE_LONGVARBINARY",
+"DATA_TYPE_NCLOB",
+"DATA_TYPE_SQLXML",
+"DATA_TYPE_REF_CURSOR",
+"DATA_TYPE_TIME_WITH_TIMEZONE",
+"DATA_TYPE_TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Data type is not specified.",
+"DEPRECATED! Use DATA_TYPE_INTEGER.",
+"Short integer(int16) data type.",
+"Double data type.",
+"Date data type.",
+"DEPRECATED! Use DATA_TYPE_TIMESTAMP.",
+"Time data type.",
+"DEPRECATED! Use DATA_TYPE_VARCHAR.",
+"DEPRECATED! Use DATA_TYPE_BIGINT.",
+"Boolean data type.",
+"Decimal data type.",
+"DEPRECATED! Use DATA_TYPE_VARCHAR.",
+"UNSUPPORTED! Binary data type.",
+"Bit data type.",
+"Small integer(int8) data type.",
+"Integer(int32) data type.",
+"Long integer(int64) data type.",
+"Float data type.",
+"Real data type.",
+"Numeric data type.",
+"Char data type.",
+"Varchar data type.",
+"Longvarchar data type.",
+"Timestamp data type.",
+"Nchar data type.",
+"Nvarchar data type.",
+"Longnvarchar data type.",
+"Null data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Row id data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Variable binary data type.",
+"UNSUPPORTED! Long variable binary data type.",
+"UNSUPPORTED! NCLOB data type.",
+"UNSUPPORTED! SQL XML data type is not supported.",
+"UNSUPPORTED! Cursor reference type is not supported.",
+"UNSUPPORTED! Use TIME or TIMESTAMP instead.",
+"UNSUPPORTED! Use TIMESTAMP instead."
+],
+"type": "string"
+},
+"properties": {
+"additionalProperties": {
+"$ref": "JsonSchema"
+},
+"description": "The child schemas, applicable only if this is of type `object`. The key is the name of the property and the value is the json schema that describes that property",
+"type": "object"
+},
+"required": {
+"description": "Whether this property is required.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"type": {
+"description": "JSON Schema Validation: A Vocabulary for Structural Validation of JSON",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"JwtClaims": {
+"description": "JWT claims used for the jwt-bearer authorization grant.",
+"id": "JwtClaims",
+"properties": {
+"audience": {
+"description": "Value for the \"aud\" claim.",
+"type": "string"
+},
+"issuer": {
+"description": "Value for the \"iss\" claim.",
+"type": "string"
+},
+"subject": {
+"description": "Value for the \"sub\" claim.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListActionsResponse": {
+"description": "Response message for ListActions API",
+"id": "ListActionsResponse",
+"properties": {
+"actions": {
+"description": "list of actions",
+"items": {
+"$ref": "RuntimeActionSchema"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "token for next page",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListConnectionsResponse": {
+"description": "Response message for ConnectorsService.ListConnections",
+"id": "ListConnectionsResponse",
+"properties": {
+"connections": {
+"description": "Connections.",
+"items": {
+"$ref": "Connection"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListConnectorVersionsResponse": {
+"description": "Response message for Connectors.ListConnectorVersions.",
+"id": "ListConnectorVersionsResponse",
+"properties": {
+"connectorVersions": {
+"description": "A list of connector versions.",
+"items": {
+"$ref": "ConnectorVersion"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListConnectorsResponse": {
+"description": "Response message for Connectors.ListConnectors.",
+"id": "ListConnectorsResponse",
+"properties": {
+"connectors": {
+"description": "A list of connectors.",
+"items": {
+"$ref": "Connector"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListCustomConnectorVersionsResponse": {
+"description": "Response message for Connectors.ListCustomConnectorVersions.",
+"id": "ListCustomConnectorVersionsResponse",
+"properties": {
+"customConnectorVersions": {
+"description": "A list of connector versions.",
+"items": {
+"$ref": "CustomConnectorVersion"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListCustomConnectorsResponse": {
+"description": "Response message for Connectors.ListCustomConnectors.",
+"id": "ListCustomConnectorsResponse",
+"properties": {
+"customConnectors": {
+"description": "A list of customConnectors.",
+"items": {
+"$ref": "CustomConnector"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListEndpointAttachmentsResponse": {
+"description": "Response message for ConnectorsService.ListEndpointAttachments",
+"id": "ListEndpointAttachmentsResponse",
+"properties": {
+"endpointAttachments": {
+"description": "EndpointAttachments.",
+"items": {
+"$ref": "EndpointAttachment"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListEntityTypesResponse": {
+"description": "Response message for ListEntityTypes API",
+"id": "ListEntityTypesResponse",
+"properties": {
+"entityTypes": {
+"description": "list of entity types",
+"items": {
+"$ref": "RuntimeEntitySchema"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "token for next page",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListEventSubscriptionsResponse": {
+"description": "Response message for ConnectorsService.ListEventSubscriptions",
+"id": "ListEventSubscriptionsResponse",
+"properties": {
+"eventSubscriptions": {
+"description": "Subscriptions.",
+"items": {
+"$ref": "EventSubscription"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListEventTypesResponse": {
+"description": "Response message for Connectors.ListEventTypes.",
+"id": "ListEventTypesResponse",
+"properties": {
+"eventTypes": {
+"description": "A list of connector versions.",
+"items": {
+"$ref": "EventType"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListManagedZonesResponse": {
+"description": "Response message for ConnectorsService.ListManagedZones",
+"id": "ListManagedZonesResponse",
+"properties": {
+"managedZones": {
+"description": "ManagedZones.",
+"items": {
+"$ref": "ManagedZone"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListProvidersResponse": {
+"description": "Response message for Connectors.ListProviders.",
+"id": "ListProvidersResponse",
+"properties": {
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"providers": {
+"description": "A list of providers.",
+"items": {
+"$ref": "Provider"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListRuntimeActionSchemasResponse": {
+"description": "Response message for ConnectorsService.ListRuntimeActionSchemas.",
+"id": "ListRuntimeActionSchemasResponse",
+"properties": {
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"runtimeActionSchemas": {
+"description": "Runtime action schemas.",
+"items": {
+"$ref": "RuntimeActionSchema"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListRuntimeEntitySchemasResponse": {
+"description": "Response message for ConnectorsService.ListRuntimeEntitySchemas.",
+"id": "ListRuntimeEntitySchemasResponse",
+"properties": {
+"nextPageToken": {
+"description": "Next page token.",
+"type": "string"
+},
+"runtimeEntitySchemas": {
+"description": "Runtime entity schemas.",
+"items": {
+"$ref": "RuntimeEntitySchema"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListenEventRequest": {
+"description": "Expected request for ListenEvent API.",
+"id": "ListenEventRequest",
+"properties": {
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. Request payload.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"ListenEventResponse": {
+"description": "Expected response for ListenEvent API.",
+"id": "ListenEventResponse",
+"properties": {},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LockConfig": {
+"description": "Determines whether or no a connection is locked. If locked, a reason must be specified.",
+"id": "LockConfig",
+"properties": {
+"locked": {
+"description": "Indicates whether or not the connection is locked.",
+"type": "boolean"
+},
+"reason": {
+"description": "Describes why a connection is locked.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LogicalExpression": {
+"description": "Struct for representing boolean expressions.",
+"id": "LogicalExpression",
+"properties": {
+"fieldComparisons": {
+"description": "Optional. A list of fields to be compared.",
+"items": {
+"$ref": "FieldComparison"
+},
+"type": "array"
+},
+"logicalExpressions": {
+"description": "Optional. A list of nested conditions to be compared.",
+"items": {
+"$ref": "LogicalExpression"
+},
+"type": "array"
+},
+"logicalOperator": {
+"description": "Optional. The logical operator to use between the fields and conditions.",
+"enum": [
+"OPERATOR_UNSPECIFIED",
+"AND",
+"OR"
+],
+"enumDescriptions": [
+"The default value.",
+"AND operator; The conditions must all be true.",
+"OR operator; At least one of the conditions must be true."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"MaintenancePolicy": {
+"description": "Defines policies to service maintenance events.",
+"id": "MaintenancePolicy",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the resource was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user provided metadata. Each label is a key-value pair, where both the key and the value are arbitrary strings provided by the user.",
+"type": "object"
+},
+"name": {
+"description": "Required. MaintenancePolicy name using the form: `projects/{project_id}/locations/{location_id}/maintenancePolicies/{maintenance_policy_id}` where {project_id} refers to a GCP consumer project ID, {location_id} refers to a GCP region/zone, {maintenance_policy_id} must be 1-63 characters long and match the regular expression `[a-z0-9]([-a-z0-9]*[a-z0-9])?`.",
+"type": "string"
+},
+"state": {
+"description": "Optional. The state of the policy.",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"DELETING"
+],
+"enumDescriptions": [
+"Unspecified state.",
+"Resource is ready to be used.",
+"Resource is being deleted. It can no longer be attached to instances."
+],
+"type": "string"
+},
+"updatePolicy": {
+"$ref": "UpdatePolicy",
+"description": "Maintenance policy applicable to instance update."
+},
+"updateTime": {
+"description": "Output only. The time when the resource was updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MaintenanceSchedule": {
+"description": "Maintenance schedule which is exposed to customer and potentially end user, indicating published upcoming future maintenance schedule",
+"id": "MaintenanceSchedule",
+"properties": {
+"canReschedule": {
+"deprecated": true,
+"description": "This field is deprecated, and will be always set to true since reschedule can happen multiple times now. This field should not be removed until all service producers remove this for their customers.",
+"type": "boolean"
+},
+"endTime": {
+"description": "The scheduled end time for the maintenance.",
+"format": "google-datetime",
+"type": "string"
+},
+"rolloutManagementPolicy": {
+"description": "The rollout management policy this maintenance schedule is associated with. When doing reschedule update request, the reschedule should be against this given policy.",
+"type": "string"
+},
+"scheduleDeadlineTime": {
+"description": "schedule_deadline_time is the time deadline any schedule start time cannot go beyond, including reschedule. It's normally the initial schedule start time plus maintenance window length (1 day or 1 week). Maintenance cannot be scheduled to start beyond this deadline.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "The scheduled start time for the maintenance.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MaintenanceSettings": {
+"description": "Maintenance settings associated with instance. Allows service producers and end users to assign settings that controls maintenance on this instance.",
+"id": "MaintenanceSettings",
+"properties": {
+"exclude": {
+"description": "Optional. Exclude instance from maintenance. When true, rollout service will not attempt maintenance on the instance. Rollout service will include the instance in reported rollout progress as not attempted.",
+"type": "boolean"
+},
+"isRollback": {
+"description": "Optional. If the update call is triggered from rollback, set the value as true.",
+"type": "boolean"
+},
+"maintenancePolicies": {
+"additionalProperties": {
+"$ref": "MaintenancePolicy"
+},
+"description": "Optional. The MaintenancePolicies that have been attached to the instance. The key must be of the type name of the oneof policy name defined in MaintenancePolicy, and the embedded policy must define the same policy type. For details, please refer to go/mr-user-guide. Should not be set if maintenance_policy_names is set. If only the name is needed, then only populate MaintenancePolicy.name.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"MaintenanceWindow": {
+"description": "MaintenanceWindow definition.",
+"id": "MaintenanceWindow",
+"properties": {
+"dailyCycle": {
+"$ref": "DailyCycle",
+"description": "Daily cycle."
+},
+"weeklyCycle": {
+"$ref": "WeeklyCycle",
+"description": "Weekly cycle."
+}
+},
+"type": "object"
+},
+"ManagedZone": {
+"description": "represents the Connector's Managed Zone resource",
+"id": "ManagedZone",
+"properties": {
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of the resource.",
+"type": "string"
+},
+"dns": {
+"description": "Required. DNS Name of the resource",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
+"type": "object"
+},
+"name": {
+"description": "Output only. Resource name of the Managed Zone. Format: projects/{project}/locations/global/managedZones/{managed_zone}",
+"readOnly": true,
+"type": "string"
+},
+"targetProject": {
+"description": "Required. The name of the Target Project",
+"type": "string"
+},
+"targetVpc": {
+"description": "Required. The name of the Target Project VPC Network",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"MarketplaceConnectorDetails": {
+"description": "Marketplace connector details.",
+"id": "MarketplaceConnectorDetails",
+"properties": {
+"marketplaceProduct": {
+"description": "Marketplace product name.",
+"type": "string"
+},
+"marketplaceProductId": {
+"description": "Marketplace product ID.",
+"type": "string"
+},
+"marketplaceProductUri": {
+"description": "Marketplace product URL.",
+"type": "string"
+},
+"partner": {
+"description": "The name of the partner.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MultipleSelectConfig": {
+"description": "MultipleSelectConfig represents the multiple options for a config variable.",
+"id": "MultipleSelectConfig",
+"properties": {
+"allowCustomValues": {
+"description": "Optional. Allow custom values.",
+"type": "boolean"
+},
+"multipleSelectOptions": {
+"description": "Required. Multiple select options.",
+"items": {
+"$ref": "MultipleSelectOption"
+},
+"type": "array"
+},
+"valueSeparator": {
+"description": "Required. Value separator. Only \",\" can be used for OAuth auth code flow scope field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MultipleSelectOption": {
+"description": "MultiplSelecteOption represents the single option for a config variable.",
+"id": "MultipleSelectOption",
+"properties": {
+"description": {
+"description": "Optional. Value of the option.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. Display name of the option.",
+"type": "string"
+},
+"key": {
+"description": "Required. Key of the option.",
+"type": "string"
+},
+"preselected": {
+"description": "Optional. Indicates if the option is preselected.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"NetworkConfig": {
+"description": "Regional Network Config.",
+"id": "NetworkConfig",
+"properties": {
+"egressIps": {
+"description": "Output only. Egress IPs",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"egressMode": {
+"description": "Optional. Egress mode for the network.",
+"enum": [
+"NETWORK_EGRESS_MODE_UNSPECIFIED",
+"AUTO_IP",
+"STATIC_IP"
+],
+"enumDescriptions": [
+"Egress mode unspecified.",
+"Network egress through auto assigned IPs.",
+"Network egress through static IPs."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"NodeConfig": {
+"description": "Node configuration for the connection.",
+"id": "NodeConfig",
+"properties": {
+"maxNodeCount": {
+"description": "Maximum number of nodes in the runtime nodes.",
+"format": "int32",
+"type": "integer"
+},
+"minNodeCount": {
+"description": "Minimum number of nodes in the runtime nodes.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"NodeSloMetadata": {
+"description": "Node information for custom per-node SLO implementations. SSA does not support per-node SLO, but producers can populate per-node information in SloMetadata for custom precomputations. SSA Eligibility Exporter will emit per-node metric based on this information.",
+"id": "NodeSloMetadata",
+"properties": {
+"location": {
+"description": "The location of the node, if different from instance location.",
+"type": "string"
+},
+"nodeId": {
+"description": "The id of the node. This should be equal to SaasInstanceNode.node_id.",
+"type": "string"
+},
+"perSliEligibility": {
+"$ref": "PerSliSloEligibility",
+"description": "If present, this will override eligibility for the node coming from instance or exclusions for specified SLIs."
+}
+},
+"type": "object"
+},
+"NotificationParameter": {
+"description": "Contains notification related data.",
+"id": "NotificationParameter",
+"properties": {
+"values": {
+"description": "Optional. Array of string values. e.g. instance's replica information.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Oauth2AuthCodeFlow": {
+"description": "Parameters to support Oauth 2.0 Auth Code Grant Authentication. See https://www.rfc-editor.org/rfc/rfc6749#section-1.3.1 for more details.",
+"id": "Oauth2AuthCodeFlow",
+"properties": {
+"authCode": {
+"description": "Authorization code to be exchanged for access and refresh tokens.",
+"type": "string"
+},
+"authUri": {
+"description": "Auth URL for Authorization Code Flow",
+"type": "string"
+},
+"clientId": {
+"description": "Client ID for user-provided OAuth app.",
+"type": "string"
+},
+"clientSecret": {
+"$ref": "Secret",
+"description": "Client secret for user-provided OAuth app."
+},
+"enablePkce": {
+"description": "Whether to enable PKCE when the user performs the auth code flow.",
+"type": "boolean"
+},
+"pkceVerifier": {
+"description": "PKCE verifier to be used during the auth code exchange.",
+"type": "string"
+},
+"redirectUri": {
+"description": "Redirect URI to be provided during the auth code exchange.",
+"type": "string"
+},
+"scopes": {
+"description": "Scopes the connection will request when the user performs the auth code flow.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Oauth2AuthCodeFlowGoogleManaged": {
+"description": "Parameters to support Oauth 2.0 Auth Code Grant Authentication using Google Provided OAuth Client. See https://tools.ietf.org/html/rfc6749#section-1.3.1 for more details.",
+"id": "Oauth2AuthCodeFlowGoogleManaged",
+"properties": {
+"authCode": {
+"description": "Optional. Authorization code to be exchanged for access and refresh tokens.",
+"type": "string"
+},
+"redirectUri": {
+"description": "Optional. Redirect URI to be provided during the auth code exchange.",
+"type": "string"
+},
+"scopes": {
+"description": "Required. Scopes the connection will request when the user performs the auth code flow.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Oauth2ClientCredentials": {
+"description": "Parameters to support Oauth 2.0 Client Credentials Grant Authentication. See https://tools.ietf.org/html/rfc6749#section-1.3.4 for more details.",
+"id": "Oauth2ClientCredentials",
+"properties": {
+"clientId": {
+"description": "The client identifier.",
+"type": "string"
+},
+"clientSecret": {
+"$ref": "Secret",
+"description": "Secret version reference containing the client secret."
+}
+},
+"type": "object"
+},
+"Oauth2JwtBearer": {
+"description": "Parameters to support JSON Web Token (JWT) Profile for Oauth 2.0 Authorization Grant based authentication. See https://tools.ietf.org/html/rfc7523 for more details.",
+"id": "Oauth2JwtBearer",
+"properties": {
+"clientKey": {
+"$ref": "Secret",
+"description": "Secret version reference containing a PKCS#8 PEM-encoded private key associated with the Client Certificate. This private key will be used to sign JWTs used for the jwt-bearer authorization grant. Specified in the form as: `projects/*/secrets/*/versions/*`."
+},
+"jwtClaims": {
+"$ref": "JwtClaims",
+"description": "JwtClaims providers fields to generate the token."
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PartnerMetadata": {
+"description": "Partner metadata details. This will be populated when publishing the custom connector as a partner connector version. On publishing, parntner connector version will be created using the fields in PartnerMetadata.",
+"id": "PartnerMetadata",
+"properties": {
+"acceptGcpTos": {
+"description": "Required. Whether the user has accepted the Google Cloud Platform Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Marketplace Terms of Service (https://cloud.google.com/terms/marketplace/launcher?hl=en).",
+"type": "boolean"
+},
+"additionalComments": {
+"description": "Optional. Additional comments for the submission.",
+"type": "string"
+},
+"confirmPartnerRequirements": {
+"description": "Required. Confirmation that connector meets all applicable requirements mentioned in the Partner Connector Publishing requirements list and Partner onboardiong requirements list (https://cloud.google.com/marketplace/docs/partners/get-started#requirements).",
+"type": "boolean"
+},
+"demoUri": {
+"description": "Required. Public URL for the demo video.",
+"type": "string"
+},
+"integrationTemplates": {
+"description": "Required. Integration example templates for the custom connector.",
+"type": "string"
+},
+"marketplaceProduct": {
+"description": "Optional. Marketplace product name.",
+"type": "string"
+},
+"marketplaceProductId": {
+"description": "Required. Marketplace product ID.",
+"type": "string"
+},
+"marketplaceProductProjectId": {
+"description": "Optional. Marketplace product project ID.",
+"type": "string"
+},
+"marketplaceProductUri": {
+"description": "Optional. Marketplace product URL.",
+"type": "string"
+},
+"partner": {
+"description": "Required. Partner name.",
+"type": "string"
+},
+"partnerConnectorDisplayName": {
+"description": "Required. Partner connector display name.",
+"type": "string"
+},
+"publishRequestTime": {
+"description": "Output only. Publish request time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"targetApplication": {
+"description": "Required. Target application for which partner connector is built.",
+"type": "string"
+},
+"targetCustomerSegment": {
+"description": "Required. Target customer segment for the partner connector.",
+"type": "string"
+},
+"useCases": {
+"description": "Required. Details about partner connector use cases.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PerSliSloEligibility": {
+"description": "PerSliSloEligibility is a mapping from an SLI name to eligibility.",
+"id": "PerSliSloEligibility",
+"properties": {
+"eligibilities": {
+"additionalProperties": {
+"$ref": "SloEligibility"
+},
+"description": "An entry in the eligibilities map specifies an eligibility for a particular SLI for the given instance. The SLI key in the name must be a valid SLI name specified in the Eligibility Exporter binary flags otherwise an error will be emitted by Eligibility Exporter and the oncaller will be alerted. If an SLI has been defined in the binary flags but the eligibilities map does not contain it, the corresponding SLI time series will not be emitted by the Eligibility Exporter. This ensures a smooth rollout and compatibility between the data produced by different versions of the Eligibility Exporters. If eligibilities map contains a key for an SLI which has not been declared in the binary flags, there will be an error message emitted in the Eligibility Exporter log and the metric for the SLI in question will not be emitted.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Provider": {
+"description": "Provider indicates the owner who provides the connectors.",
+"id": "Provider",
+"properties": {
+"createTime": {
+"description": "Output only. Created time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Output only. Description of the resource.",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Output only. Display name.",
+"readOnly": true,
+"type": "string"
+},
+"documentationUri": {
+"description": "Output only. Link to documentation page.",
+"readOnly": true,
+"type": "string"
+},
+"externalUri": {
+"description": "Output only. Link to external page.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. Resource labels to represent user-provided metadata. Refer to cloud documentation on labels for more details. https://cloud.google.com/compute/docs/labeling-resources",
+"readOnly": true,
+"type": "object"
+},
+"launchStage": {
+"description": "Output only. Flag to mark the version indicating the launch stage.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"PREVIEW",
+"GA",
+"DEPRECATED",
+"TEST",
+"PRIVATE_PREVIEW"
+],
+"enumDescriptions": [
+"LAUNCH_STAGE_UNSPECIFIED.",
+"PREVIEW.",
+"GA.",
+"DEPRECATED.",
+"TEST.",
+"PRIVATE_PREVIEW."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of the Provider. Format: projects/{project}/locations/{location}/providers/{provider} Only global location is supported for Provider resource.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Updated time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"webAssetsLocation": {
+"description": "Output only. Cloud storage location of icons etc consumed by UI.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProvisionedResource": {
+"description": "Describes provisioned dataplane resources.",
+"id": "ProvisionedResource",
+"properties": {
+"resourceType": {
+"description": "Type of the resource. This can be either a GCP resource or a custom one (e.g. another cloud provider's VM). For GCP compute resources use singular form of the names listed in GCP compute API documentation (https://cloud.google.com/compute/docs/reference/rest/v1/), prefixed with 'compute-', for example: 'compute-instance', 'compute-disk', 'compute-autoscaler'.",
+"type": "string"
+},
+"resourceUrl": {
+"description": "URL identifying the resource, e.g. \"https://www.googleapis.com/compute/v1/projects/...)\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PublishCustomConnectorVersionRequest": {
+"description": "Request message for ConnectorsService.PublishCustomConnectorVersion",
+"id": "PublishCustomConnectorVersionRequest",
+"properties": {
+"partnerMetadata": {
+"$ref": "PartnerMetadata",
+"description": "Required. Partner metadata details for validating and publishing the custom connector as a partner connector version."
+}
+},
+"type": "object"
+},
+"PublishStatus": {
+"description": "Publish status of a custom connector.",
+"id": "PublishStatus",
+"properties": {
+"publishState": {
+"description": "Output only. Publish state of the custom connector.",
+"enum": [
+"PUBLISH_STATE_UNSPECIFIED",
+"PUBLISHED",
+"PUBLISH_IN_PROGRESS",
+"UNPUBLISHED"
+],
+"enumDescriptions": [
+"State Unspecified.",
+"Connector version has been published as partner connector version.",
+"Connector version is in the process of being published as partner connector version.",
+"Connector version has been unpublished as partner connector version"
+],
+"readOnly": true,
+"type": "string"
+},
+"publishTime": {
+"description": "Output only. Publish time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"publishedAs": {
+"description": "Output only. Partner connector name. Will be set on the custom connector. Format: providers/partner/connectors//versions/",
+"readOnly": true,
+"type": "string"
+},
+"publishedSource": {
+"description": "Output only. Custom connector name. Will be set on the partner connector. Format: providers/customconnectors/connectors//versions/",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"RefreshConnectionSchemaMetadataRequest": {
+"description": "Request message for ConnectorsService.RefreshConnectionSchemaMetadata.",
+"id": "RefreshConnectionSchemaMetadataRequest",
+"properties": {},
+"type": "object"
+},
+"RegionalSettings": {
+"description": "Regional Settings details.",
+"id": "RegionalSettings",
+"properties": {
+"encryptionConfig": {
+"$ref": "EncryptionConfig",
+"description": "Optional. Regional encryption config to hold CMEK details."
+},
+"name": {
+"description": "Output only. Resource name of the Connection. Format: projects/{project}/locations/{location}/regionalSettings",
+"readOnly": true,
+"type": "string"
+},
+"networkConfig": {
+"$ref": "NetworkConfig",
+"description": "Optional. Regional network config."
+},
+"provisioned": {
+"description": "Output only. Specifies whether the region is provisioned.",
+"readOnly": true,
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"RepairEventingRequest": {
+"description": "Request message for ConnectorsService.RepairEventing",
+"id": "RepairEventingRequest",
+"properties": {},
+"type": "object"
+},
+"Resource": {
+"description": "Resource definition",
+"id": "Resource",
+"properties": {
+"pathTemplate": {
+"description": "Optional. Template to uniquely represent a Google Cloud resource in a format IAM expects This is a template that can have references to other values provided in the config variable template.",
+"type": "string"
+},
+"type": {
+"description": "Optional. Different types of resource supported.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"GCP_PROJECT",
+"GCP_RESOURCE",
+"GCP_SECRETMANAGER_SECRET",
+"GCP_SECRETMANAGER_SECRET_VERSION"
+],
+"enumDescriptions": [
+"Value type is not specified.",
+"Google Cloud Project Resource.",
+"Any Google Cloud Resource which is identified uniquely by IAM.",
+"Google Cloud Secret Resource.",
+"Google Cloud Secret Version Resource."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResourceLimits": {
+"description": "Resource limits defined for connection pods of a given connector type.",
+"id": "ResourceLimits",
+"properties": {
+"cpu": {
+"description": "Output only. CPU limit.",
+"readOnly": true,
+"type": "string"
+},
+"memory": {
+"description": "Output only. Memory limit.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResourceRequests": {
+"description": "Resource requests defined for connection pods of a given connector type.",
+"id": "ResourceRequests",
+"properties": {
+"cpu": {
+"description": "Output only. CPU request.",
+"readOnly": true,
+"type": "string"
+},
+"memory": {
+"description": "Output only. Memory request.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResultMetadata": {
+"description": "Metadata of result field.",
+"id": "ResultMetadata",
+"properties": {
+"dataType": {
+"description": "The data type of the field.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"DATA_TYPE_INT",
+"DATA_TYPE_SMALLINT",
+"DATA_TYPE_DOUBLE",
+"DATA_TYPE_DATE",
+"DATA_TYPE_DATETIME",
+"DATA_TYPE_TIME",
+"DATA_TYPE_STRING",
+"DATA_TYPE_LONG",
+"DATA_TYPE_BOOLEAN",
+"DATA_TYPE_DECIMAL",
+"DATA_TYPE_UUID",
+"DATA_TYPE_BLOB",
+"DATA_TYPE_BIT",
+"DATA_TYPE_TINYINT",
+"DATA_TYPE_INTEGER",
+"DATA_TYPE_BIGINT",
+"DATA_TYPE_FLOAT",
+"DATA_TYPE_REAL",
+"DATA_TYPE_NUMERIC",
+"DATA_TYPE_CHAR",
+"DATA_TYPE_VARCHAR",
+"DATA_TYPE_LONGVARCHAR",
+"DATA_TYPE_TIMESTAMP",
+"DATA_TYPE_NCHAR",
+"DATA_TYPE_NVARCHAR",
+"DATA_TYPE_LONGNVARCHAR",
+"DATA_TYPE_NULL",
+"DATA_TYPE_OTHER",
+"DATA_TYPE_JAVA_OBJECT",
+"DATA_TYPE_DISTINCT",
+"DATA_TYPE_STRUCT",
+"DATA_TYPE_ARRAY",
+"DATA_TYPE_CLOB",
+"DATA_TYPE_REF",
+"DATA_TYPE_DATALINK",
+"DATA_TYPE_ROWID",
+"DATA_TYPE_BINARY",
+"DATA_TYPE_VARBINARY",
+"DATA_TYPE_LONGVARBINARY",
+"DATA_TYPE_NCLOB",
+"DATA_TYPE_SQLXML",
+"DATA_TYPE_REF_CURSOR",
+"DATA_TYPE_TIME_WITH_TIMEZONE",
+"DATA_TYPE_TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Data type is not specified.",
+"DEPRECATED! Use DATA_TYPE_INTEGER.",
+"Short integer(int16) data type.",
+"Double data type.",
+"Date data type.",
+"DEPRECATED! Use DATA_TYPE_TIMESTAMP.",
+"Time data type.",
+"DEPRECATED! Use DATA_TYPE_VARCHAR.",
+"DEPRECATED! Use DATA_TYPE_BIGINT.",
+"Boolean data type.",
+"Decimal data type.",
+"DEPRECATED! Use DATA_TYPE_VARCHAR.",
+"UNSUPPORTED! Binary data type.",
+"Bit data type.",
+"Small integer(int8) data type.",
+"Integer(int32) data type.",
+"Long integer(int64) data type.",
+"Float data type.",
+"Real data type.",
+"Numeric data type.",
+"Char data type.",
+"Varchar data type.",
+"Longvarchar data type.",
+"Timestamp data type.",
+"Nchar data type.",
+"Nvarchar data type.",
+"Longnvarchar data type.",
+"Null data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Row id data type.",
+"UNSUPPORTED! Binary data type.",
+"UNSUPPORTED! Variable binary data type.",
+"UNSUPPORTED! Long variable binary data type.",
+"UNSUPPORTED! NCLOB data type.",
+"UNSUPPORTED! SQL XML data type is not supported.",
+"UNSUPPORTED! Cursor reference type is not supported.",
+"UNSUPPORTED! Use TIME or TIMESTAMP instead.",
+"UNSUPPORTED! Use TIMESTAMP instead."
+],
+"type": "string"
+},
+"defaultValue": {
+"description": "The following field specifies the default value of the Parameter provided by the external system if a value is not provided.",
+"type": "any"
+},
+"description": {
+"description": "A brief description of the field.",
+"type": "string"
+},
+"field": {
+"description": "Name of the result field.",
+"type": "string"
+},
+"jsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema representation of this action's result"
+},
+"nullable": {
+"description": "Specifies whether a null value is allowed.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"RetryEventSubscriptionRequest": {
+"description": "Request message for ConnectorsService.RefreshEventSubscription",
+"id": "RetryEventSubscriptionRequest",
+"properties": {},
+"type": "object"
+},
+"RoleGrant": {
+"description": "This configuration defines all the Cloud IAM roles that needs to be granted to a particular Google Cloud resource for the selected principal like service account. These configurations will let UI display to customers what IAM roles need to be granted by them. Or these configurations can be used by the UI to render a 'grant' button to do the same on behalf of the user.",
+"id": "RoleGrant",
+"properties": {
+"helperTextTemplate": {
+"description": "Optional. Template that UI can use to provide helper text to customers.",
+"type": "string"
+},
+"principal": {
+"description": "Optional. Prinicipal/Identity for whom the role need to assigned.",
+"enum": [
+"PRINCIPAL_UNSPECIFIED",
+"CONNECTOR_SA"
+],
+"enumDescriptions": [
+"Value type is not specified.",
+"Service Account used for Connector workload identity This is either the default service account if unspecified or Service Account provided by Customers through BYOSA."
+],
+"type": "string"
+},
+"resource": {
+"$ref": "Resource",
+"description": "Optional. Resource on which the roles needs to be granted for the principal."
+},
+"roles": {
+"description": "Optional. List of roles that need to be granted.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"RuntimeActionSchema": {
+"description": "Schema of a runtime action.",
+"id": "RuntimeActionSchema",
+"properties": {
+"action": {
+"description": "Output only. Name of the action.",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Output only. Brief Description of action",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Output only. Display Name of action to be shown on client side",
+"readOnly": true,
+"type": "string"
+},
+"inputJsonSchema": {
+"$ref": "JsonSchema",
+"description": "Output only. JsonSchema representation of this action's input metadata",
+"readOnly": true
+},
+"inputParameters": {
+"description": "Output only. List of input parameter metadata for the action.",
+"items": {
+"$ref": "InputParameter"
+},
+"readOnly": true,
+"type": "array"
+},
+"inputSchemaAsString": {
+"description": "Output only. Input schema as string.",
+"readOnly": true,
+"type": "string"
+},
+"resultJsonSchema": {
+"$ref": "JsonSchema",
+"description": "Output only. JsonSchema representation of this action's result metadata",
+"readOnly": true
+},
+"resultMetadata": {
+"description": "Output only. List of result field metadata.",
+"items": {
+"$ref": "ResultMetadata"
+},
+"readOnly": true,
+"type": "array"
+},
+"resultSchemaAsString": {
+"description": "Output only. Result schema as string.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"RuntimeConfig": {
+"description": "RuntimeConfig is the singleton resource of each location. It includes generic resource configs consumed by control plane and runtime plane like: pub/sub topic/subscription resource name, Cloud Storage location storing schema etc.",
+"id": "RuntimeConfig",
+"properties": {
+"conndSubscription": {
+"description": "Output only. Pub/Sub subscription for connd to receive message. E.g. projects/{project-id}/subscriptions/{topic-id}",
+"readOnly": true,
+"type": "string"
+},
+"conndTopic": {
+"description": "Output only. Pub/Sub topic for connd to send message. E.g. projects/{project-id}/topics/{topic-id}",
+"readOnly": true,
+"type": "string"
+},
+"controlPlaneSubscription": {
+"description": "Output only. Pub/Sub subscription for control plane to receive message. E.g. projects/{project-id}/subscriptions/{topic-id}",
+"readOnly": true,
+"type": "string"
+},
+"controlPlaneTopic": {
+"description": "Output only. Pub/Sub topic for control plne to send message. communication. E.g. projects/{project-id}/topics/{topic-id}",
+"readOnly": true,
+"type": "string"
+},
+"locationId": {
+"description": "Output only. location_id of the runtime location. E.g. \"us-west1\".",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Name of the runtimeConfig resource. Format: projects/{project}/locations/{location}/runtimeConfig",
+"readOnly": true,
+"type": "string"
+},
+"runtimeEndpoint": {
+"description": "Output only. The endpoint of the connectors runtime ingress.",
+"readOnly": true,
+"type": "string"
+},
+"schemaGcsBucket": {
+"description": "Output only. The Cloud Storage bucket that stores connector's schema reports.",
+"readOnly": true,
+"type": "string"
+},
+"serviceDirectory": {
+"description": "Output only. The name of the Service Directory service name.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of the location.",
+"enum": [
+"STATE_UNSPECIFIED",
+"INACTIVE",
+"ACTIVATING",
+"ACTIVE",
+"CREATING",
+"DELETING",
+"UPDATING"
+],
+"enumDeprecated": [
+false,
+true,
+true,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"STATE_UNSPECIFIED.",
+"INACTIVE.",
+"ACTIVATING.",
+"ACTIVE.",
+"CREATING.",
+"DELETING.",
+"UPDATING."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"RuntimeEntitySchema": {
+"description": "Schema of a runtime entity.",
+"id": "RuntimeEntitySchema",
+"properties": {
+"entity": {
+"description": "Output only. Name of the entity.",
+"readOnly": true,
+"type": "string"
+},
+"fields": {
+"description": "Output only. List of fields in the entity.",
+"items": {
+"$ref": "Field"
+},
+"readOnly": true,
+"type": "array"
+},
+"jsonSchema": {
+"$ref": "JsonSchema",
+"description": "Output only. JsonSchema representation of this entity's metadata",
+"readOnly": true
+},
+"operations": {
+"description": "List of operations supported by this entity",
+"items": {
+"enum": [
+"OPERATION_UNSPECIFIED",
+"LIST",
+"GET",
+"CREATE",
+"UPDATE",
+"DELETE"
+],
+"enumDescriptions": [
+"Operation unspecified.",
+"This operation means entity type supports LIST entities.",
+"This operation means entity type supports GET entity.",
+"This operation means entity type supports CREATE entity.",
+"This operation means entity type supports UPDATE entity.",
+"This operation means entity type supports DELETE entity."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Schedule": {
+"description": "Configure the schedule.",
+"id": "Schedule",
+"properties": {
+"day": {
+"description": "Allows to define schedule that runs specified day of the week.",
+"enum": [
+"DAY_OF_WEEK_UNSPECIFIED",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY",
+"SUNDAY"
+],
+"enumDescriptions": [
+"The day of the week is unspecified.",
+"Monday",
+"Tuesday",
+"Wednesday",
+"Thursday",
+"Friday",
+"Saturday",
+"Sunday"
+],
+"type": "string"
+},
+"duration": {
+"description": "Output only. Duration of the time window, set by service producer.",
+"format": "google-duration",
+"type": "string"
+},
+"startTime": {
+"$ref": "TimeOfDay",
+"description": "Time within the window to start the operations."
+}
+},
+"type": "object"
+},
+"SchemaRefreshConfig": {
+"description": "Config for connection schema refresh",
+"id": "SchemaRefreshConfig",
+"properties": {
+"useActionDisplayNames": {
+"description": "Whether to use displayName for actions in UI.",
+"type": "boolean"
+},
+"useSynchronousSchemaRefresh": {
+"description": "Whether to use synchronous schema refresh.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SearchConnectionInstance": {
+"description": "SearchConnectionInstance represents an instance of connector with specific fields",
+"id": "SearchConnectionInstance",
+"properties": {
+"actionSchema": {
+"$ref": "RuntimeActionSchema",
+"description": "Output only. Schema of a runtime action.",
+"readOnly": true
+},
+"connection": {
+"$ref": "Connection",
+"description": "Output only. Connection details",
+"readOnly": true
+},
+"entitySchema": {
+"$ref": "RuntimeEntitySchema",
+"description": "Output only. Schema of a runtime entity.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"SearchConnectionsResponse": {
+"description": "Response message for Connectors.SearchConnections.",
+"id": "SearchConnectionsResponse",
+"properties": {
+"connections": {
+"description": "A list of connectors.",
+"items": {
+"$ref": "SearchConnectionInstance"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Optional. page_token",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Secret": {
+"description": "Secret provides a reference to entries in Secret Manager.",
+"id": "Secret",
+"properties": {
+"secretVersion": {
+"description": "The resource name of the secret version in the format, format as: `projects/*/secrets/*/versions/*`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Settings": {
+"description": "Global Settings details.",
+"id": "Settings",
+"properties": {
+"name": {
+"description": "Output only. Resource name of the Connection. Format: projects/{project}/locations/global/settings}",
+"readOnly": true,
+"type": "string"
+},
+"payg": {
+"description": "Output only. Flag indicates if user is in PayG model",
+"readOnly": true,
+"type": "boolean"
+},
+"tenantProjectId": {
+"description": "Output only. Tenant project id of the consumer project.",
+"readOnly": true,
+"type": "string"
+},
+"vpcsc": {
+"description": "Optional. Flag indicates whether vpc-sc is enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SloEligibility": {
+"description": "SloEligibility is a tuple containing eligibility value: true if an instance is eligible for SLO calculation or false if it should be excluded from all SLO-related calculations along with a user-defined reason.",
+"id": "SloEligibility",
+"properties": {
+"eligible": {
+"description": "Whether an instance is eligible or ineligible.",
+"type": "boolean"
+},
+"reason": {
+"description": "User-defined reason for the current value of instance eligibility. Usually, this can be directly mapped to the internal state. An empty reason is allowed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SloMetadata": {
+"description": "SloMetadata contains resources required for proper SLO classification of the instance.",
+"id": "SloMetadata",
+"properties": {
+"nodes": {
+"description": "Optional. List of nodes. Some producers need to use per-node metadata to calculate SLO. This field allows such producers to publish per-node SLO meta data, which will be consumed by SSA Eligibility Exporter and published in the form of per node metric to Monarch.",
+"items": {
+"$ref": "NodeSloMetadata"
+},
+"type": "array"
+},
+"perSliEligibility": {
+"$ref": "PerSliSloEligibility",
+"description": "Optional. Multiple per-instance SLI eligibilities which apply for individual SLIs."
+},
+"tier": {
+"description": "Name of the SLO tier the Instance belongs to. This name will be expected to match the tiers specified in the service SLO configuration. Field is mandatory and must not be empty.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Source": {
+"description": "Source to extract the backend from.",
+"id": "Source",
+"properties": {
+"fieldId": {
+"description": "Field identifier. For example config vaiable name.",
+"type": "string"
+},
+"sourceType": {
+"description": "Type of the source.",
+"enum": [
+"SOURCE_TYPE_UNSPECIFIED",
+"CONFIG_VARIABLE"
+],
+"enumDescriptions": [
+"Default SOURCE.",
+"Config Variable source type."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"SshPublicKey": {
+"description": "Parameters to support Ssh public key Authentication.",
+"id": "SshPublicKey",
+"properties": {
+"certType": {
+"description": "Format of SSH Client cert.",
+"type": "string"
+},
+"sshClientCert": {
+"$ref": "Secret",
+"description": "SSH Client Cert. It should contain both public and private key."
+},
+"sshClientCertPass": {
+"$ref": "Secret",
+"description": "Password (passphrase) for ssh client certificate if it has one."
+},
+"username": {
+"description": "The user account used to authenticate.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SslConfig": {
+"description": "SSL Configuration of a connection",
+"id": "SslConfig",
+"properties": {
+"additionalVariables": {
+"description": "Optional. Additional SSL related field values",
+"items": {
+"$ref": "ConfigVariable"
+},
+"type": "array"
+},
+"clientCertType": {
+"description": "Optional. Type of Client Cert (PEM/JKS/.. etc.)",
+"enum": [
+"CERT_TYPE_UNSPECIFIED",
+"PEM"
+],
+"enumDescriptions": [
+"Cert type unspecified.",
+"Privacy Enhanced Mail (PEM) Type"
+],
+"type": "string"
+},
+"clientCertificate": {
+"$ref": "Secret",
+"description": "Optional. Client Certificate"
+},
+"clientPrivateKey": {
+"$ref": "Secret",
+"description": "Optional. Client Private Key"
+},
+"clientPrivateKeyPass": {
+"$ref": "Secret",
+"description": "Optional. Secret containing the passphrase protecting the Client Private Key"
+},
+"privateServerCertificate": {
+"$ref": "Secret",
+"description": "Optional. Private Server Certificate. Needs to be specified if trust model is `PRIVATE`."
+},
+"serverCertType": {
+"description": "Optional. Type of Server Cert (PEM/JKS/.. etc.)",
+"enum": [
+"CERT_TYPE_UNSPECIFIED",
+"PEM"
+],
+"enumDescriptions": [
+"Cert type unspecified.",
+"Privacy Enhanced Mail (PEM) Type"
+],
+"type": "string"
+},
+"trustModel": {
+"description": "Optional. Trust Model of the SSL connection",
+"enum": [
+"PUBLIC",
+"PRIVATE",
+"INSECURE"
+],
+"enumDescriptions": [
+"Public Trust Model. Takes the Default Java trust store.",
+"Private Trust Model. Takes custom/private trust store.",
+"Insecure Trust Model. Accept all certificates."
+],
+"type": "string"
+},
+"type": {
+"description": "Optional. Controls the ssl type for the given connector version.",
+"enum": [
+"SSL_TYPE_UNSPECIFIED",
+"TLS",
+"MTLS"
+],
+"enumDescriptions": [
+"No SSL configuration required.",
+"TLS Handshake",
+"mutual TLS (MTLS) Handshake"
+],
+"type": "string"
+},
+"useSsl": {
+"description": "Optional. Bool for enabling SSL",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SslConfigTemplate": {
+"description": "Ssl config details of a connector version",
+"id": "SslConfigTemplate",
+"properties": {
+"additionalVariables": {
+"description": "Any additional fields that need to be rendered",
+"items": {
+"$ref": "ConfigVariableTemplate"
+},
+"type": "array"
+},
+"clientCertType": {
+"description": "List of supported Client Cert Types",
+"items": {
+"enum": [
+"CERT_TYPE_UNSPECIFIED",
+"PEM"
+],
+"enumDescriptions": [
+"Cert type unspecified.",
+"Privacy Enhanced Mail (PEM) Type"
+],
+"type": "string"
+},
+"type": "array"
+},
+"isTlsMandatory": {
+"description": "Boolean for determining if the connector version mandates TLS.",
+"type": "boolean"
+},
+"serverCertType": {
+"description": "List of supported Server Cert Types",
+"items": {
+"enum": [
+"CERT_TYPE_UNSPECIFIED",
+"PEM"
+],
+"enumDescriptions": [
+"Cert type unspecified.",
+"Privacy Enhanced Mail (PEM) Type"
+],
+"type": "string"
+},
+"type": "array"
+},
+"sslType": {
+"description": "Controls the ssl type for the given connector version",
+"enum": [
+"SSL_TYPE_UNSPECIFIED",
+"TLS",
+"MTLS"
+],
+"enumDescriptions": [
+"No SSL configuration required.",
+"TLS Handshake",
+"mutual TLS (MTLS) Handshake"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"StandardAction": {
+"description": "Standard action",
+"id": "StandardAction",
+"properties": {
+"name": {
+"description": "Name of the standard action.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StandardEntity": {
+"description": "Standard entity",
+"id": "StandardEntity",
+"properties": {
+"name": {
+"description": "Name of the standard entity.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SupportedRuntimeFeatures": {
+"description": "Supported runtime features of a connector version.",
+"id": "SupportedRuntimeFeatures",
+"properties": {
+"actionApis": {
+"description": "Specifies if the connector supports action apis like 'executeAction'.",
+"type": "boolean"
+},
+"entityApis": {
+"description": "Specifies if the connector supports entity apis like 'createEntity'.",
+"type": "boolean"
+},
+"sqlQuery": {
+"description": "Specifies if the connector supports 'ExecuteSqlQuery' operation.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TimeOfDay": {
+"description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
+"id": "TimeOfDay",
+"properties": {
+"hours": {
+"description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
+"format": "int32",
+"type": "integer"
+},
+"minutes": {
+"description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.",
+"format": "int32",
+"type": "integer"
+},
+"nanos": {
+"description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.",
+"format": "int32",
+"type": "integer"
+},
+"seconds": {
+"description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"UpdatePolicy": {
+"description": "Maintenance policy applicable to instance updates.",
+"id": "UpdatePolicy",
+"properties": {
+"channel": {
+"description": "Optional. Relative scheduling channel applied to resource.",
+"enum": [
+"UPDATE_CHANNEL_UNSPECIFIED",
+"EARLIER",
+"LATER",
+"WEEK1",
+"WEEK2",
+"WEEK5"
+],
+"enumDescriptions": [
+"Unspecified channel.",
+"Early channel within a customer project.",
+"Later channel within a customer project.",
+"! ! The follow channels can ONLY be used if you adopt the new MW system! ! ! NOTE: all WEEK channels are assumed to be under a weekly window. ! There is currently no dedicated channel definitions for Daily windows. ! If you use Daily window, the system will assume a 1d (24Hours) advanced ! notification period b/w EARLY and LATER. ! We may consider support more flexible daily channel specifications in ! the future. WEEK1 == EARLIER with minimum 7d advanced notification. {7d, 14d} The system will treat them equally and will use WEEK1 whenever it can. New customers are encouraged to use this channel annotation.",
+"WEEK2 == LATER with minimum 14d advanced notification {14d, 21d}.",
+"WEEK5 == 40d support. minimum 35d advanced notification {35d, 42d}."
+],
+"type": "string"
+},
+"denyMaintenancePeriods": {
+"description": "Deny Maintenance Period that is applied to resource to indicate when maintenance is forbidden. The protocol supports zero-to-many such periods, but the current SLM Rollout implementation only supports zero-to-one.",
+"items": {
+"$ref": "DenyMaintenancePeriod"
+},
+"type": "array"
+},
+"window": {
+"$ref": "MaintenanceWindow",
+"description": "Optional. Maintenance window that is applied to resources covered by this policy."
+}
+},
+"type": "object"
+},
+"UserPassword": {
+"description": "Parameters to support Username and Password Authentication.",
+"id": "UserPassword",
+"properties": {
+"password": {
+"$ref": "Secret",
+"description": "Secret version reference containing the password."
+},
+"username": {
+"description": "Username.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ValidateCustomConnectorSpecRequest": {
+"description": "Request message for ConnectorsService.ValidateCustomConnectorSpec",
+"id": "ValidateCustomConnectorSpecRequest",
+"properties": {
+"serviceAccount": {
+"description": "Required. Service account to access the spec from Google Cloud Storage.",
+"type": "string"
+},
+"specLocation": {
+"description": "Required. Location of the custom connector spec. The location can be either a public url like `https://public-url.com/spec` Or a Google Cloud Storage location like `gs:///`",
+"type": "string"
+},
+"specType": {
+"description": "Required. Spec type of the custom connector spec.",
+"enum": [
+"CUSTOM_CONNECTOR_TYPE_UNSPECIFIED",
+"OPEN_API",
+"PROTO"
+],
+"enumDescriptions": [
+"Connector type is not specified.",
+"OpenAPI connector.",
+"Proto connector."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ValidateCustomConnectorSpecResponse": {
+"description": "Response message for ConnectorsService.ValidateCustomConnectorSpec",
+"id": "ValidateCustomConnectorSpecResponse",
+"properties": {
+"errorMessage": {
+"description": "Error message. The spec is valid if the error message is empty.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WebhookData": {
+"description": "WebhookData has details of webhook configuration.",
+"id": "WebhookData",
+"properties": {
+"additionalVariables": {
+"description": "Output only. Additional webhook related field values.",
+"items": {
+"$ref": "ConfigVariable"
+},
+"readOnly": true,
+"type": "array"
+},
+"createTime": {
+"description": "Output only. Timestamp when the webhook was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"id": {
+"description": "Output only. ID to uniquely identify webhook.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Name of the Webhook",
+"readOnly": true,
+"type": "string"
+},
+"nextRefreshTime": {
+"description": "Output only. Next webhook refresh time. Will be null if refresh is not supported.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Timestamp when the webhook was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"WebhookSubscriptions": {
+"description": "WebhookSubscriptions has details of webhook subscriptions.",
+"id": "WebhookSubscriptions",
+"properties": {
+"webhookData": {
+"description": "Output only. Webhook data.",
+"items": {
+"$ref": "WebhookData"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"WeeklyCycle": {
+"description": "Time window specified for weekly operations.",
+"id": "WeeklyCycle",
+"properties": {
+"schedule": {
+"description": "User can specify multiple windows in a week. Minimum of 1 window.",
+"items": {
+"$ref": "Schedule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"WithdrawCustomConnectorVersionRequest": {
+"description": "Request message for ConnectorsService.WithdrawCustomConnectorVersion",
+"id": "WithdrawCustomConnectorVersionRequest",
+"properties": {},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Connectors API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/connectors.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/connectors.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..d385ecf5faae391c210c4789f114678045831272
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/connectors.v2.json
@@ -0,0 +1,2500 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://connectors.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Connectors",
+"description": "Enables users to create and manage connections to Google Cloud services and third-party business applications using the Connectors interface.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/apigee/docs/api-platform/connectors/about-connectors",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "connectors:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://connectors.mtls.googleapis.com/",
+"name": "connectors",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"connections": {
+"methods": {
+"checkReadiness": {
+"description": "Reports readiness status of the connector. Similar logic to GetStatus but modified for kubernetes health check to understand.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:checkReadiness",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.checkReadiness",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:checkReadiness",
+"response": {
+"$ref": "CheckReadinessResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"checkStatus": {
+"description": "Reports the status of the connection. Note that when the connection is in a state that is not ACTIVE, the implementation of this RPC method must return a Status with the corresponding State instead of returning a gRPC status code that is not \"OK\", which indicates that ConnectionStatus itself, not the connection, failed.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:checkStatus",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.checkStatus",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:checkStatus",
+"response": {
+"$ref": "CheckStatusResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"exchangeAuthCode": {
+"description": "ExchangeAuthCode exchanges the OAuth authorization code (and other necessary data) for an access token (and associated credentials).",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:exchangeAuthCode",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.exchangeAuthCode",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:exchangeAuthCode",
+"request": {
+"$ref": "ExchangeAuthCodeRequest"
+},
+"response": {
+"$ref": "ExchangeAuthCodeResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"executeSqlQuery": {
+"description": "Executes a SQL statement specified in the body of the request. An example of this SQL statement in the case of Salesforce connector would be 'select * from Account a, Order o where a.Id = o.AccountId'.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:executeSqlQuery",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.executeSqlQuery",
+"parameterOrder": [
+"connection"
+],
+"parameters": {
+"connection": {
+"description": "Required. Resource name of the Connection. Format: projects/{project}/locations/{location}/connections/{connection}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+connection}:executeSqlQuery",
+"request": {
+"$ref": "ExecuteSqlQueryRequest"
+},
+"response": {
+"$ref": "ExecuteSqlQueryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"refreshAccessToken": {
+"description": "RefreshAccessToken exchanges the OAuth refresh token (and other necessary data) for a new access token (and new associated credentials).",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}:refreshAccessToken",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.refreshAccessToken",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:refreshAccessToken",
+"request": {
+"$ref": "RefreshAccessTokenRequest"
+},
+"response": {
+"$ref": "RefreshAccessTokenResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"actions": {
+"methods": {
+"execute": {
+"description": "Executes an action with the name specified in the request. The input parameters for executing the action are passed through the body of the ExecuteAction request.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/actions/{actionsId}:execute",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.actions.execute",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Action. Format: projects/{project}/locations/{location}/connections/{connection}/actions/{action}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/actions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:execute",
+"request": {
+"$ref": "ExecuteActionRequest"
+},
+"response": {
+"$ref": "ExecuteActionResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the schema of the given action.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/actions/{actionsId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.actions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Action. Format: projects/{project}/locations/{location}/connections/{connection}/actions/{action}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/actions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Action"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Gets the schema of all the actions supported by the connector.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/actions",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.actions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Number of Actions to return. Defaults to 25.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token, return from a previous ListActions call, that can be used retrieve the next page of content. If unspecified, the request returns the first page of actions.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent resource name of the Action. Format: projects/{project}/locations/{location}/connections/{connection}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Specifies which fields of the Action are returned in the response.",
+"enum": [
+"ACTION_VIEW_UNSPECIFIED",
+"ACTION_VIEW_BASIC",
+"ACTION_VIEW_FULL"
+],
+"enumDescriptions": [
+"VIEW_UNSPECIFIED. The unset value Defaults to FULL View.",
+"Return only action names.",
+"Return actions with schema."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+parent}/actions",
+"response": {
+"$ref": "ListActionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"entityTypes": {
+"methods": {
+"get": {
+"description": "Gets metadata of given entity type",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.entityTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Entity Type. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{entityType}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "EntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists metadata related to all entity types present in the external system.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.entityTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Number of entity types to return. Defaults to 25.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token, return from a previous ListEntityTypes call, that can be used retrieve the next page of content. If unspecified, the request returns the first page of entity types.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource name of the Entity Type. Format: projects/{project}/locations/{location}/connections/{connection}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Specifies which fields of the Entity Type are returned in the response.",
+"enum": [
+"ENTITY_TYPE_VIEW_UNSPECIFIED",
+"ENTITY_TYPE_VIEW_BASIC",
+"ENTITY_TYPE_VIEW_FULL"
+],
+"enumDescriptions": [
+"VIEW_UNSPECIFIED. The unset value. Defaults to FULL View.",
+"Return only entity type names.",
+"Return entity types with schema"
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+parent}/entityTypes",
+"response": {
+"$ref": "ListEntityTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"entities": {
+"methods": {
+"create": {
+"description": "Creates a new entity row of the specified entity type in the external system. The field values for creating the row are contained in the body of the request. The response message contains a `Entity` message object returned as a response by the external system.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes/{entityTypesId}/entities",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.entityTypes.entities.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource name of the Entity Type. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/entities",
+"request": {
+"$ref": "Entity"
+},
+"response": {
+"$ref": "Entity"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an existing entity row matching the entity type and entity id specified in the request.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes/{entityTypesId}/entities/{entitiesId}",
+"httpMethod": "DELETE",
+"id": "connectors.projects.locations.connections.entityTypes.entities.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Entity Type. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}/entities/{id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/entityTypes/[^/]+/entities/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"deleteEntitiesWithConditions": {
+"description": "Deletes entities based on conditions specified in the request and not on entity id.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes/{entityTypesId}/entities:deleteEntitiesWithConditions",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.entityTypes.entities.deleteEntitiesWithConditions",
+"parameterOrder": [
+"entityType"
+],
+"parameters": {
+"conditions": {
+"description": "Required. Conditions to be used when deleting entities. From a proto standpoint, There are no restrictions on what can be passed using this field. The connector documentation should have information about what format of filters/conditions are supported. Note: If this conditions field is left empty, an exception is thrown. We don't want to consider 'empty conditions' to be a match-all case. Connector developers can determine and document what a match-all case constraint would be.",
+"location": "query",
+"type": "string"
+},
+"entityType": {
+"description": "Required. Resource name of the Entity Type. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+entityType}/entities:deleteEntitiesWithConditions",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a single entity row matching the entity type and entity id specified in the request.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes/{entityTypesId}/entities/{entitiesId}",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.entityTypes.entities.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Entity Type. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}/entities/{id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/entityTypes/[^/]+/entities/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Entity"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists entity rows of a particular entity type contained in the request. Note: 1. Currently, only max of one 'sort_by' column is supported. 2. If no 'sort_by' column is provided, the primary key of the table is used. If zero or more than one primary key is available, we default to the unpaginated list entities logic which only returns the first page. 3. The values of the 'sort_by' columns must uniquely identify an entity row, otherwise undefined behaviors may be observed during pagination. 4. Since transactions are not supported, any updates, inserts or deletes during pagination can lead to stale data being returned or other unexpected behaviors.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes/{entityTypesId}/entities",
+"httpMethod": "GET",
+"id": "connectors.projects.locations.connections.entityTypes.entities.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"conditions": {
+"description": "Conditions to be used when listing entities. From a proto standpoint, There are no restrictions on what can be passed using this field. The connector documentation should have information about what format of filters/conditions are supported.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Number of entity rows to return. Defaults page size = 25. Max page size = 200.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token value if available from a previous request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource name of the Entity Type. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"sortBy": {
+"description": "List of 'sort_by' columns to use when returning the results.",
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/entities",
+"response": {
+"$ref": "ListEntitiesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an existing entity row matching the entity type and entity id specified in the request. The fields in the entity row that need to be modified are contained in the body of the request. All unspecified fields are left unchanged. The response message contains a `Entity` message object returned as a response by the external system.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes/{entityTypesId}/entities/{entitiesId}",
+"httpMethod": "PATCH",
+"id": "connectors.projects.locations.connections.entityTypes.entities.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Resource name of the Entity. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}/entities/{id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/entityTypes/[^/]+/entities/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "Entity"
+},
+"response": {
+"$ref": "Entity"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updateEntitiesWithConditions": {
+"description": "Updates entities based on conditions specified in the request and not on entity id.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/connections/{connectionsId}/entityTypes/{entityTypesId}/entities:updateEntitiesWithConditions",
+"httpMethod": "POST",
+"id": "connectors.projects.locations.connections.entityTypes.entities.updateEntitiesWithConditions",
+"parameterOrder": [
+"entityType"
+],
+"parameters": {
+"conditions": {
+"description": "Required. Conditions to be used when updating entities. From a proto standpoint, There are no restrictions on what can be passed using this field. The connector documentation should have information about what format of filters/conditions are supported. Note: If this conditions field is left empty, an exception is thrown. We don't want to consider 'empty conditions' to be a match-all case. Connector developers can determine and document what a match-all case constraint would be.",
+"location": "query",
+"type": "string"
+},
+"entityType": {
+"description": "Required. Resource name of the Entity Type. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/connections/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+entityType}/entities:updateEntitiesWithConditions",
+"request": {
+"$ref": "Entity"
+},
+"response": {
+"$ref": "UpdateEntitiesWithConditionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241015",
+"rootUrl": "https://connectors.googleapis.com/",
+"schemas": {
+"AccessCredentials": {
+"description": "AccessCredentials includes the OAuth access token, and the other fields returned along with it.",
+"id": "AccessCredentials",
+"properties": {
+"accessToken": {
+"description": "OAuth access token.",
+"type": "string"
+},
+"expiresIn": {
+"description": "Duration till the access token expires.",
+"format": "google-duration",
+"type": "string"
+},
+"refreshToken": {
+"description": "OAuth refresh token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Action": {
+"description": "Action message contains metadata information about a single action present in the external system.",
+"id": "Action",
+"properties": {
+"description": {
+"description": "Brief Description of action",
+"type": "string"
+},
+"displayName": {
+"description": "Display Name of action to be shown on client side",
+"type": "string"
+},
+"inputJsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema representation of this actions's input schema"
+},
+"inputParameters": {
+"description": "List containing input parameter metadata.",
+"items": {
+"$ref": "InputParameter"
+},
+"type": "array"
+},
+"name": {
+"description": "Name of the action.",
+"type": "string"
+},
+"resultJsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema representation of this actions's result schema"
+},
+"resultMetadata": {
+"description": "List containing the metadata of result fields.",
+"items": {
+"$ref": "ResultMetadata"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AuthCodeData": {
+"description": "AuthCodeData contains the data the runtime plane will give the connector backend in exchange for access and refresh tokens.",
+"id": "AuthCodeData",
+"properties": {
+"authCode": {
+"description": "OAuth authorization code.",
+"type": "string"
+},
+"pkceVerifier": {
+"description": "OAuth PKCE verifier, needed if PKCE is enabled for this particular connection.",
+"type": "string"
+},
+"redirectUri": {
+"description": "OAuth redirect URI passed in during the auth code flow, required by some OAuth backends.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CheckReadinessResponse": {
+"description": "Response containing status of the connector for readiness prober.",
+"id": "CheckReadinessResponse",
+"properties": {
+"status": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"CheckStatusResponse": {
+"description": "The status of the connector.",
+"id": "CheckStatusResponse",
+"properties": {
+"description": {
+"description": "When the connector is not in ACTIVE state, the description must be populated to specify the reason why it's not in ACTIVE state.",
+"type": "string"
+},
+"state": {
+"description": "State of the connector.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"ERROR",
+"AUTH_ERROR"
+],
+"enumDescriptions": [
+"State unspecified.",
+"The connector is active and ready to process runtime requests. This can also mean that from the connector's perspective, the connector is not in an error state and should be able to process runtime requests successfully.",
+"The connector is in an error state and cannot process runtime requests. An example reason would be that the connection container has some network issues that prevent outbound requests from being sent.",
+"This is a more specific error state that the developers can opt to use when the connector is facing auth-related errors caused by auth configuration not present, invalid auth credentials, etc."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"DailyCycle": {
+"description": "Time window specified for daily operations.",
+"id": "DailyCycle",
+"properties": {
+"duration": {
+"description": "Output only. Duration of the time window, set by service producer.",
+"format": "google-duration",
+"type": "string"
+},
+"startTime": {
+"$ref": "TimeOfDay",
+"description": "Time within the day to start the operations."
+}
+},
+"type": "object"
+},
+"Date": {
+"description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+"id": "Date",
+"properties": {
+"day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"type": "integer"
+},
+"month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"type": "integer"
+},
+"year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"DenyMaintenancePeriod": {
+"description": "DenyMaintenancePeriod definition. Maintenance is forbidden within the deny period. The start_date must be less than the end_date.",
+"id": "DenyMaintenancePeriod",
+"properties": {
+"endDate": {
+"$ref": "Date",
+"description": "Deny period end date. This can be: * A full date, with non-zero year, month and day values. * A month and day value, with a zero year. Allows recurring deny periods each year. Date matching this period will have to be before the end."
+},
+"startDate": {
+"$ref": "Date",
+"description": "Deny period start date. This can be: * A full date, with non-zero year, month and day values. * A month and day value, with a zero year. Allows recurring deny periods each year. Date matching this period will have to be the same or after the start."
+},
+"time": {
+"$ref": "TimeOfDay",
+"description": "Time in UTC when the Blackout period starts on start_date and ends on end_date. This can be: * Full time. * All zeros for 00:00:00 UTC"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Entity": {
+"description": "'Entity row'/ 'Entity' refers to a single row of an entity type.",
+"id": "Entity",
+"properties": {
+"fields": {
+"additionalProperties": {
+"type": "any"
+},
+"description": "Fields of the entity. The key is name of the field and the value contains the applicable `google.protobuf.Value` entry for this field.",
+"type": "object"
+},
+"name": {
+"description": "Output only. Resource name of the Entity. Format: projects/{project}/locations/{location}/connections/{connection}/entityTypes/{type}/entities/{id}",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"EntityType": {
+"description": "EntityType message contains metadata information about a single entity type present in the external system.",
+"id": "EntityType",
+"properties": {
+"fields": {
+"description": "List containing metadata information about each field of the entity type.",
+"items": {
+"$ref": "Field"
+},
+"type": "array"
+},
+"jsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema representation of this entity's schema"
+},
+"name": {
+"description": "The name of the entity type.",
+"type": "string"
+},
+"operations": {
+"items": {
+"enum": [
+"OPERATION_UNSPECIFIED",
+"LIST",
+"GET",
+"CREATE",
+"UPDATE",
+"DELETE"
+],
+"enumDescriptions": [
+"Operation unspecified.",
+"This operation means entity type supports LIST method.",
+"This operation means entity type supports GET method.",
+"This operation means entity type supports CREATE method.",
+"This operation means entity type supports UPDATE method.",
+"This operation means entity type supports DELETE method."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ExchangeAuthCodeRequest": {
+"description": "ExchangeAuthCodeRequest currently includes the auth code data.",
+"id": "ExchangeAuthCodeRequest",
+"properties": {
+"authCodeData": {
+"$ref": "AuthCodeData",
+"description": "Optional. AuthCodeData contains the data the runtime requires to exchange for access and refresh tokens. If the data is not provided, the runtime will read the data from the secret manager."
+}
+},
+"type": "object"
+},
+"ExchangeAuthCodeResponse": {
+"description": "ExchangeAuthCodeResponse includes the returned access token and its associated credentials.",
+"id": "ExchangeAuthCodeResponse",
+"properties": {
+"accessCredentials": {
+"$ref": "AccessCredentials"
+}
+},
+"type": "object"
+},
+"ExecuteActionRequest": {
+"description": "Request message for ActionService.ExecuteAction",
+"id": "ExecuteActionRequest",
+"properties": {
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Parameters for executing the action. The parameters can be key/value pairs or nested structs.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"ExecuteActionResponse": {
+"description": "Response message for ActionService.ExecuteAction",
+"id": "ExecuteActionResponse",
+"properties": {
+"results": {
+"description": "In the case of successful invocation of the specified action, the results Struct contains values based on the response of the action invoked. 1. If the action execution produces any entities as a result, they are returned as an array of Structs with the 'key' being the field name and the 'value' being the value of that field in each result row. { 'results': [{'key': 'value'}, ...] }",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ExecuteSqlQueryRequest": {
+"description": "An execute sql query request containing the query and the connection to execute it on.",
+"id": "ExecuteSqlQueryRequest",
+"properties": {
+"query": {
+"$ref": "Query",
+"description": "Required. SQL statement passed by clients like Integration Platform, the query is passed as-is to the driver used for interfacing with external systems."
+}
+},
+"type": "object"
+},
+"ExecuteSqlQueryResponse": {
+"description": "A response returned by the connection after executing the sql query.",
+"id": "ExecuteSqlQueryResponse",
+"properties": {
+"results": {
+"description": "In the case of successful execution of the query the response contains results returned by the external system. For example, the result rows of the query are contained in the 'results' Struct list - \"results\": [ { \"field1\": \"val1\", \"field2\": \"val2\",.. },.. ] Each Struct row can contain fields any type of like nested Structs or lists.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Field": {
+"description": "Message contains EntityType's Field metadata.",
+"id": "Field",
+"properties": {
+"additionalDetails": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The following map contains fields that are not explicitly mentioned above,this give connectors the flexibility to add new metadata fields.",
+"type": "object"
+},
+"dataType": {
+"description": "The data type of the Field.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"INT",
+"SMALLINT",
+"DOUBLE",
+"DATE",
+"DATETIME",
+"TIME",
+"STRING",
+"LONG",
+"BOOLEAN",
+"DECIMAL",
+"UUID",
+"BLOB",
+"BIT",
+"TINYINT",
+"INTEGER",
+"BIGINT",
+"FLOAT",
+"REAL",
+"NUMERIC",
+"CHAR",
+"VARCHAR",
+"LONGVARCHAR",
+"TIMESTAMP",
+"NCHAR",
+"NVARCHAR",
+"LONGNVARCHAR",
+"NULL",
+"OTHER",
+"JAVA_OBJECT",
+"DISTINCT",
+"STRUCT",
+"ARRAY",
+"CLOB",
+"REF",
+"DATALINK",
+"ROWID",
+"BINARY",
+"VARBINARY",
+"LONGVARBINARY",
+"NCLOB",
+"SQLXML",
+"REF_CURSOR",
+"TIME_WITH_TIMEZONE",
+"TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Datatype unspecified.",
+"Deprecated Int type, use INTEGER type instead.",
+"Small int type.",
+"Double type.",
+"Date type.",
+"Deprecated Datetime type.",
+"Time type.",
+"Deprecated string type, use VARCHAR type instead.",
+"Deprecated Long type, use BIGINT type instead.",
+"Boolean type.",
+"Decimal type.",
+"Deprecated UUID type, use VARCHAR instead.",
+"Blob type.",
+"Bit type.",
+"Tiny int type.",
+"Integer type.",
+"Big int type.",
+"Float type.",
+"Real type.",
+"Numeric type.",
+"Char type.",
+"Varchar type.",
+"Long varchar type.",
+"Timestamp type.",
+"Nchar type.",
+"Nvarchar type.",
+"Long Nvarchar type.",
+"Null type.",
+"Other type.",
+"Java object type.",
+"Distinct type keyword.",
+"Struct type.",
+"Array type.",
+"Clob type.",
+"Ref type.",
+"Datalink type.",
+"Row ID type.",
+"Binary type.",
+"Varbinary type.",
+"Long Varbinary type.",
+"Nclob type.",
+"SQLXML type.",
+"Ref_cursor type.",
+"Time with timezone type.",
+"Timestamp with timezone type."
+],
+"type": "string"
+},
+"defaultValue": {
+"description": "The following field specifies the default value of the Field provided by the external system if a value is not provided.",
+"type": "any"
+},
+"description": {
+"description": "A brief description of the Field.",
+"type": "string"
+},
+"jsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema of the field, applicable only if field is of type `STRUCT`"
+},
+"key": {
+"description": "The following boolean field specifies if the current Field acts as a primary key or id if the parent is of type entity.",
+"type": "boolean"
+},
+"name": {
+"description": "Name of the Field.",
+"type": "string"
+},
+"nullable": {
+"description": "Specifies whether a null value is allowed.",
+"type": "boolean"
+},
+"reference": {
+"$ref": "Reference",
+"description": "Reference captures the association between two different entity types. Value links to the reference of another entity type."
+}
+},
+"type": "object"
+},
+"InputParameter": {
+"description": "Input Parameter message contains metadata about the parameters required for executing an Action.",
+"id": "InputParameter",
+"properties": {
+"additionalDetails": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The following map contains fields that are not explicitly mentioned above,this give connectors the flexibility to add new metadata fields.",
+"type": "object"
+},
+"dataType": {
+"description": "The data type of the Parameter",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"INT",
+"SMALLINT",
+"DOUBLE",
+"DATE",
+"DATETIME",
+"TIME",
+"STRING",
+"LONG",
+"BOOLEAN",
+"DECIMAL",
+"UUID",
+"BLOB",
+"BIT",
+"TINYINT",
+"INTEGER",
+"BIGINT",
+"FLOAT",
+"REAL",
+"NUMERIC",
+"CHAR",
+"VARCHAR",
+"LONGVARCHAR",
+"TIMESTAMP",
+"NCHAR",
+"NVARCHAR",
+"LONGNVARCHAR",
+"NULL",
+"OTHER",
+"JAVA_OBJECT",
+"DISTINCT",
+"STRUCT",
+"ARRAY",
+"CLOB",
+"REF",
+"DATALINK",
+"ROWID",
+"BINARY",
+"VARBINARY",
+"LONGVARBINARY",
+"NCLOB",
+"SQLXML",
+"REF_CURSOR",
+"TIME_WITH_TIMEZONE",
+"TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Datatype unspecified.",
+"Deprecated Int type, use INTEGER type instead.",
+"Small int type.",
+"Double type.",
+"Date type.",
+"Deprecated Datetime type.",
+"Time type.",
+"Deprecated string type, use VARCHAR type instead.",
+"Deprecated Long type, use BIGINT type instead.",
+"Boolean type.",
+"Decimal type.",
+"Deprecated UUID type, use VARCHAR instead.",
+"Blob type.",
+"Bit type.",
+"Tiny int type.",
+"Integer type.",
+"Big int type.",
+"Float type.",
+"Real type.",
+"Numeric type.",
+"Char type.",
+"Varchar type.",
+"Long varchar type.",
+"Timestamp type.",
+"Nchar type.",
+"Nvarchar type.",
+"Long Nvarchar type.",
+"Null type.",
+"Other type.",
+"Java object type.",
+"Distinct type keyword.",
+"Struct type.",
+"Array type.",
+"Clob type.",
+"Ref type.",
+"Datalink type.",
+"Row ID type.",
+"Binary type.",
+"Varbinary type.",
+"Long Varbinary type.",
+"Nclob type.",
+"SQLXML type.",
+"Ref_cursor type.",
+"Time with timezone type.",
+"Timestamp with timezone type."
+],
+"type": "string"
+},
+"defaultValue": {
+"description": "The following field specifies the default value of the Parameter provided by the external system if a value is not provided.",
+"type": "any"
+},
+"description": {
+"description": "A brief description of the Parameter.",
+"type": "string"
+},
+"jsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema of the parameter, applicable only if parameter is of type `STRUCT`"
+},
+"name": {
+"description": "Name of the Parameter.",
+"type": "string"
+},
+"nullable": {
+"description": "Specifies whether a null value is allowed.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Instance": {
+"description": "Instance represents the interface for SLM services to actuate the state of control plane resources. Example Instance in JSON, where consumer-project-number=123456, producer-project-id=cloud-sql: ```json Instance: { \"name\": \"projects/123456/locations/us-east1/instances/prod-instance\", \"create_time\": { \"seconds\": 1526406431, }, \"labels\": { \"env\": \"prod\", \"foo\": \"bar\" }, \"state\": READY, \"software_versions\": { \"software_update\": \"cloud-sql-09-28-2018\", }, \"maintenance_policy_names\": { \"UpdatePolicy\": \"projects/123456/locations/us-east1/maintenancePolicies/prod-update-policy\", } \"tenant_project_id\": \"cloud-sql-test-tenant\", \"producer_metadata\": { \"cloud-sql-tier\": \"basic\", \"cloud-sql-instance-size\": \"1G\", }, \"provisioned_resources\": [ { \"resource-type\": \"compute-instance\", \"resource-url\": \"https://www.googleapis.com/compute/v1/projects/cloud-sql/zones/us-east1-b/instances/vm-1\", } ], \"maintenance_schedules\": { \"csa_rollout\": { \"start_time\": { \"seconds\": 1526406431, }, \"end_time\": { \"seconds\": 1535406431, }, }, \"ncsa_rollout\": { \"start_time\": { \"seconds\": 1526406431, }, \"end_time\": { \"seconds\": 1535406431, }, } }, \"consumer_defined_name\": \"my-sql-instance1\", } ``` LINT.IfChange",
+"id": "Instance",
+"properties": {
+"consumerDefinedName": {
+"description": "consumer_defined_name is the name of the instance set by the service consumers. Generally this is different from the `name` field which reperesents the system-assigned id of the instance which the service consumers do not recognize. This is a required field for tenants onboarding to Maintenance Window notifications (go/slm-rollout-maintenance-policies#prerequisites).",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"instanceType": {
+"description": "Optional. The instance_type of this instance of format: projects/{project_number}/locations/{location_id}/instanceTypes/{instance_type_id}. Instance Type represents a high-level tier or SKU of the service that this instance belong to. When enabled(eg: Maintenance Rollout), Rollout uses 'instance_type' along with 'software_versions' to determine whether instance needs an update or not.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user provided metadata. Each label is a key-value pair, where both the key and the value are arbitrary strings provided by the user.",
+"type": "object"
+},
+"maintenancePolicyNames": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. The MaintenancePolicies that have been attached to the instance. The key must be of the type name of the oneof policy name defined in MaintenancePolicy, and the referenced policy must define the same policy type. For details, please refer to go/mr-user-guide. Should not be set if maintenance_settings.maintenance_policies is set.",
+"type": "object"
+},
+"maintenanceSchedules": {
+"additionalProperties": {
+"$ref": "MaintenanceSchedule"
+},
+"description": "The MaintenanceSchedule contains the scheduling information of published maintenance schedule with same key as software_versions.",
+"type": "object"
+},
+"maintenanceSettings": {
+"$ref": "MaintenanceSettings",
+"description": "Optional. The MaintenanceSettings associated with instance."
+},
+"name": {
+"description": "Unique name of the resource. It uses the form: `projects/{project_number}/locations/{location_id}/instances/{instance_id}` Note: This name is passed, stored and logged across the rollout system. So use of consumer project_id or any other consumer PII in the name is strongly discouraged for wipeout (go/wipeout) compliance. See go/elysium/project_ids#storage-guidance for more details.",
+"type": "string"
+},
+"notificationParameters": {
+"additionalProperties": {
+"$ref": "NotificationParameter"
+},
+"description": "Optional. notification_parameter are information that service producers may like to include that is not relevant to Rollout. This parameter will only be passed to Gamma and Cloud Logging for notification/logging purpose.",
+"type": "object"
+},
+"producerMetadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. Custom string attributes used primarily to expose producer-specific information in monitoring dashboards. See go/get-instance-metadata.",
+"readOnly": true,
+"type": "object"
+},
+"provisionedResources": {
+"description": "Output only. The list of data plane resources provisioned for this instance, e.g. compute VMs. See go/get-instance-metadata.",
+"items": {
+"$ref": "ProvisionedResource"
+},
+"readOnly": true,
+"type": "array"
+},
+"slmInstanceTemplate": {
+"description": "Link to the SLM instance template. Only populated when updating SLM instances via SSA's Actuation service adaptor. Service producers with custom control plane (e.g. Cloud SQL) doesn't need to populate this field. Instead they should use software_versions.",
+"type": "string"
+},
+"sloMetadata": {
+"$ref": "SloMetadata",
+"description": "Output only. SLO metadata for instance classification in the Standardized dataplane SLO platform. See go/cloud-ssa-standard-slo for feature description.",
+"readOnly": true
+},
+"softwareVersions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Software versions that are used to deploy this instance. This can be mutated by rollout services.",
+"type": "object"
+},
+"state": {
+"description": "Output only. Current lifecycle state of the resource (e.g. if it's being created or ready to use).",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"UPDATING",
+"REPAIRING",
+"DELETING",
+"ERROR"
+],
+"enumDescriptions": [
+"Unspecified state.",
+"Instance is being created.",
+"Instance has been created and is ready to use.",
+"Instance is being updated.",
+"Instance is unheathy and under repair.",
+"Instance is being deleted.",
+"Instance encountered an error and is in indeterministic state."
+],
+"readOnly": true,
+"type": "string"
+},
+"tenantProjectId": {
+"description": "Output only. ID of the associated GCP tenant project. See go/get-instance-metadata.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Timestamp when the resource was last modified.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"JsonSchema": {
+"description": "JsonSchema representation of schema metadata",
+"id": "JsonSchema",
+"properties": {
+"additionalDetails": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Additional details apart from standard json schema fields, this gives flexibility to store metadata about the schema",
+"type": "object"
+},
+"default": {
+"description": "The default value of the field or object described by this schema.",
+"type": "any"
+},
+"description": {
+"description": "A description of this schema.",
+"type": "string"
+},
+"enum": {
+"description": "Possible values for an enumeration. This works in conjunction with `type` to represent types with a fixed set of legal values",
+"items": {
+"type": "any"
+},
+"type": "array"
+},
+"format": {
+"description": "Format of the value as per https://json-schema.org/understanding-json-schema/reference/string.html#format",
+"type": "string"
+},
+"items": {
+"$ref": "JsonSchema",
+"description": "Schema that applies to array values, applicable only if this is of type `array`."
+},
+"jdbcType": {
+"description": "JDBC datatype of the field.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"INT",
+"SMALLINT",
+"DOUBLE",
+"DATE",
+"DATETIME",
+"TIME",
+"STRING",
+"LONG",
+"BOOLEAN",
+"DECIMAL",
+"UUID",
+"BLOB",
+"BIT",
+"TINYINT",
+"INTEGER",
+"BIGINT",
+"FLOAT",
+"REAL",
+"NUMERIC",
+"CHAR",
+"VARCHAR",
+"LONGVARCHAR",
+"TIMESTAMP",
+"NCHAR",
+"NVARCHAR",
+"LONGNVARCHAR",
+"NULL",
+"OTHER",
+"JAVA_OBJECT",
+"DISTINCT",
+"STRUCT",
+"ARRAY",
+"CLOB",
+"REF",
+"DATALINK",
+"ROWID",
+"BINARY",
+"VARBINARY",
+"LONGVARBINARY",
+"NCLOB",
+"SQLXML",
+"REF_CURSOR",
+"TIME_WITH_TIMEZONE",
+"TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Datatype unspecified.",
+"Deprecated Int type, use INTEGER type instead.",
+"Small int type.",
+"Double type.",
+"Date type.",
+"Deprecated Datetime type.",
+"Time type.",
+"Deprecated string type, use VARCHAR type instead.",
+"Deprecated Long type, use BIGINT type instead.",
+"Boolean type.",
+"Decimal type.",
+"Deprecated UUID type, use VARCHAR instead.",
+"Blob type.",
+"Bit type.",
+"Tiny int type.",
+"Integer type.",
+"Big int type.",
+"Float type.",
+"Real type.",
+"Numeric type.",
+"Char type.",
+"Varchar type.",
+"Long varchar type.",
+"Timestamp type.",
+"Nchar type.",
+"Nvarchar type.",
+"Long Nvarchar type.",
+"Null type.",
+"Other type.",
+"Java object type.",
+"Distinct type keyword.",
+"Struct type.",
+"Array type.",
+"Clob type.",
+"Ref type.",
+"Datalink type.",
+"Row ID type.",
+"Binary type.",
+"Varbinary type.",
+"Long Varbinary type.",
+"Nclob type.",
+"SQLXML type.",
+"Ref_cursor type.",
+"Time with timezone type.",
+"Timestamp with timezone type."
+],
+"type": "string"
+},
+"properties": {
+"additionalProperties": {
+"$ref": "JsonSchema"
+},
+"description": "The child schemas, applicable only if this is of type `object`. The key is the name of the property and the value is the json schema that describes that property",
+"type": "object"
+},
+"required": {
+"description": "Whether this property is required.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"type": {
+"description": "JSON Schema Validation: A Vocabulary for Structural Validation of JSON",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListActionsResponse": {
+"description": "Response message for ActionService.ListActions",
+"id": "ListActionsResponse",
+"properties": {
+"actions": {
+"description": "List of action metadata.",
+"items": {
+"$ref": "Action"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token if more actions available.",
+"type": "string"
+},
+"unsupportedActionNames": {
+"description": "List of actions which contain unsupported Datatypes. Check datatype.proto for more information.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListEntitiesResponse": {
+"description": "Response message for EntityService.ListEntities",
+"id": "ListEntitiesResponse",
+"properties": {
+"entities": {
+"description": "List containing entity rows.",
+"items": {
+"$ref": "Entity"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Next page token if more records are available.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListEntityTypesResponse": {
+"description": "Response message for EntityService.ListEntityTypes",
+"id": "ListEntityTypesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Next page token if more entity types available.",
+"type": "string"
+},
+"types": {
+"description": "List of metadata related to all entity types.",
+"items": {
+"$ref": "EntityType"
+},
+"type": "array"
+},
+"unsupportedTypeNames": {
+"description": "List of entity type names which contain unsupported Datatypes. Check datatype.proto for more information.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MaintenancePolicy": {
+"description": "Defines policies to service maintenance events.",
+"id": "MaintenancePolicy",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the resource was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of what this policy is for. Create/Update methods return INVALID_ARGUMENT if the length is greater than 512.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels to represent user provided metadata. Each label is a key-value pair, where both the key and the value are arbitrary strings provided by the user.",
+"type": "object"
+},
+"name": {
+"description": "Required. MaintenancePolicy name using the form: `projects/{project_id}/locations/{location_id}/maintenancePolicies/{maintenance_policy_id}` where {project_id} refers to a GCP consumer project ID, {location_id} refers to a GCP region/zone, {maintenance_policy_id} must be 1-63 characters long and match the regular expression `[a-z0-9]([-a-z0-9]*[a-z0-9])?`.",
+"type": "string"
+},
+"state": {
+"description": "Optional. The state of the policy.",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"DELETING"
+],
+"enumDescriptions": [
+"Unspecified state.",
+"Resource is ready to be used.",
+"Resource is being deleted. It can no longer be attached to instances."
+],
+"type": "string"
+},
+"updatePolicy": {
+"$ref": "UpdatePolicy",
+"description": "Maintenance policy applicable to instance update."
+},
+"updateTime": {
+"description": "Output only. The time when the resource was updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MaintenanceSchedule": {
+"description": "Maintenance schedule which is exposed to customer and potentially end user, indicating published upcoming future maintenance schedule",
+"id": "MaintenanceSchedule",
+"properties": {
+"canReschedule": {
+"deprecated": true,
+"description": "This field is deprecated, and will be always set to true since reschedule can happen multiple times now. This field should not be removed until all service producers remove this for their customers.",
+"type": "boolean"
+},
+"endTime": {
+"description": "The scheduled end time for the maintenance.",
+"format": "google-datetime",
+"type": "string"
+},
+"rolloutManagementPolicy": {
+"description": "The rollout management policy this maintenance schedule is associated with. When doing reschedule update request, the reschedule should be against this given policy.",
+"type": "string"
+},
+"scheduleDeadlineTime": {
+"description": "schedule_deadline_time is the time deadline any schedule start time cannot go beyond, including reschedule. It's normally the initial schedule start time plus maintenance window length (1 day or 1 week). Maintenance cannot be scheduled to start beyond this deadline.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "The scheduled start time for the maintenance.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MaintenanceSettings": {
+"description": "Maintenance settings associated with instance. Allows service producers and end users to assign settings that controls maintenance on this instance.",
+"id": "MaintenanceSettings",
+"properties": {
+"exclude": {
+"description": "Optional. Exclude instance from maintenance. When true, rollout service will not attempt maintenance on the instance. Rollout service will include the instance in reported rollout progress as not attempted.",
+"type": "boolean"
+},
+"isRollback": {
+"description": "Optional. If the update call is triggered from rollback, set the value as true.",
+"type": "boolean"
+},
+"maintenancePolicies": {
+"additionalProperties": {
+"$ref": "MaintenancePolicy"
+},
+"description": "Optional. The MaintenancePolicies that have been attached to the instance. The key must be of the type name of the oneof policy name defined in MaintenancePolicy, and the embedded policy must define the same policy type. For details, please refer to go/mr-user-guide. Should not be set if maintenance_policy_names is set. If only the name is needed, then only populate MaintenancePolicy.name.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"MaintenanceWindow": {
+"description": "MaintenanceWindow definition.",
+"id": "MaintenanceWindow",
+"properties": {
+"dailyCycle": {
+"$ref": "DailyCycle",
+"description": "Daily cycle."
+},
+"weeklyCycle": {
+"$ref": "WeeklyCycle",
+"description": "Weekly cycle."
+}
+},
+"type": "object"
+},
+"NodeSloMetadata": {
+"description": "Node information for custom per-node SLO implementations. SSA does not support per-node SLO, but producers can populate per-node information in SloMetadata for custom precomputations. SSA Eligibility Exporter will emit per-node metric based on this information.",
+"id": "NodeSloMetadata",
+"properties": {
+"location": {
+"description": "The location of the node, if different from instance location.",
+"type": "string"
+},
+"nodeId": {
+"description": "The id of the node. This should be equal to SaasInstanceNode.node_id.",
+"type": "string"
+},
+"perSliEligibility": {
+"$ref": "PerSliSloEligibility",
+"description": "If present, this will override eligibility for the node coming from instance or exclusions for specified SLIs."
+}
+},
+"type": "object"
+},
+"NotificationParameter": {
+"description": "Contains notification related data.",
+"id": "NotificationParameter",
+"properties": {
+"values": {
+"description": "Optional. Array of string values. e.g. instance's replica information.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PerSliSloEligibility": {
+"description": "PerSliSloEligibility is a mapping from an SLI name to eligibility.",
+"id": "PerSliSloEligibility",
+"properties": {
+"eligibilities": {
+"additionalProperties": {
+"$ref": "SloEligibility"
+},
+"description": "An entry in the eligibilities map specifies an eligibility for a particular SLI for the given instance. The SLI key in the name must be a valid SLI name specified in the Eligibility Exporter binary flags otherwise an error will be emitted by Eligibility Exporter and the oncaller will be alerted. If an SLI has been defined in the binary flags but the eligibilities map does not contain it, the corresponding SLI time series will not be emitted by the Eligibility Exporter. This ensures a smooth rollout and compatibility between the data produced by different versions of the Eligibility Exporters. If eligibilities map contains a key for an SLI which has not been declared in the binary flags, there will be an error message emitted in the Eligibility Exporter log and the metric for the SLI in question will not be emitted.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"ProvisionedResource": {
+"description": "Describes provisioned dataplane resources.",
+"id": "ProvisionedResource",
+"properties": {
+"resourceType": {
+"description": "Type of the resource. This can be either a GCP resource or a custom one (e.g. another cloud provider's VM). For GCP compute resources use singular form of the names listed in GCP compute API documentation (https://cloud.google.com/compute/docs/reference/rest/v1/), prefixed with 'compute-', for example: 'compute-instance', 'compute-disk', 'compute-autoscaler'.",
+"type": "string"
+},
+"resourceUrl": {
+"description": "URL identifying the resource, e.g. \"https://www.googleapis.com/compute/v1/projects/...)\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Query": {
+"description": "A wrapper around the SQL query statement. This is needed so that the JSON representation of ExecuteSqlQueryRequest has the following format: `{\"query\":\"select *\"}`.",
+"id": "Query",
+"properties": {
+"maxRows": {
+"description": "Sets the limit for the maximum number of rows returned after the query execution.",
+"format": "int64",
+"type": "string"
+},
+"query": {
+"description": "Required. Sql query to execute.",
+"type": "string"
+},
+"queryParameters": {
+"description": "In the struct, the value corresponds to the value of query parameter and date type corresponds to the date type of the query parameter.",
+"items": {
+"$ref": "QueryParameter"
+},
+"type": "array"
+},
+"timeout": {
+"description": "Sets the number of seconds the driver will wait for a query to execute.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"QueryParameter": {
+"description": "Query parameter definition",
+"id": "QueryParameter",
+"properties": {
+"dataType": {
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"INT",
+"SMALLINT",
+"DOUBLE",
+"DATE",
+"DATETIME",
+"TIME",
+"STRING",
+"LONG",
+"BOOLEAN",
+"DECIMAL",
+"UUID",
+"BLOB",
+"BIT",
+"TINYINT",
+"INTEGER",
+"BIGINT",
+"FLOAT",
+"REAL",
+"NUMERIC",
+"CHAR",
+"VARCHAR",
+"LONGVARCHAR",
+"TIMESTAMP",
+"NCHAR",
+"NVARCHAR",
+"LONGNVARCHAR",
+"NULL",
+"OTHER",
+"JAVA_OBJECT",
+"DISTINCT",
+"STRUCT",
+"ARRAY",
+"CLOB",
+"REF",
+"DATALINK",
+"ROWID",
+"BINARY",
+"VARBINARY",
+"LONGVARBINARY",
+"NCLOB",
+"SQLXML",
+"REF_CURSOR",
+"TIME_WITH_TIMEZONE",
+"TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Datatype unspecified.",
+"Deprecated Int type, use INTEGER type instead.",
+"Small int type.",
+"Double type.",
+"Date type.",
+"Deprecated Datetime type.",
+"Time type.",
+"Deprecated string type, use VARCHAR type instead.",
+"Deprecated Long type, use BIGINT type instead.",
+"Boolean type.",
+"Decimal type.",
+"Deprecated UUID type, use VARCHAR instead.",
+"Blob type.",
+"Bit type.",
+"Tiny int type.",
+"Integer type.",
+"Big int type.",
+"Float type.",
+"Real type.",
+"Numeric type.",
+"Char type.",
+"Varchar type.",
+"Long varchar type.",
+"Timestamp type.",
+"Nchar type.",
+"Nvarchar type.",
+"Long Nvarchar type.",
+"Null type.",
+"Other type.",
+"Java object type.",
+"Distinct type keyword.",
+"Struct type.",
+"Array type.",
+"Clob type.",
+"Ref type.",
+"Datalink type.",
+"Row ID type.",
+"Binary type.",
+"Varbinary type.",
+"Long Varbinary type.",
+"Nclob type.",
+"SQLXML type.",
+"Ref_cursor type.",
+"Time with timezone type.",
+"Timestamp with timezone type."
+],
+"type": "string"
+},
+"value": {
+"type": "any"
+}
+},
+"type": "object"
+},
+"Reference": {
+"id": "Reference",
+"properties": {
+"name": {
+"description": "Name of the reference field.",
+"type": "string"
+},
+"type": {
+"description": "Name of reference entity type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RefreshAccessTokenRequest": {
+"description": "RefreshAccessTokenRequest includes the refresh token.",
+"id": "RefreshAccessTokenRequest",
+"properties": {
+"refreshToken": {
+"description": "Optional. Refresh Token String. If the Refresh Token is not provided, the runtime will read the data from the secret manager.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RefreshAccessTokenResponse": {
+"description": "RefreshAccessTokenResponse includes the returned access token and its associated credentials.",
+"id": "RefreshAccessTokenResponse",
+"properties": {
+"accessCredentials": {
+"$ref": "AccessCredentials"
+}
+},
+"type": "object"
+},
+"ResultMetadata": {
+"description": "Result Metadata message contains metadata about the result returned after executing an Action.",
+"id": "ResultMetadata",
+"properties": {
+"dataType": {
+"description": "The data type of the metadata field",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"INT",
+"SMALLINT",
+"DOUBLE",
+"DATE",
+"DATETIME",
+"TIME",
+"STRING",
+"LONG",
+"BOOLEAN",
+"DECIMAL",
+"UUID",
+"BLOB",
+"BIT",
+"TINYINT",
+"INTEGER",
+"BIGINT",
+"FLOAT",
+"REAL",
+"NUMERIC",
+"CHAR",
+"VARCHAR",
+"LONGVARCHAR",
+"TIMESTAMP",
+"NCHAR",
+"NVARCHAR",
+"LONGNVARCHAR",
+"NULL",
+"OTHER",
+"JAVA_OBJECT",
+"DISTINCT",
+"STRUCT",
+"ARRAY",
+"CLOB",
+"REF",
+"DATALINK",
+"ROWID",
+"BINARY",
+"VARBINARY",
+"LONGVARBINARY",
+"NCLOB",
+"SQLXML",
+"REF_CURSOR",
+"TIME_WITH_TIMEZONE",
+"TIMESTAMP_WITH_TIMEZONE"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+true,
+false,
+true,
+true,
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Datatype unspecified.",
+"Deprecated Int type, use INTEGER type instead.",
+"Small int type.",
+"Double type.",
+"Date type.",
+"Deprecated Datetime type.",
+"Time type.",
+"Deprecated string type, use VARCHAR type instead.",
+"Deprecated Long type, use BIGINT type instead.",
+"Boolean type.",
+"Decimal type.",
+"Deprecated UUID type, use VARCHAR instead.",
+"Blob type.",
+"Bit type.",
+"Tiny int type.",
+"Integer type.",
+"Big int type.",
+"Float type.",
+"Real type.",
+"Numeric type.",
+"Char type.",
+"Varchar type.",
+"Long varchar type.",
+"Timestamp type.",
+"Nchar type.",
+"Nvarchar type.",
+"Long Nvarchar type.",
+"Null type.",
+"Other type.",
+"Java object type.",
+"Distinct type keyword.",
+"Struct type.",
+"Array type.",
+"Clob type.",
+"Ref type.",
+"Datalink type.",
+"Row ID type.",
+"Binary type.",
+"Varbinary type.",
+"Long Varbinary type.",
+"Nclob type.",
+"SQLXML type.",
+"Ref_cursor type.",
+"Time with timezone type.",
+"Timestamp with timezone type."
+],
+"type": "string"
+},
+"defaultValue": {
+"description": "The following field specifies the default value of the Parameter provided by the external system if a value is not provided.",
+"type": "any"
+},
+"description": {
+"description": "A brief description of the metadata field.",
+"type": "string"
+},
+"jsonSchema": {
+"$ref": "JsonSchema",
+"description": "JsonSchema of the result, applicable only if parameter is of type `STRUCT`"
+},
+"name": {
+"description": "Name of the metadata field.",
+"type": "string"
+},
+"nullable": {
+"description": "Specifies whether a null value is allowed.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Schedule": {
+"description": "Configure the schedule.",
+"id": "Schedule",
+"properties": {
+"day": {
+"description": "Allows to define schedule that runs specified day of the week.",
+"enum": [
+"DAY_OF_WEEK_UNSPECIFIED",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY",
+"SUNDAY"
+],
+"enumDescriptions": [
+"The day of the week is unspecified.",
+"Monday",
+"Tuesday",
+"Wednesday",
+"Thursday",
+"Friday",
+"Saturday",
+"Sunday"
+],
+"type": "string"
+},
+"duration": {
+"description": "Output only. Duration of the time window, set by service producer.",
+"format": "google-duration",
+"type": "string"
+},
+"startTime": {
+"$ref": "TimeOfDay",
+"description": "Time within the window to start the operations."
+}
+},
+"type": "object"
+},
+"SloEligibility": {
+"description": "SloEligibility is a tuple containing eligibility value: true if an instance is eligible for SLO calculation or false if it should be excluded from all SLO-related calculations along with a user-defined reason.",
+"id": "SloEligibility",
+"properties": {
+"eligible": {
+"description": "Whether an instance is eligible or ineligible.",
+"type": "boolean"
+},
+"reason": {
+"description": "User-defined reason for the current value of instance eligibility. Usually, this can be directly mapped to the internal state. An empty reason is allowed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SloMetadata": {
+"description": "SloMetadata contains resources required for proper SLO classification of the instance.",
+"id": "SloMetadata",
+"properties": {
+"nodes": {
+"description": "Optional. List of nodes. Some producers need to use per-node metadata to calculate SLO. This field allows such producers to publish per-node SLO meta data, which will be consumed by SSA Eligibility Exporter and published in the form of per node metric to Monarch.",
+"items": {
+"$ref": "NodeSloMetadata"
+},
+"type": "array"
+},
+"perSliEligibility": {
+"$ref": "PerSliSloEligibility",
+"description": "Optional. Multiple per-instance SLI eligibilities which apply for individual SLIs."
+},
+"tier": {
+"description": "Name of the SLO tier the Instance belongs to. This name will be expected to match the tiers specified in the service SLO configuration. Field is mandatory and must not be empty.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TimeOfDay": {
+"description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.",
+"id": "TimeOfDay",
+"properties": {
+"hours": {
+"description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
+"format": "int32",
+"type": "integer"
+},
+"minutes": {
+"description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.",
+"format": "int32",
+"type": "integer"
+},
+"nanos": {
+"description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.",
+"format": "int32",
+"type": "integer"
+},
+"seconds": {
+"description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"UpdateEntitiesWithConditionsResponse": {
+"description": "Response message for EntityService.UpdateEntitiesWithConditions",
+"id": "UpdateEntitiesWithConditionsResponse",
+"properties": {
+"response": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Response returned by the external system.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"UpdatePolicy": {
+"description": "Maintenance policy applicable to instance updates.",
+"id": "UpdatePolicy",
+"properties": {
+"channel": {
+"description": "Optional. Relative scheduling channel applied to resource.",
+"enum": [
+"UPDATE_CHANNEL_UNSPECIFIED",
+"EARLIER",
+"LATER",
+"WEEK1",
+"WEEK2",
+"WEEK5"
+],
+"enumDescriptions": [
+"Unspecified channel.",
+"Early channel within a customer project.",
+"Later channel within a customer project.",
+"! ! The follow channels can ONLY be used if you adopt the new MW system! ! ! NOTE: all WEEK channels are assumed to be under a weekly window. ! There is currently no dedicated channel definitions for Daily windows. ! If you use Daily window, the system will assume a 1d (24Hours) advanced ! notification period b/w EARLY and LATER. ! We may consider support more flexible daily channel specifications in ! the future. WEEK1 == EARLIER with minimum 7d advanced notification. {7d, 14d} The system will treat them equally and will use WEEK1 whenever it can. New customers are encouraged to use this channel annotation.",
+"WEEK2 == LATER with minimum 14d advanced notification {14d, 21d}.",
+"WEEK5 == 40d support. minimum 35d advanced notification {35d, 42d}."
+],
+"type": "string"
+},
+"denyMaintenancePeriods": {
+"description": "Deny Maintenance Period that is applied to resource to indicate when maintenance is forbidden. The protocol supports zero-to-many such periods, but the current SLM Rollout implementation only supports zero-to-one.",
+"items": {
+"$ref": "DenyMaintenancePeriod"
+},
+"type": "array"
+},
+"window": {
+"$ref": "MaintenanceWindow",
+"description": "Optional. Maintenance window that is applied to resources covered by this policy."
+}
+},
+"type": "object"
+},
+"WeeklyCycle": {
+"description": "Time window specified for weekly operations.",
+"id": "WeeklyCycle",
+"properties": {
+"schedule": {
+"description": "User can specify multiple windows in a week. Minimum of 1 window.",
+"items": {
+"$ref": "Schedule"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Connectors API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/containeranalysis.v1beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/containeranalysis.v1beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..e8fe34cd7db6a3176fcfe1b311b6f63238c35d1a
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/containeranalysis.v1beta1.json
@@ -0,0 +1,7029 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://containeranalysis.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Container Analysis",
+"description": "This API is a prerequisite for leveraging Artifact Analysis scanning capabilities in both Artifact Registry and with Advanced Vulnerability Insights (runtime scanning) in GKE. In addition, the Container Analysis API is an implementation of the Grafeas API, which enables storing, querying, and retrieval of critical metadata about all of your software artifacts.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/container-analysis/api/reference/rest/",
+"endpoints": [
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.asia-east1.rep.googleapis.com/",
+"location": "asia-east1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.asia-east2.rep.googleapis.com/",
+"location": "asia-east2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.asia-northeast1.rep.googleapis.com/",
+"location": "asia-northeast1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.asia-northeast3.rep.googleapis.com/",
+"location": "asia-northeast3"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.asia-south1.rep.googleapis.com/",
+"location": "asia-south1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.asia-south2.rep.googleapis.com/",
+"location": "asia-south2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.asia-southeast1.rep.googleapis.com/",
+"location": "asia-southeast1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.asia-southeast2.rep.googleapis.com/",
+"location": "asia-southeast2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.australia-southeast1.rep.googleapis.com/",
+"location": "australia-southeast1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-central2.rep.googleapis.com/",
+"location": "europe-central2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-north1.rep.googleapis.com/",
+"location": "europe-north1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-southwest1.rep.googleapis.com/",
+"location": "europe-southwest1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-west1.rep.googleapis.com/",
+"location": "europe-west1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-west2.rep.googleapis.com/",
+"location": "europe-west2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-west3.rep.googleapis.com/",
+"location": "europe-west3"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-west4.rep.googleapis.com/",
+"location": "europe-west4"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-west6.rep.googleapis.com/",
+"location": "europe-west6"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-west8.rep.googleapis.com/",
+"location": "europe-west8"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.europe-west9.rep.googleapis.com/",
+"location": "europe-west9"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.me-central1.rep.googleapis.com/",
+"location": "me-central1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.me-central2.rep.googleapis.com/",
+"location": "me-central2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.me-west1.rep.googleapis.com/",
+"location": "me-west1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.northamerica-northeast1.rep.googleapis.com/",
+"location": "northamerica-northeast1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.northamerica-northeast2.rep.googleapis.com/",
+"location": "northamerica-northeast2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.southamerica-east1.rep.googleapis.com/",
+"location": "southamerica-east1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.southamerica-west1.rep.googleapis.com/",
+"location": "southamerica-west1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-central1.rep.googleapis.com/",
+"location": "us-central1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-central2.rep.googleapis.com/",
+"location": "us-central2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-east1.rep.googleapis.com/",
+"location": "us-east1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-east4.rep.googleapis.com/",
+"location": "us-east4"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-east5.rep.googleapis.com/",
+"location": "us-east5"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-east7.rep.googleapis.com/",
+"location": "us-east7"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-south1.rep.googleapis.com/",
+"location": "us-south1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-west1.rep.googleapis.com/",
+"location": "us-west1"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-west2.rep.googleapis.com/",
+"location": "us-west2"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-west3.rep.googleapis.com/",
+"location": "us-west3"
+},
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://containeranalysis.us-west4.rep.googleapis.com/",
+"location": "us-west4"
+}
+],
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "containeranalysis:v1beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://containeranalysis.mtls.googleapis.com/",
+"name": "containeranalysis",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"notes": {
+"methods": {
+"batchCreate": {
+"description": "Creates new notes in batch.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes:batchCreate",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.notes.batchCreate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the notes are to be created.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/notes:batchCreate",
+"request": {
+"$ref": "BatchCreateNotesRequest"
+},
+"response": {
+"$ref": "BatchCreateNotesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a new note.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.notes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"noteId": {
+"description": "Required. The ID to use for this note.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the note is to be created.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/notes",
+"request": {
+"$ref": "Note"
+},
+"response": {
+"$ref": "Note"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified note.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes/{notesId}",
+"httpMethod": "DELETE",
+"id": "containeranalysis.projects.locations.notes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the specified note.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes/{notesId}",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.locations.notes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Note"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes/{notesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.notes.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists notes for the specified project.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.locations.notes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Number of notes to return in the list. Must be positive. Max allowed page size is 1000. If not specified, page size defaults to 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token to provide to skip to a particular spot in the list.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project to list notes for in the form of `projects/[PROJECT_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/notes",
+"response": {
+"$ref": "ListNotesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the specified note.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes/{notesId}",
+"httpMethod": "PATCH",
+"id": "containeranalysis.projects.locations.notes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Note"
+},
+"response": {
+"$ref": "Note"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes/{notesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.notes.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns the permissions that a caller has on the specified note or occurrence. Requires list permission on the project (for example, `containeranalysis.notes.list`). The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes/{notesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.notes.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"occurrences": {
+"methods": {
+"list": {
+"description": "Lists occurrences referencing the specified note. Provider projects can use this method to get all occurrences across consumer projects referencing the specified note.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/notes/{notesId}/occurrences",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.locations.notes.occurrences.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the note to list occurrences for in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Number of occurrences to return in the list.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token to provide to skip to a particular spot in the list.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/occurrences",
+"response": {
+"$ref": "ListNoteOccurrencesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"occurrences": {
+"methods": {
+"batchCreate": {
+"description": "Creates new occurrences in batch.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences:batchCreate",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.occurrences.batchCreate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the occurrences are to be created.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/occurrences:batchCreate",
+"request": {
+"$ref": "BatchCreateOccurrencesRequest"
+},
+"response": {
+"$ref": "BatchCreateOccurrencesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a new occurrence.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.occurrences.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the occurrence is to be created.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/occurrences",
+"request": {
+"$ref": "Occurrence"
+},
+"response": {
+"$ref": "Occurrence"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified occurrence. For example, use this method to delete an occurrence when the occurrence is no longer applicable for the given resource.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences/{occurrencesId}",
+"httpMethod": "DELETE",
+"id": "containeranalysis.projects.locations.occurrences.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the specified occurrence.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences/{occurrencesId}",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.locations.occurrences.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Occurrence"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences/{occurrencesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.occurrences.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getNotes": {
+"description": "Gets the note attached to the specified occurrence. Consumer projects can use this method to get a note that belongs to a provider project.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences/{occurrencesId}/notes",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.locations.occurrences.getNotes",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/notes",
+"response": {
+"$ref": "Note"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getVulnerabilitySummary": {
+"description": "Gets a summary of the number and severity of occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences:vulnerabilitySummary",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.locations.occurrences.getVulnerabilitySummary",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project to get a vulnerability summary for in the form of `projects/[PROJECT_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/occurrences:vulnerabilitySummary",
+"response": {
+"$ref": "VulnerabilityOccurrencesSummary"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists occurrences for the specified project.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.locations.occurrences.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Number of occurrences to return in the list. Must be positive. Max allowed page size is 1000. If not specified, page size defaults to 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token to provide to skip to a particular spot in the list.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project to list occurrences for in the form of `projects/[PROJECT_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/occurrences",
+"response": {
+"$ref": "ListOccurrencesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the specified occurrence.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences/{occurrencesId}",
+"httpMethod": "PATCH",
+"id": "containeranalysis.projects.locations.occurrences.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Occurrence"
+},
+"response": {
+"$ref": "Occurrence"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences/{occurrencesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.occurrences.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns the permissions that a caller has on the specified note or occurrence. Requires list permission on the project (for example, `containeranalysis.notes.list`). The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/occurrences/{occurrencesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.occurrences.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"resources": {
+"methods": {
+"exportSBOM": {
+"description": "Generates an SBOM and other dependency information for the given resource.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/resources/{resourcesId}:exportSBOM",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.resources.exportSBOM",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource in the form of `projects/[PROJECT_ID]/resources/[RESOURCE_URL]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/resources/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:exportSBOM",
+"request": {
+"$ref": "ExportSBOMRequest"
+},
+"response": {
+"$ref": "ExportSBOMResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"generatePackagesSummary": {
+"description": "Gets a summary of the packages within a given resource.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/resources/{resourcesId}:generatePackagesSummary",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.locations.resources.generatePackagesSummary",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource to get a packages summary for in the form of `projects/[PROJECT_ID]/resources/[RESOURCE_URL]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/resources/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:generatePackagesSummary",
+"request": {
+"$ref": "GeneratePackagesSummaryRequest"
+},
+"response": {
+"$ref": "PackagesSummaryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"notes": {
+"methods": {
+"batchCreate": {
+"description": "Creates new notes in batch.",
+"flatPath": "v1beta1/projects/{projectsId}/notes:batchCreate",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.notes.batchCreate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the notes are to be created.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/notes:batchCreate",
+"request": {
+"$ref": "BatchCreateNotesRequest"
+},
+"response": {
+"$ref": "BatchCreateNotesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a new note.",
+"flatPath": "v1beta1/projects/{projectsId}/notes",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.notes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"noteId": {
+"description": "Required. The ID to use for this note.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the note is to be created.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/notes",
+"request": {
+"$ref": "Note"
+},
+"response": {
+"$ref": "Note"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified note.",
+"flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+"httpMethod": "DELETE",
+"id": "containeranalysis.projects.notes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the specified note.",
+"flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.notes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Note"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.notes.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists notes for the specified project.",
+"flatPath": "v1beta1/projects/{projectsId}/notes",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.notes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Number of notes to return in the list. Must be positive. Max allowed page size is 1000. If not specified, page size defaults to 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token to provide to skip to a particular spot in the list.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project to list notes for in the form of `projects/[PROJECT_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/notes",
+"response": {
+"$ref": "ListNotesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the specified note.",
+"flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}",
+"httpMethod": "PATCH",
+"id": "containeranalysis.projects.notes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Note"
+},
+"response": {
+"$ref": "Note"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.notes.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns the permissions that a caller has on the specified note or occurrence. Requires list permission on the project (for example, `containeranalysis.notes.list`). The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.notes.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"occurrences": {
+"methods": {
+"list": {
+"description": "Lists occurrences referencing the specified note. Provider projects can use this method to get all occurrences across consumer projects referencing the specified note.",
+"flatPath": "v1beta1/projects/{projectsId}/notes/{notesId}/occurrences",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.notes.occurrences.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the note to list occurrences for in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/notes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Number of occurrences to return in the list.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token to provide to skip to a particular spot in the list.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/occurrences",
+"response": {
+"$ref": "ListNoteOccurrencesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"occurrences": {
+"methods": {
+"batchCreate": {
+"description": "Creates new occurrences in batch.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences:batchCreate",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.occurrences.batchCreate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the occurrences are to be created.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/occurrences:batchCreate",
+"request": {
+"$ref": "BatchCreateOccurrencesRequest"
+},
+"response": {
+"$ref": "BatchCreateOccurrencesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a new occurrence.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.occurrences.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project in the form of `projects/[PROJECT_ID]`, under which the occurrence is to be created.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/occurrences",
+"request": {
+"$ref": "Occurrence"
+},
+"response": {
+"$ref": "Occurrence"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified occurrence. For example, use this method to delete an occurrence when the occurrence is no longer applicable for the given resource.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+"httpMethod": "DELETE",
+"id": "containeranalysis.projects.occurrences.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the specified occurrence.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.occurrences.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Occurrence"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a note or an occurrence resource. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.occurrences.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getNotes": {
+"description": "Gets the note attached to the specified occurrence. Consumer projects can use this method to get a note that belongs to a provider project.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}/notes",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.occurrences.getNotes",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/notes",
+"response": {
+"$ref": "Note"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getVulnerabilitySummary": {
+"description": "Gets a summary of the number and severity of occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences:vulnerabilitySummary",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.occurrences.getVulnerabilitySummary",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project to get a vulnerability summary for in the form of `projects/[PROJECT_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/occurrences:vulnerabilitySummary",
+"response": {
+"$ref": "VulnerabilityOccurrencesSummary"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists occurrences for the specified project.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences",
+"httpMethod": "GET",
+"id": "containeranalysis.projects.occurrences.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Number of occurrences to return in the list. Must be positive. Max allowed page size is 1000. If not specified, page size defaults to 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token to provide to skip to a particular spot in the list.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project to list occurrences for in the form of `projects/[PROJECT_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/occurrences",
+"response": {
+"$ref": "ListOccurrencesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the specified occurrence.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}",
+"httpMethod": "PATCH",
+"id": "containeranalysis.projects.occurrences.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Occurrence"
+},
+"response": {
+"$ref": "Occurrence"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified note or occurrence. Requires `containeranalysis.notes.setIamPolicy` or `containeranalysis.occurrences.setIamPolicy` permission if the resource is a note or an occurrence, respectively. The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.occurrences.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns the permissions that a caller has on the specified note or occurrence. Requires list permission on the project (for example, `containeranalysis.notes.list`). The resource takes the format `projects/[PROJECT_ID]/notes/[NOTE_ID]` for notes and `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]` for occurrences.",
+"flatPath": "v1beta1/projects/{projectsId}/occurrences/{occurrencesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.occurrences.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/occurrences/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"resources": {
+"methods": {
+"exportSBOM": {
+"description": "Generates an SBOM and other dependency information for the given resource.",
+"flatPath": "v1beta1/projects/{projectsId}/resources/{resourcesId}:exportSBOM",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.resources.exportSBOM",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource in the form of `projects/[PROJECT_ID]/resources/[RESOURCE_URL]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/resources/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:exportSBOM",
+"request": {
+"$ref": "ExportSBOMRequest"
+},
+"response": {
+"$ref": "ExportSBOMResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"generatePackagesSummary": {
+"description": "Gets a summary of the packages within a given resource.",
+"flatPath": "v1beta1/projects/{projectsId}/resources/{resourcesId}:generatePackagesSummary",
+"httpMethod": "POST",
+"id": "containeranalysis.projects.resources.generatePackagesSummary",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the resource to get a packages summary for in the form of `projects/[PROJECT_ID]/resources/[RESOURCE_URL]`.",
+"location": "path",
+"pattern": "^projects/[^/]+/resources/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:generatePackagesSummary",
+"request": {
+"$ref": "GeneratePackagesSummaryRequest"
+},
+"response": {
+"$ref": "PackagesSummaryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20240924",
+"rootUrl": "https://containeranalysis.googleapis.com/",
+"schemas": {
+"AliasContext": {
+"description": "An alias to a repo revision.",
+"id": "AliasContext",
+"properties": {
+"kind": {
+"description": "The alias kind.",
+"enum": [
+"KIND_UNSPECIFIED",
+"FIXED",
+"MOVABLE",
+"OTHER"
+],
+"enumDescriptions": [
+"Unknown.",
+"Git tag.",
+"Git branch.",
+"Used to specify non-standard aliases. For example, if a Git repo has a ref named \"refs/foo/bar\"."
+],
+"type": "string"
+},
+"name": {
+"description": "The alias name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalysisCompleted": {
+"description": "Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource.",
+"id": "AnalysisCompleted",
+"properties": {
+"analysisType": {
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Artifact": {
+"description": "Artifact describes a build product.",
+"id": "Artifact",
+"properties": {
+"checksum": {
+"description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.",
+"type": "string"
+},
+"id": {
+"description": "Artifact ID, if any; for container images, this will be a URL by digest like `gcr.io/projectID/imagename@sha256:123456`.",
+"type": "string"
+},
+"names": {
+"description": "Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ArtifactHashes": {
+"description": "Defines a hash object for use in Materials and Products.",
+"id": "ArtifactHashes",
+"properties": {
+"sha256": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"ArtifactRule": {
+"description": "Defines an object to declare an in-toto artifact rule",
+"id": "ArtifactRule",
+"properties": {
+"artifactRule": {
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Assessment": {
+"description": "Assessment provides all information that is related to a single vulnerability for this product.",
+"id": "Assessment",
+"properties": {
+"cve": {
+"deprecated": true,
+"description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
+"type": "string"
+},
+"impacts": {
+"description": "Contains information about the impact of this vulnerability, this will change with time.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"justification": {
+"$ref": "Justification",
+"description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
+},
+"longDescription": {
+"description": "A detailed description of this Vex.",
+"type": "string"
+},
+"relatedUris": {
+"description": "Holds a list of references associated with this vulnerability item and assessment. These uris have additional information about the vulnerability and the assessment itself. E.g. Link to a document which details how this assessment concluded the state of this vulnerability.",
+"items": {
+"$ref": "RelatedUrl"
+},
+"type": "array"
+},
+"remediations": {
+"description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
+"items": {
+"$ref": "Remediation"
+},
+"type": "array"
+},
+"shortDescription": {
+"description": "A one sentence description of this Vex.",
+"type": "string"
+},
+"state": {
+"description": "Provides the state of this Vulnerability assessment.",
+"enum": [
+"STATE_UNSPECIFIED",
+"AFFECTED",
+"NOT_AFFECTED",
+"FIXED",
+"UNDER_INVESTIGATION"
+],
+"enumDescriptions": [
+"No state is specified.",
+"This product is known to be affected by this vulnerability.",
+"This product is known to be not affected by this vulnerability.",
+"This product contains a fix for this vulnerability.",
+"It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation."
+],
+"type": "string"
+},
+"vulnerabilityId": {
+"description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Attestation": {
+"description": "Occurrence that represents a single \"attestation\". The authenticity of an attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the authority to which this attestation is attached is primarily useful for look-up (how to find this attestation if you already know the authority and artifact to be verified) and intent (which authority was this attestation intended to sign for).",
+"id": "Attestation",
+"properties": {
+"genericSignedAttestation": {
+"$ref": "GenericSignedAttestation"
+},
+"pgpSignedAttestation": {
+"$ref": "PgpSignedAttestation",
+"description": "A PGP signed attestation."
+}
+},
+"type": "object"
+},
+"Authority": {
+"description": "Note kind that represents a logical attestation \"role\" or \"authority\". For example, an organization might have one `Authority` for \"QA\" and one for \"build\". This note is intended to act strictly as a grouping mechanism for the attached occurrences (Attestations). This grouping mechanism also provides a security boundary, since IAM ACLs gate the ability for a principle to attach an occurrence to a given note. It also provides a single point of lookup to find all attached attestation occurrences, even if they don't all live in the same project.",
+"id": "Authority",
+"properties": {
+"hint": {
+"$ref": "Hint",
+"description": "Hint hints at the purpose of the attestation authority."
+}
+},
+"type": "object"
+},
+"Basis": {
+"description": "Basis describes the base image portion (Note) of the DockerImage relationship. Linked occurrences are derived from this or an equivalent image via: FROM Or an equivalent reference, e.g. a tag of the resource_url.",
+"id": "Basis",
+"properties": {
+"fingerprint": {
+"$ref": "Fingerprint",
+"description": "Required. Immutable. The fingerprint of the base image."
+},
+"resourceUrl": {
+"description": "Required. Immutable. The resource_url for the resource representing the basis of associated occurrence images.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BatchCreateNotesRequest": {
+"description": "Request to create notes in batch.",
+"id": "BatchCreateNotesRequest",
+"properties": {
+"notes": {
+"additionalProperties": {
+"$ref": "Note"
+},
+"description": "Required. The notes to create, the key is expected to be the note ID. Max allowed length is 1000.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"BatchCreateNotesResponse": {
+"description": "Response for creating notes in batch.",
+"id": "BatchCreateNotesResponse",
+"properties": {
+"notes": {
+"description": "The notes that were created.",
+"items": {
+"$ref": "Note"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BatchCreateOccurrencesRequest": {
+"description": "Request to create occurrences in batch.",
+"id": "BatchCreateOccurrencesRequest",
+"properties": {
+"occurrences": {
+"description": "Required. The occurrences to create. Max allowed length is 1000.",
+"items": {
+"$ref": "Occurrence"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BatchCreateOccurrencesResponse": {
+"description": "Response for creating occurrences in batch.",
+"id": "BatchCreateOccurrencesResponse",
+"properties": {
+"occurrences": {
+"description": "The occurrences that were created.",
+"items": {
+"$ref": "Occurrence"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Build": {
+"description": "Note holding the version of the provider's builder and the signature of the provenance message in the build details occurrence.",
+"id": "Build",
+"properties": {
+"builderVersion": {
+"description": "Required. Immutable. Version of the builder which produced this build.",
+"type": "string"
+},
+"signature": {
+"$ref": "BuildSignature",
+"description": "Signature of the build in occurrences pointing to this build note containing build details."
+}
+},
+"type": "object"
+},
+"BuildDefinition": {
+"id": "BuildDefinition",
+"properties": {
+"buildType": {
+"type": "string"
+},
+"externalParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"internalParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"resolvedDependencies": {
+"items": {
+"$ref": "ResourceDescriptor"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BuildMetadata": {
+"id": "BuildMetadata",
+"properties": {
+"finishedOn": {
+"format": "google-datetime",
+"type": "string"
+},
+"invocationId": {
+"type": "string"
+},
+"startedOn": {
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BuildProvenance": {
+"description": "Provenance of a build. Contains all information needed to verify the full details about the build from source to completion.",
+"id": "BuildProvenance",
+"properties": {
+"buildOptions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details.",
+"type": "object"
+},
+"builderVersion": {
+"description": "Version string of the builder at the time this build was executed.",
+"type": "string"
+},
+"builtArtifacts": {
+"description": "Output of the build.",
+"items": {
+"$ref": "Artifact"
+},
+"type": "array"
+},
+"commands": {
+"description": "Commands requested by the build.",
+"items": {
+"$ref": "Command"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Time at which the build was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"creator": {
+"description": "E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the time the build was initiated; this address may not represent the same end-user for all time.",
+"type": "string"
+},
+"endTime": {
+"description": "Time at which execution of the build was finished.",
+"format": "google-datetime",
+"type": "string"
+},
+"id": {
+"description": "Required. Unique identifier of the build.",
+"type": "string"
+},
+"logsUri": {
+"description": "URI where any logs for this provenance were written.",
+"type": "string"
+},
+"projectId": {
+"description": "ID of the project.",
+"type": "string"
+},
+"sourceProvenance": {
+"$ref": "Source",
+"description": "Details of the Source input to the build."
+},
+"startTime": {
+"description": "Time at which execution of the build was started.",
+"format": "google-datetime",
+"type": "string"
+},
+"triggerId": {
+"description": "Trigger identifier if the build was triggered automatically; empty if not.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BuildSignature": {
+"description": "Message encapsulating the signature of the verified build.",
+"id": "BuildSignature",
+"properties": {
+"keyId": {
+"description": "An ID for the key used to sign. This could be either an ID for the key stored in `public_key` (such as the ID or fingerprint for a PGP key, or the CN for a cert), or a reference to an external key (such as a reference to a key in Cloud Key Management Service).",
+"type": "string"
+},
+"keyType": {
+"description": "The type of the key, either stored in `public_key` or referenced in `key_id`.",
+"enum": [
+"KEY_TYPE_UNSPECIFIED",
+"PGP_ASCII_ARMORED",
+"PKIX_PEM"
+],
+"enumDescriptions": [
+"`KeyType` is not set.",
+"`PGP ASCII Armored` public key.",
+"`PKIX PEM` public key."
+],
+"type": "string"
+},
+"publicKey": {
+"description": "Public key of the builder which can be used to verify that the related findings are valid and unchanged. If `key_type` is empty, this defaults to PEM encoded public keys. This field may be empty if `key_id` references an external key. For Cloud Build based signatures, this is a PEM encoded public key. To verify the Cloud Build signature, place the contents of this field into a file (public.pem). The signature field is base64-decoded into its binary representation in signature.bin, and the provenance bytes from `BuildDetails` are base64-decoded into a binary representation in signed.bin. OpenSSL can then verify the signature: `openssl sha256 -verify public.pem -signature signature.bin signed.bin`",
+"type": "string"
+},
+"signature": {
+"description": "Required. Signature of the related `BuildProvenance`. In JSON, this is base-64 encoded.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BuildStep": {
+"description": "A step in the build pipeline. Next ID: 21",
+"id": "BuildStep",
+"properties": {
+"allowExitCodes": {
+"description": "Allow this build step to fail without failing the entire build if and only if the exit code is one of the specified codes. If allow_failure is also specified, this field will take precedence.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"allowFailure": {
+"description": "Allow this build step to fail without failing the entire build. If false, the entire build will fail if this step fails. Otherwise, the build will succeed, but this step will still have a failure status. Error information will be reported in the failure_detail field.",
+"type": "boolean"
+},
+"args": {
+"description": "A list of arguments that will be presented to the step when it is started. If the image used to run the step's container has an entrypoint, the `args` are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"automapSubstitutions": {
+"description": "Option to include built-in and custom substitutions as env variables for this build step. This option will override the global option in BuildOption.",
+"type": "boolean"
+},
+"dir": {
+"description": "Working directory to use when running this step's container. If this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a `volume` for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.",
+"type": "string"
+},
+"entrypoint": {
+"description": "Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used.",
+"type": "string"
+},
+"env": {
+"description": "A list of environment variable definitions to be used when running a step. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"exitCode": {
+"description": "Output only. Return code from running the step.",
+"format": "int32",
+"type": "integer"
+},
+"id": {
+"description": "Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency.",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary. The Docker daemon's cache will already have the latest versions of all of the officially supported build steps ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). The Docker daemon will also have cached many of the layers for some popular images, like \"ubuntu\", \"debian\", but they will be refreshed at the time you attempt to use them. If you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.",
+"type": "string"
+},
+"pullTiming": {
+"$ref": "TimeSpan",
+"description": "Output only. Stores timing information for pulling this build step's builder image only."
+},
+"script": {
+"description": "A shell script to be executed in the step. When script is provided, the user cannot specify the entrypoint or args.",
+"type": "string"
+},
+"secretEnv": {
+"description": "A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's `Secret`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"status": {
+"description": "Output only. Status of the build step. At this time, build step status is only updated on build completion; step status is not updated in real-time as the build progresses.",
+"enum": [
+"STATUS_UNKNOWN",
+"PENDING",
+"QUEUING",
+"QUEUED",
+"WORKING",
+"SUCCESS",
+"FAILURE",
+"INTERNAL_ERROR",
+"TIMEOUT",
+"CANCELLED",
+"EXPIRED"
+],
+"enumDescriptions": [
+"Status of the build is unknown.",
+"Build has been created and is pending execution and queuing. It has not been queued.",
+"Build has been received and is being queued.",
+"Build or step is queued; work has not yet begun.",
+"Build or step is being executed.",
+"Build or step finished successfully.",
+"Build or step failed to complete successfully.",
+"Build or step failed due to an internal cause.",
+"Build or step took longer than was allowed.",
+"Build or step was canceled by a user.",
+"Build was enqueued for longer than the value of `queue_ttl`."
+],
+"type": "string"
+},
+"timeout": {
+"description": "Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out.",
+"format": "google-duration",
+"type": "string"
+},
+"timing": {
+"$ref": "TimeSpan",
+"description": "Output only. Stores timing information for executing this build step."
+},
+"volumes": {
+"description": "List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.",
+"items": {
+"$ref": "Volume"
+},
+"type": "array"
+},
+"waitFor": {
+"description": "The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all previous build steps in the `Build.Steps` list have completed successfully.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ByProducts": {
+"description": "Defines an object for the byproducts field in in-toto links. The suggested fields are \"stderr\", \"stdout\", and \"return-value\".",
+"id": "ByProducts",
+"properties": {
+"customValues": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"CVSS": {
+"description": "Common Vulnerability Scoring System. This message is compatible with CVSS v2 and v3. For CVSS v2 details, see https://www.first.org/cvss/v2/guide CVSS v2 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v2-calculator For CVSS v3 details, see https://www.first.org/cvss/specification-document CVSS v3 calculator: https://nvd.nist.gov/vuln-metrics/cvss/v3-calculator",
+"id": "CVSS",
+"properties": {
+"attackComplexity": {
+"description": "Defined in CVSS v3, CVSS v2",
+"enum": [
+"ATTACK_COMPLEXITY_UNSPECIFIED",
+"ATTACK_COMPLEXITY_LOW",
+"ATTACK_COMPLEXITY_HIGH",
+"ATTACK_COMPLEXITY_MEDIUM"
+],
+"enumDescriptions": [
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v2"
+],
+"type": "string"
+},
+"attackVector": {
+"description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments. Defined in CVSS v3, CVSS v2",
+"enum": [
+"ATTACK_VECTOR_UNSPECIFIED",
+"ATTACK_VECTOR_NETWORK",
+"ATTACK_VECTOR_ADJACENT",
+"ATTACK_VECTOR_LOCAL",
+"ATTACK_VECTOR_PHYSICAL"
+],
+"enumDescriptions": [
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3"
+],
+"type": "string"
+},
+"authentication": {
+"description": "Defined in CVSS v2",
+"enum": [
+"AUTHENTICATION_UNSPECIFIED",
+"AUTHENTICATION_MULTIPLE",
+"AUTHENTICATION_SINGLE",
+"AUTHENTICATION_NONE"
+],
+"enumDescriptions": [
+"Defined in CVSS v2",
+"Defined in CVSS v2",
+"Defined in CVSS v2",
+"Defined in CVSS v2"
+],
+"type": "string"
+},
+"availabilityImpact": {
+"description": "Defined in CVSS v3, CVSS v2",
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE",
+"IMPACT_PARTIAL",
+"IMPACT_COMPLETE"
+],
+"enumDescriptions": [
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3",
+"Defined in CVSS v3",
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v2",
+"Defined in CVSS v2"
+],
+"type": "string"
+},
+"baseScore": {
+"description": "The base score is a function of the base metric scores.",
+"format": "float",
+"type": "number"
+},
+"confidentialityImpact": {
+"description": "Defined in CVSS v3, CVSS v2",
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE",
+"IMPACT_PARTIAL",
+"IMPACT_COMPLETE"
+],
+"enumDescriptions": [
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3",
+"Defined in CVSS v3",
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v2",
+"Defined in CVSS v2"
+],
+"type": "string"
+},
+"exploitabilityScore": {
+"format": "float",
+"type": "number"
+},
+"impactScore": {
+"format": "float",
+"type": "number"
+},
+"integrityImpact": {
+"description": "Defined in CVSS v3, CVSS v2",
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE",
+"IMPACT_PARTIAL",
+"IMPACT_COMPLETE"
+],
+"enumDescriptions": [
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v3",
+"Defined in CVSS v3",
+"Defined in CVSS v3, CVSS v2",
+"Defined in CVSS v2",
+"Defined in CVSS v2"
+],
+"type": "string"
+},
+"privilegesRequired": {
+"description": "Defined in CVSS v3",
+"enum": [
+"PRIVILEGES_REQUIRED_UNSPECIFIED",
+"PRIVILEGES_REQUIRED_NONE",
+"PRIVILEGES_REQUIRED_LOW",
+"PRIVILEGES_REQUIRED_HIGH"
+],
+"enumDescriptions": [
+"Defined in CVSS v3",
+"Defined in CVSS v3",
+"Defined in CVSS v3",
+"Defined in CVSS v3"
+],
+"type": "string"
+},
+"scope": {
+"description": "Defined in CVSS v3",
+"enum": [
+"SCOPE_UNSPECIFIED",
+"SCOPE_UNCHANGED",
+"SCOPE_CHANGED"
+],
+"enumDescriptions": [
+"Defined in CVSS v3",
+"Defined in CVSS v3",
+"Defined in CVSS v3"
+],
+"type": "string"
+},
+"userInteraction": {
+"description": "Defined in CVSS v3",
+"enum": [
+"USER_INTERACTION_UNSPECIFIED",
+"USER_INTERACTION_NONE",
+"USER_INTERACTION_REQUIRED"
+],
+"enumDescriptions": [
+"Defined in CVSS v3",
+"Defined in CVSS v3",
+"Defined in CVSS v3"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CVSSv3": {
+"description": "Deprecated. Common Vulnerability Scoring System version 3. For details, see https://www.first.org/cvss/specification-document",
+"id": "CVSSv3",
+"properties": {
+"attackComplexity": {
+"enum": [
+"ATTACK_COMPLEXITY_UNSPECIFIED",
+"ATTACK_COMPLEXITY_LOW",
+"ATTACK_COMPLEXITY_HIGH"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"attackVector": {
+"description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments.",
+"enum": [
+"ATTACK_VECTOR_UNSPECIFIED",
+"ATTACK_VECTOR_NETWORK",
+"ATTACK_VECTOR_ADJACENT",
+"ATTACK_VECTOR_LOCAL",
+"ATTACK_VECTOR_PHYSICAL"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"availabilityImpact": {
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"baseScore": {
+"description": "The base score is a function of the base metric scores.",
+"format": "float",
+"type": "number"
+},
+"confidentialityImpact": {
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"exploitabilityScore": {
+"format": "float",
+"type": "number"
+},
+"impactScore": {
+"format": "float",
+"type": "number"
+},
+"integrityImpact": {
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"privilegesRequired": {
+"enum": [
+"PRIVILEGES_REQUIRED_UNSPECIFIED",
+"PRIVILEGES_REQUIRED_NONE",
+"PRIVILEGES_REQUIRED_LOW",
+"PRIVILEGES_REQUIRED_HIGH"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"scope": {
+"enum": [
+"SCOPE_UNSPECIFIED",
+"SCOPE_UNCHANGED",
+"SCOPE_CHANGED"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"userInteraction": {
+"enum": [
+"USER_INTERACTION_UNSPECIFIED",
+"USER_INTERACTION_NONE",
+"USER_INTERACTION_REQUIRED"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudRepoSourceContext": {
+"description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.",
+"id": "CloudRepoSourceContext",
+"properties": {
+"aliasContext": {
+"$ref": "AliasContext",
+"description": "An alias, which may be a branch or tag."
+},
+"repoId": {
+"$ref": "RepoId",
+"description": "The ID of the repo."
+},
+"revisionId": {
+"description": "A revision ID.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Command": {
+"description": "Command describes a step performed as part of the build pipeline.",
+"id": "Command",
+"properties": {
+"args": {
+"description": "Command-line arguments used when executing this command.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"dir": {
+"description": "Working directory (relative to project source root) used when running this command.",
+"type": "string"
+},
+"env": {
+"description": "Environment variables set before running this command.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"id": {
+"description": "Optional unique identifier for this command, used in wait_for to reference this command as a dependency.",
+"type": "string"
+},
+"name": {
+"description": "Required. Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`.",
+"type": "string"
+},
+"waitFor": {
+"description": "The ID(s) of the command(s) that this command depends on.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalConfig": {
+"description": "ApprovalConfig describes configuration for manual approval of a build.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalConfig",
+"properties": {
+"approvalRequired": {
+"description": "Whether or not approval is needed. If this is set on a build, it will become pending when created, and will need to be explicitly approved to start.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalResult": {
+"description": "ApprovalResult describes the decision and associated metadata of a manual approval of a build.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalResult",
+"properties": {
+"approvalTime": {
+"description": "Output only. The time when the approval decision was made.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"approverAccount": {
+"description": "Output only. Email of the user that called the ApproveBuild API to approve or reject a build at the time that the API was called.",
+"readOnly": true,
+"type": "string"
+},
+"comment": {
+"description": "Optional. An optional comment for this manual approval result.",
+"type": "string"
+},
+"decision": {
+"description": "Required. The decision of this manual approval.",
+"enum": [
+"DECISION_UNSPECIFIED",
+"APPROVED",
+"REJECTED"
+],
+"enumDescriptions": [
+"Default enum type. This should not be used.",
+"Build is approved.",
+"Build is rejected."
+],
+"type": "string"
+},
+"url": {
+"description": "Optional. An optional URL tied to this manual approval result. This field is essentially the same as comment, except that it will be rendered by the UI differently. An example use case is a link to an external job that approved this Build.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts": {
+"description": "Artifacts produced by a build that should be uploaded upon successful completion of all build steps.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts",
+"properties": {
+"images": {
+"description": "A list of images to be pushed upon the successful completion of all build steps. The images will be pushed using the builder service account's credentials. The digests of the pushed images will be stored in the Build resource's results field. If any of the images fail to be pushed, the build is marked FAILURE.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"mavenArtifacts": {
+"description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact"
+},
+"type": "array"
+},
+"npmPackages": {
+"description": "A list of npm packages to be uploaded to Artifact Registry upon successful completion of all build steps. Npm packages in the specified paths will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any packages fail to be pushed, the build is marked FAILURE.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsNpmPackage"
+},
+"type": "array"
+},
+"objects": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects",
+"description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE."
+},
+"pythonPackages": {
+"description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects": {
+"description": "Files in the workspace to upload to Cloud Storage upon successful completion of all build steps.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects",
+"properties": {
+"location": {
+"description": "Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\". (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Files in the workspace matching any path pattern will be uploaded to Cloud Storage with this location as a prefix.",
+"type": "string"
+},
+"paths": {
+"description": "Path globs used to match files in the build's workspace.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"timing": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"description": "Output only. Stores timing information for pushing all artifact objects.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact": {
+"description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact",
+"properties": {
+"artifactId": {
+"description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry.",
+"type": "string"
+},
+"groupId": {
+"description": "Maven `groupId` value used when uploading the artifact to Artifact Registry.",
+"type": "string"
+},
+"path": {
+"description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.",
+"type": "string"
+},
+"repository": {
+"description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.",
+"type": "string"
+},
+"version": {
+"description": "Maven `version` value used when uploading the artifact to Artifact Registry.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsNpmPackage": {
+"description": "Npm package to upload to Artifact Registry upon successful completion of all build steps.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsNpmPackage",
+"properties": {
+"packagePath": {
+"description": "Path to the package.json. e.g. workspace/path/to/package",
+"type": "string"
+},
+"repository": {
+"description": "Artifact Registry repository, in the form \"https://$REGION-npm.pkg.dev/$PROJECT/$REPOSITORY\" Npm package in the workspace specified by path will be zipped and uploaded to Artifact Registry with this location as a prefix.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage": {
+"description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage",
+"properties": {
+"paths": {
+"description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and sometimes additionally an `.asc` file.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"repository": {
+"description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1Build": {
+"description": "A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $PROJECT_NUMBER: the project number of the build. - $LOCATION: the location/region of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Build",
+"properties": {
+"approval": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildApproval",
+"description": "Output only. Describes this build's approval configuration, status, and result.",
+"readOnly": true
+},
+"artifacts": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts",
+"description": "Artifacts produced by the build that should be uploaded upon successful completion of all build steps."
+},
+"availableSecrets": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1Secrets",
+"description": "Secrets and secret environment variables."
+},
+"buildTriggerId": {
+"description": "Output only. The ID of the `BuildTrigger` that triggered this build, if it was triggered automatically.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Time at which the request to create the build was received.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"failureInfo": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildFailureInfo",
+"description": "Output only. Contains information about the build when status=FAILURE.",
+"readOnly": true
+},
+"finishTime": {
+"description": "Output only. Time at which execution of the build was finished. The difference between finish_time and start_time is the duration of the build's execution.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"gitConfig": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1GitConfig",
+"description": "Optional. Configuration for git operations."
+},
+"id": {
+"description": "Output only. Unique identifier of the build.",
+"readOnly": true,
+"type": "string"
+},
+"images": {
+"description": "A list of images to be pushed upon the successful completion of all build steps. The images are pushed using the builder service account's credentials. The digests of the pushed images will be stored in the `Build` resource's results field. If any of the images fail to be pushed, the build status is marked `FAILURE`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logUrl": {
+"description": "Output only. URL to logs for this build in Google Cloud Console.",
+"readOnly": true,
+"type": "string"
+},
+"logsBucket": {
+"description": "Cloud Storage bucket where logs should be written (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)). Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The 'Build' name with format: `projects/{project}/locations/{location}/builds/{build}`, where {build} is a unique identifier generated by the service.",
+"readOnly": true,
+"type": "string"
+},
+"options": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptions",
+"description": "Special options for this build."
+},
+"projectId": {
+"description": "Output only. ID of the project.",
+"readOnly": true,
+"type": "string"
+},
+"queueTtl": {
+"description": "TTL in queue for this build. If provided and the build is enqueued longer than this value, the build will expire and the build status will be `EXPIRED`. The TTL starts ticking from create_time.",
+"format": "google-duration",
+"type": "string"
+},
+"results": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1Results",
+"description": "Output only. Results of the build.",
+"readOnly": true
+},
+"secrets": {
+"description": "Secrets to decrypt using Cloud Key Management Service. Note: Secret Manager is the recommended technique for managing sensitive data with Cloud Build. Use `available_secrets` to configure builds to access secrets from Secret Manager. For instructions, see: https://cloud.google.com/cloud-build/docs/securing-builds/use-secrets",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1Secret"
+},
+"type": "array"
+},
+"serviceAccount": {
+"description": "IAM service account whose credentials will be used at build runtime. Must be of the format `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}`. ACCOUNT can be email address or uniqueId of the service account. ",
+"type": "string"
+},
+"source": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1Source",
+"description": "Optional. The location of the source files to build."
+},
+"sourceProvenance": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1SourceProvenance",
+"description": "Output only. A permanent fixed identifier for source.",
+"readOnly": true
+},
+"startTime": {
+"description": "Output only. Time at which execution of the build was started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"status": {
+"description": "Output only. Status of the build.",
+"enum": [
+"STATUS_UNKNOWN",
+"PENDING",
+"QUEUED",
+"WORKING",
+"SUCCESS",
+"FAILURE",
+"INTERNAL_ERROR",
+"TIMEOUT",
+"CANCELLED",
+"EXPIRED"
+],
+"enumDescriptions": [
+"Status of the build is unknown.",
+"Build has been created and is pending execution and queuing. It has not been queued.",
+"Build or step is queued; work has not yet begun.",
+"Build or step is being executed.",
+"Build or step finished successfully.",
+"Build or step failed to complete successfully.",
+"Build or step failed due to an internal cause.",
+"Build or step took longer than was allowed.",
+"Build or step was canceled by a user.",
+"Build was enqueued for longer than the value of `queue_ttl`."
+],
+"readOnly": true,
+"type": "string"
+},
+"statusDetail": {
+"description": "Output only. Customer-readable message about the current status.",
+"readOnly": true,
+"type": "string"
+},
+"steps": {
+"description": "Required. The operations to be performed on the workspace.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildStep"
+},
+"type": "array"
+},
+"substitutions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Substitutions data for `Build` resource.",
+"type": "object"
+},
+"tags": {
+"description": "Tags for annotation of a `Build`. These are not docker tags.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"timeout": {
+"description": "Amount of time that this build should be allowed to run, to second granularity. If this amount of time elapses, work on the build will cease and the build status will be `TIMEOUT`. `timeout` starts ticking from `startTime`. Default time is 60 minutes.",
+"format": "google-duration",
+"type": "string"
+},
+"timing": {
+"additionalProperties": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan"
+},
+"description": "Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all artifacts including docker images and non docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included.",
+"readOnly": true,
+"type": "object"
+},
+"warnings": {
+"description": "Output only. Non-fatal problems encountered during the execution of the build.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildWarning"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1BuildApproval": {
+"description": "BuildApproval describes a build's approval configuration, state, and result.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildApproval",
+"properties": {
+"config": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalConfig",
+"description": "Output only. Configuration for manual approval of this build.",
+"readOnly": true
+},
+"result": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ApprovalResult",
+"description": "Output only. Result of manual approval for this Build.",
+"readOnly": true
+},
+"state": {
+"description": "Output only. The state of this build's approval.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"APPROVED",
+"REJECTED",
+"CANCELLED"
+],
+"enumDescriptions": [
+"Default enum type. This should not be used.",
+"Build approval is pending.",
+"Build approval has been approved.",
+"Build approval has been rejected.",
+"Build was cancelled while it was still pending approval."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1BuildFailureInfo": {
+"description": "A fatal problem encountered during the execution of the build.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildFailureInfo",
+"properties": {
+"detail": {
+"description": "Explains the failure issue in more detail using hard-coded text.",
+"type": "string"
+},
+"type": {
+"description": "The name of the failure.",
+"enum": [
+"FAILURE_TYPE_UNSPECIFIED",
+"PUSH_FAILED",
+"PUSH_IMAGE_NOT_FOUND",
+"PUSH_NOT_AUTHORIZED",
+"LOGGING_FAILURE",
+"USER_BUILD_STEP",
+"FETCH_SOURCE_FAILED"
+],
+"enumDescriptions": [
+"Type unspecified",
+"Unable to push the image to the repository.",
+"Final image not found.",
+"Unauthorized push of the final image.",
+"Backend logging failures. Should retry.",
+"A build step has failed.",
+"The source fetching has failed."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptions": {
+"description": "Optional arguments to enable specific features of builds.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptions",
+"properties": {
+"automapSubstitutions": {
+"description": "Option to include built-in and custom substitutions as env variables for all build steps.",
+"type": "boolean"
+},
+"defaultLogsBucketBehavior": {
+"description": "Optional. Option to specify how default logs buckets are setup.",
+"enum": [
+"DEFAULT_LOGS_BUCKET_BEHAVIOR_UNSPECIFIED",
+"REGIONAL_USER_OWNED_BUCKET",
+"LEGACY_BUCKET"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Bucket is located in user-owned project in the same region as the build. The builder service account must have access to create and write to Cloud Storage buckets in the build project.",
+"Bucket is located in a Google-owned project and is not regionalized."
+],
+"type": "string"
+},
+"diskSizeGb": {
+"description": "Requested disk size for the VM that runs the build. Note that this is *NOT* \"disk free\"; some of the space will be used by the operating system and build utilities. Also note that this is the minimum disk size that will be allocated for the build -- the build may run with a larger disk than requested. At present, the maximum disk size is 4000GB; builds that request more than the maximum are rejected with an error.",
+"format": "int64",
+"type": "string"
+},
+"dynamicSubstitutions": {
+"description": "Option to specify whether or not to apply bash style string operations to the substitutions. NOTE: this is always enabled for triggered builds and cannot be overridden in the build configuration file.",
+"type": "boolean"
+},
+"env": {
+"description": "A list of global environment variable definitions that will exist for all build steps in this build. If a variable is defined in both globally and in a build step, the variable will use the build step value. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logStreamingOption": {
+"description": "Option to define build log streaming behavior to Cloud Storage.",
+"enum": [
+"STREAM_DEFAULT",
+"STREAM_ON",
+"STREAM_OFF"
+],
+"enumDescriptions": [
+"Service may automatically determine build log streaming behavior.",
+"Build logs should be streamed to Cloud Storage.",
+"Build logs should not be streamed to Cloud Storage; they will be written when the build is completed."
+],
+"type": "string"
+},
+"logging": {
+"description": "Option to specify the logging mode, which determines if and where build logs are stored.",
+"enum": [
+"LOGGING_UNSPECIFIED",
+"LEGACY",
+"GCS_ONLY",
+"STACKDRIVER_ONLY",
+"CLOUD_LOGGING_ONLY",
+"NONE"
+],
+"enumDeprecated": [
+false,
+false,
+false,
+true,
+false,
+false
+],
+"enumDescriptions": [
+"The service determines the logging mode. The default is `LEGACY`. Do not rely on the default logging behavior as it may change in the future.",
+"Build logs are stored in Cloud Logging and Cloud Storage.",
+"Build logs are stored in Cloud Storage.",
+"This option is the same as CLOUD_LOGGING_ONLY.",
+"Build logs are stored in Cloud Logging. Selecting this option will not allow [logs streaming](https://cloud.google.com/sdk/gcloud/reference/builds/log).",
+"Turn off all logging. No build logs will be captured."
+],
+"type": "string"
+},
+"machineType": {
+"description": "Compute Engine machine type on which to run the build.",
+"enum": [
+"UNSPECIFIED",
+"N1_HIGHCPU_8",
+"N1_HIGHCPU_32",
+"E2_HIGHCPU_8",
+"E2_HIGHCPU_32",
+"E2_MEDIUM"
+],
+"enumDeprecated": [
+false,
+true,
+true,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Standard machine type.",
+"Highcpu machine with 8 CPUs.",
+"Highcpu machine with 32 CPUs.",
+"Highcpu e2 machine with 8 CPUs.",
+"Highcpu e2 machine with 32 CPUs.",
+"E2 machine with 1 CPU."
+],
+"type": "string"
+},
+"pool": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOption",
+"description": "Optional. Specification for execution on a `WorkerPool`. See [running builds in a private pool](https://cloud.google.com/build/docs/private-pools/run-builds-in-private-pool) for more information."
+},
+"requestedVerifyOption": {
+"description": "Requested verifiability options.",
+"enum": [
+"NOT_VERIFIED",
+"VERIFIED"
+],
+"enumDescriptions": [
+"Not a verifiable build (the default).",
+"Build must be verified."
+],
+"type": "string"
+},
+"secretEnv": {
+"description": "A list of global environment variables, which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's `Secret`. These variables will be available to all build steps in this build.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sourceProvenanceHash": {
+"description": "Requested hash for SourceProvenance.",
+"items": {
+"enum": [
+"NONE",
+"SHA256",
+"MD5",
+"SHA512"
+],
+"enumDescriptions": [
+"No hash requested.",
+"Use a sha256 hash.",
+"Use a md5 hash.",
+"Use a sha512 hash."
+],
+"type": "string"
+},
+"type": "array"
+},
+"substitutionOption": {
+"description": "Option to specify behavior when there is an error in the substitution checks. NOTE: this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden in the build configuration file.",
+"enum": [
+"MUST_MATCH",
+"ALLOW_LOOSE"
+],
+"enumDescriptions": [
+"Fails the build if error in substitutions checks, like missing a substitution in the template or in the map.",
+"Do not fail the build if error in substitutions checks."
+],
+"type": "string"
+},
+"volumes": {
+"description": "Global list of volumes to mount for ALL build steps Each volume is created as an empty volume prior to starting the build process. Upon completion of the build, volumes and their contents are discarded. Global volume names and paths cannot conflict with the volumes defined a build step. Using a global volume in a build with only one step is not valid as it is indicative of a build request with an incorrect configuration.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume"
+},
+"type": "array"
+},
+"workerPool": {
+"deprecated": true,
+"description": "This field deprecated; please use `pool.name` instead.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOption": {
+"description": "Details about how a build should be executed on a `WorkerPool`. See [running builds in a private pool](https://cloud.google.com/build/docs/private-pools/run-builds-in-private-pool) for more information.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildOptionsPoolOption",
+"properties": {
+"name": {
+"description": "The `WorkerPool` resource to execute the build on. You must have `cloudbuild.workerpools.use` on the project hosting the WorkerPool. Format projects/{project}/locations/{location}/workerPools/{workerPoolId}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1BuildStep": {
+"description": "A step in the build pipeline.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildStep",
+"properties": {
+"allowExitCodes": {
+"description": "Allow this build step to fail without failing the entire build if and only if the exit code is one of the specified codes. If allow_failure is also specified, this field will take precedence.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"allowFailure": {
+"description": "Allow this build step to fail without failing the entire build. If false, the entire build will fail if this step fails. Otherwise, the build will succeed, but this step will still have a failure status. Error information will be reported in the failure_detail field.",
+"type": "boolean"
+},
+"args": {
+"description": "A list of arguments that will be presented to the step when it is started. If the image used to run the step's container has an entrypoint, the `args` are used as arguments to that entrypoint. If the image does not define an entrypoint, the first element in args is used as the entrypoint, and the remainder will be used as arguments.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"automapSubstitutions": {
+"description": "Option to include built-in and custom substitutions as env variables for this build step. This option will override the global option in BuildOption.",
+"type": "boolean"
+},
+"dir": {
+"description": "Working directory to use when running this step's container. If this value is a relative path, it is relative to the build's working directory. If this value is absolute, it may be outside the build's working directory, in which case the contents of the path may not be persisted across build step executions, unless a `volume` for that path is specified. If the build specifies a `RepoSource` with `dir` and a step with a `dir`, which specifies an absolute path, the `RepoSource` `dir` is ignored for the step's execution.",
+"type": "string"
+},
+"entrypoint": {
+"description": "Entrypoint to be used instead of the build step image's default entrypoint. If unset, the image's default entrypoint is used.",
+"type": "string"
+},
+"env": {
+"description": "A list of environment variable definitions to be used when running a step. The elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"exitCode": {
+"description": "Output only. Return code from running the step.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"id": {
+"description": "Unique identifier for this build step, used in `wait_for` to reference this build step as a dependency.",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the container image that will run this particular build step. If the image is available in the host's Docker daemon's cache, it will be run directly. If not, the host will attempt to pull the image first, using the builder service account's credentials if necessary. The Docker daemon's cache will already have the latest versions of all of the officially supported build steps ([https://github.com/GoogleCloudPlatform/cloud-builders](https://github.com/GoogleCloudPlatform/cloud-builders)). The Docker daemon will also have cached many of the layers for some popular images, like \"ubuntu\", \"debian\", but they will be refreshed at the time you attempt to use them. If you built an image in a previous build step, it will be stored in the host's Docker daemon's cache and is available to use as the name for a later build step.",
+"type": "string"
+},
+"pullTiming": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"description": "Output only. Stores timing information for pulling this build step's builder image only.",
+"readOnly": true
+},
+"script": {
+"description": "A shell script to be executed in the step. When script is provided, the user cannot specify the entrypoint or args.",
+"type": "string"
+},
+"secretEnv": {
+"description": "A list of environment variables which are encrypted using a Cloud Key Management Service crypto key. These values must be specified in the build's `Secret`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"status": {
+"description": "Output only. Status of the build step. At this time, build step status is only updated on build completion; step status is not updated in real-time as the build progresses.",
+"enum": [
+"STATUS_UNKNOWN",
+"PENDING",
+"QUEUED",
+"WORKING",
+"SUCCESS",
+"FAILURE",
+"INTERNAL_ERROR",
+"TIMEOUT",
+"CANCELLED",
+"EXPIRED"
+],
+"enumDescriptions": [
+"Status of the build is unknown.",
+"Build has been created and is pending execution and queuing. It has not been queued.",
+"Build or step is queued; work has not yet begun.",
+"Build or step is being executed.",
+"Build or step finished successfully.",
+"Build or step failed to complete successfully.",
+"Build or step failed due to an internal cause.",
+"Build or step took longer than was allowed.",
+"Build or step was canceled by a user.",
+"Build was enqueued for longer than the value of `queue_ttl`."
+],
+"readOnly": true,
+"type": "string"
+},
+"timeout": {
+"description": "Time limit for executing this build step. If not defined, the step has no time limit and will be allowed to continue to run until either it completes or the build itself times out.",
+"format": "google-duration",
+"type": "string"
+},
+"timing": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"description": "Output only. Stores timing information for executing this build step.",
+"readOnly": true
+},
+"volumes": {
+"description": "List of volumes to mount into the build step. Each volume is created as an empty volume prior to execution of the build step. Upon completion of the build, volumes and their contents are discarded. Using a named volume in only one step is not valid as it is indicative of a build request with an incorrect configuration.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume"
+},
+"type": "array"
+},
+"waitFor": {
+"description": "The ID(s) of the step(s) that this build step depends on. This build step will not start until all the build steps in `wait_for` have completed successfully. If `wait_for` is empty, this build step will start when all previous build steps in the `Build.Steps` list have completed successfully.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1BuildWarning": {
+"description": "A non-fatal problem encountered during the execution of the build.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuildWarning",
+"properties": {
+"priority": {
+"description": "The priority for this warning.",
+"enum": [
+"PRIORITY_UNSPECIFIED",
+"INFO",
+"WARNING",
+"ALERT"
+],
+"enumDescriptions": [
+"Should not be used.",
+"e.g. deprecation warnings and alternative feature highlights.",
+"e.g. automated detection of possible issues with the build.",
+"e.g. alerts that a feature used in the build is pending removal"
+],
+"type": "string"
+},
+"text": {
+"description": "Explanation of the warning generated.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1BuiltImage": {
+"description": "An image built by the pipeline.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuiltImage",
+"properties": {
+"digest": {
+"description": "Docker Registry 2.0 digest.",
+"type": "string"
+},
+"name": {
+"description": "Name used to push the container image to Google Container Registry, as presented to `docker push`.",
+"type": "string"
+},
+"pushTiming": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"description": "Output only. Stores timing information for pushing the specified image.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1ConnectedRepository": {
+"description": "Location of the source in a 2nd-gen Google Cloud Build repository resource.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ConnectedRepository",
+"properties": {
+"dir": {
+"description": "Optional. Directory, relative to the source root, in which to run the build.",
+"type": "string"
+},
+"repository": {
+"description": "Required. Name of the Google Cloud Build repository, formatted as `projects/*/locations/*/connections/*/repositories/*`.",
+"type": "string"
+},
+"revision": {
+"description": "Required. The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1DeveloperConnectConfig": {
+"description": "This config defines the location of a source through Developer Connect.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1DeveloperConnectConfig",
+"properties": {
+"dir": {
+"description": "Required. Directory, relative to the source root, in which to run the build.",
+"type": "string"
+},
+"gitRepositoryLink": {
+"description": "Required. The Developer Connect Git repository link, formatted as `projects/*/locations/*/connections/*/gitRepositoryLink/*`.",
+"type": "string"
+},
+"revision": {
+"description": "Required. The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes": {
+"description": "Container message for hashes of byte content of files, used in SourceProvenance messages to verify integrity of source input to the build.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes",
+"properties": {
+"fileHash": {
+"description": "Collection of file hashes.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1Hash"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1GitConfig": {
+"description": "GitConfig is a configuration for git operations.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1GitConfig",
+"properties": {
+"http": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1GitConfigHttpConfig",
+"description": "Configuration for HTTP related git operations."
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1GitConfigHttpConfig": {
+"description": "HttpConfig is a configuration for HTTP related git operations.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1GitConfigHttpConfig",
+"properties": {
+"proxySecretVersionName": {
+"description": "SecretVersion resource of the HTTP proxy URL. The Service Account used in the build (either the default Service Account or user-specified Service Account) should have `secretmanager.versions.access` permissions on this secret. The proxy URL should be in format `protocol://@]proxyhost[:port]`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1GitSource": {
+"description": "Location of the source in any accessible Git repository.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1GitSource",
+"properties": {
+"dir": {
+"description": "Optional. Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution.",
+"type": "string"
+},
+"revision": {
+"description": "Optional. The revision to fetch from the Git repository such as a branch, a tag, a commit SHA, or any Git ref. Cloud Build uses `git fetch` to fetch the revision from the Git repository; therefore make sure that the string you provide for `revision` is parsable by the command. For information on string values accepted by `git fetch`, see https://git-scm.com/docs/gitrevisions#_specifying_revisions. For information on `git fetch`, see https://git-scm.com/docs/git-fetch.",
+"type": "string"
+},
+"url": {
+"description": "Required. Location of the Git repo to build. This will be used as a `git remote`, see https://git-scm.com/docs/git-remote.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1Hash": {
+"description": "Container message for hash values.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Hash",
+"properties": {
+"type": {
+"description": "The type of hash that was performed.",
+"enum": [
+"NONE",
+"SHA256",
+"MD5",
+"SHA512"
+],
+"enumDescriptions": [
+"No hash requested.",
+"Use a sha256 hash.",
+"Use a md5 hash.",
+"Use a sha512 hash."
+],
+"type": "string"
+},
+"value": {
+"description": "The hash value.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1InlineSecret": {
+"description": "Pairs a set of secret environment variables mapped to encrypted values with the Cloud KMS key to use to decrypt the value.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1InlineSecret",
+"properties": {
+"envMap": {
+"additionalProperties": {
+"format": "byte",
+"type": "string"
+},
+"description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets.",
+"type": "object"
+},
+"kmsKeyName": {
+"description": "Resource name of Cloud KMS crypto key to decrypt the encrypted value. In format: projects/*/locations/*/keyRings/*/cryptoKeys/*",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource": {
+"description": "Location of the source in a Google Cloud Source Repository.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource",
+"properties": {
+"branchName": {
+"description": "Regex matching branches to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax",
+"type": "string"
+},
+"commitSha": {
+"description": "Explicit commit SHA to build.",
+"type": "string"
+},
+"dir": {
+"description": "Optional. Directory, relative to the source root, in which to run the build. This must be a relative path. If a step's `dir` is specified and is an absolute path, this value is ignored for that step's execution.",
+"type": "string"
+},
+"invertRegex": {
+"description": "Optional. Only trigger a build if the revision regex does NOT match the revision regex.",
+"type": "boolean"
+},
+"projectId": {
+"description": "Optional. ID of the project that owns the Cloud Source Repository. If omitted, the project ID requesting the build is assumed.",
+"type": "string"
+},
+"repoName": {
+"description": "Required. Name of the Cloud Source Repository.",
+"type": "string"
+},
+"substitutions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Substitutions to use in a triggered build. Should only be used with RunBuildTrigger",
+"type": "object"
+},
+"tagName": {
+"description": "Regex matching tags to build. The syntax of the regular expressions accepted is the syntax accepted by RE2 and described at https://github.com/google/re2/wiki/Syntax",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1Results": {
+"description": "Artifacts created by the build pipeline.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Results",
+"properties": {
+"artifactManifest": {
+"description": "Path to the artifact manifest for non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage.",
+"type": "string"
+},
+"artifactTiming": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"description": "Time to push all non-container artifacts to Cloud Storage."
+},
+"buildStepImages": {
+"description": "List of build step digests, in the order corresponding to build step indices.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"buildStepOutputs": {
+"description": "List of build step outputs, produced by builder images, in the order corresponding to build step indices. [Cloud Builders](https://cloud.google.com/cloud-build/docs/cloud-builders) can produce this output by writing to `$BUILDER_OUTPUT/output`. Only the first 50KB of data is stored. Note that the `$BUILDER_OUTPUT` variable is read-only and can't be substituted.",
+"items": {
+"format": "byte",
+"type": "string"
+},
+"type": "array"
+},
+"images": {
+"description": "Container images that were built as a part of the build.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1BuiltImage"
+},
+"type": "array"
+},
+"mavenArtifacts": {
+"description": "Maven artifacts uploaded to Artifact Registry at the end of the build.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact"
+},
+"type": "array"
+},
+"npmPackages": {
+"description": "Npm packages uploaded to Artifact Registry at the end of the build.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedNpmPackage"
+},
+"type": "array"
+},
+"numArtifacts": {
+"description": "Number of non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage.",
+"format": "int64",
+"type": "string"
+},
+"pythonPackages": {
+"description": "Python artifacts uploaded to Artifact Registry at the end of the build.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1Secret": {
+"description": "Pairs a set of secret environment variables containing encrypted values with the Cloud KMS key to use to decrypt the value. Note: Use `kmsKeyName` with `available_secrets` instead of using `kmsKeyName` with `secret`. For instructions see: https://cloud.google.com/cloud-build/docs/securing-builds/use-encrypted-credentials.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Secret",
+"properties": {
+"kmsKeyName": {
+"description": "Cloud KMS key name to use to decrypt these envs.",
+"type": "string"
+},
+"secretEnv": {
+"additionalProperties": {
+"format": "byte",
+"type": "string"
+},
+"description": "Map of environment variable name to its encrypted value. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step. Values can be at most 64 KB in size. There can be at most 100 secret values across all of a build's secrets.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1SecretManagerSecret": {
+"description": "Pairs a secret environment variable with a SecretVersion in Secret Manager.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1SecretManagerSecret",
+"properties": {
+"env": {
+"description": "Environment variable name to associate with the secret. Secret environment variables must be unique across all of a build's secrets, and must be used by at least one build step.",
+"type": "string"
+},
+"versionName": {
+"description": "Resource name of the SecretVersion. In format: projects/*/secrets/*/versions/*",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1Secrets": {
+"description": "Secrets and secret environment variables.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Secrets",
+"properties": {
+"inline": {
+"description": "Secrets encrypted with KMS key and the associated secret environment variable.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1InlineSecret"
+},
+"type": "array"
+},
+"secretManager": {
+"description": "Secrets in Secret Manager and associated secret environment variable.",
+"items": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1SecretManagerSecret"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1Source": {
+"description": "Location of the source in a supported storage service.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Source",
+"properties": {
+"connectedRepository": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ConnectedRepository",
+"description": "Optional. If provided, get the source from this 2nd-gen Google Cloud Build repository resource."
+},
+"developerConnectConfig": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1DeveloperConnectConfig",
+"description": "If provided, get the source from this Developer Connect config."
+},
+"gitSource": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1GitSource",
+"description": "If provided, get the source from this Git repository."
+},
+"repoSource": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource",
+"description": "If provided, get the source from this location in a Cloud Source Repository."
+},
+"storageSource": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource",
+"description": "If provided, get the source from this location in Cloud Storage."
+},
+"storageSourceManifest": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest",
+"description": "If provided, get the source from this manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher)."
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1SourceProvenance": {
+"description": "Provenance of the source. Ways to find the original source, or verify that some source was used for this build.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1SourceProvenance",
+"properties": {
+"fileHashes": {
+"additionalProperties": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes"
+},
+"description": "Output only. Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. Note that `FileHashes` will only be populated if `BuildOptions` has requested a `SourceProvenanceHash`. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (`.tar.gz`), the `FileHash` will be for the single path to that file.",
+"readOnly": true,
+"type": "object"
+},
+"resolvedConnectedRepository": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ConnectedRepository",
+"description": "Output only. A copy of the build's `source.connected_repository`, if exists, with any revisions resolved.",
+"readOnly": true
+},
+"resolvedGitSource": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1GitSource",
+"description": "Output only. A copy of the build's `source.git_source`, if exists, with any revisions resolved.",
+"readOnly": true
+},
+"resolvedRepoSource": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource",
+"description": "A copy of the build's `source.repo_source`, if exists, with any revisions resolved."
+},
+"resolvedStorageSource": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource",
+"description": "A copy of the build's `source.storage_source`, if exists, with any generations resolved."
+},
+"resolvedStorageSourceManifest": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest",
+"description": "A copy of the build's `source.storage_source_manifest`, if exists, with any revisions resolved. This feature is in Preview."
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource": {
+"description": "Location of the source in an archive file in Cloud Storage.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSource",
+"properties": {
+"bucket": {
+"description": "Cloud Storage bucket containing the source (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).",
+"type": "string"
+},
+"generation": {
+"description": "Optional. Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.",
+"format": "int64",
+"type": "string"
+},
+"object": {
+"description": "Required. Cloud Storage object containing the source. This object must be a zipped (`.zip`) or gzipped archive file (`.tar.gz`) containing source to build.",
+"type": "string"
+},
+"sourceFetcher": {
+"description": "Optional. Option to specify the tool to fetch the source file for the build.",
+"enum": [
+"SOURCE_FETCHER_UNSPECIFIED",
+"GSUTIL",
+"GCS_FETCHER"
+],
+"enumDescriptions": [
+"Unspecified defaults to GSUTIL.",
+"Use the \"gsutil\" tool to download the source file.",
+"Use the Cloud Storage Fetcher tool to download the source file."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest": {
+"description": "Location of the source manifest in Cloud Storage. This feature is in Preview; see description [here](https://github.com/GoogleCloudPlatform/cloud-builders/tree/master/gcs-fetcher).",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1StorageSourceManifest",
+"properties": {
+"bucket": {
+"description": "Required. Cloud Storage bucket containing the source manifest (see [Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).",
+"type": "string"
+},
+"generation": {
+"description": "Cloud Storage generation for the object. If the generation is omitted, the latest generation will be used.",
+"format": "int64",
+"type": "string"
+},
+"object": {
+"description": "Required. Cloud Storage object containing the source manifest. This object must be a JSON file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan": {
+"description": "Start and end times for a build execution phase.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"properties": {
+"endTime": {
+"description": "End of time span.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "Start of time span.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact": {
+"description": "A Maven artifact uploaded using the MavenArtifact directive.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact",
+"properties": {
+"fileHashes": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes",
+"description": "Hash types and values of the Maven Artifact."
+},
+"pushTiming": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"description": "Output only. Stores timing information for pushing the specified artifact.",
+"readOnly": true
+},
+"uri": {
+"description": "URI of the uploaded artifact.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedNpmPackage": {
+"description": "An npm package uploaded to Artifact Registry using the NpmPackage directive.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedNpmPackage",
+"properties": {
+"fileHashes": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes",
+"description": "Hash types and values of the npm package."
+},
+"pushTiming": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"description": "Output only. Stores timing information for pushing the specified artifact.",
+"readOnly": true
+},
+"uri": {
+"description": "URI of the uploaded npm package.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage": {
+"description": "Artifact uploaded using the PythonPackage directive.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage",
+"properties": {
+"fileHashes": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes",
+"description": "Hash types and values of the Python Artifact."
+},
+"pushTiming": {
+"$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan",
+"description": "Output only. Stores timing information for pushing the specified artifact.",
+"readOnly": true
+},
+"uri": {
+"description": "URI of the uploaded artifact.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContaineranalysisGoogleDevtoolsCloudbuildV1Volume": {
+"description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.",
+"id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume",
+"properties": {
+"name": {
+"description": "Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps.",
+"type": "string"
+},
+"path": {
+"description": "Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Deployable": {
+"description": "An artifact that can be deployed in some runtime.",
+"id": "Deployable",
+"properties": {
+"resourceUri": {
+"description": "Required. Resource URI for the artifact being deployed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Deployment": {
+"description": "The period during which some deployable was active in a runtime.",
+"id": "Deployment",
+"properties": {
+"address": {
+"description": "Address of the runtime element hosting this deployment.",
+"type": "string"
+},
+"config": {
+"description": "Configuration used to create this deployment.",
+"type": "string"
+},
+"deployTime": {
+"description": "Required. Beginning of the lifetime of this deployment.",
+"format": "google-datetime",
+"type": "string"
+},
+"platform": {
+"description": "Platform hosting this deployment.",
+"enum": [
+"PLATFORM_UNSPECIFIED",
+"GKE",
+"FLEX",
+"CUSTOM"
+],
+"enumDescriptions": [
+"Unknown.",
+"Google Container Engine.",
+"Google App Engine: Flexible Environment.",
+"Custom user-defined platform."
+],
+"type": "string"
+},
+"resourceUri": {
+"description": "Output only. Resource URI for the artifact being deployed taken from the deployable field with the same name.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"undeployTime": {
+"description": "End of the lifetime of this deployment.",
+"format": "google-datetime",
+"type": "string"
+},
+"userEmail": {
+"description": "Identity of the user that triggered this deployment.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Derived": {
+"description": "Derived describes the derived image portion (Occurrence) of the DockerImage relationship. This image would be produced from a Dockerfile with FROM .",
+"id": "Derived",
+"properties": {
+"baseResourceUrl": {
+"description": "Output only. This contains the base image URL for the derived image occurrence.",
+"type": "string"
+},
+"distance": {
+"description": "Output only. The number of layers by which this image differs from the associated image basis.",
+"format": "int32",
+"type": "integer"
+},
+"fingerprint": {
+"$ref": "Fingerprint",
+"description": "Required. The fingerprint of the derived image."
+},
+"layerInfo": {
+"description": "This contains layer-specific metadata, if populated it has length \"distance\" and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer.",
+"items": {
+"$ref": "Layer"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Detail": {
+"description": "Identifies all appearances of this vulnerability in the package for a specific distro/location. For example: glibc in cpe:/o:debian:debian_linux:8 for versions 2.1 - 2.2",
+"id": "Detail",
+"properties": {
+"cpeUri": {
+"description": "Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.",
+"type": "string"
+},
+"description": {
+"description": "A vendor-specific description of this note.",
+"type": "string"
+},
+"fixedLocation": {
+"$ref": "VulnerabilityLocation",
+"description": "The fix for this specific package version."
+},
+"isObsolete": {
+"description": "Whether this detail is obsolete. Occurrences are expected not to point to obsolete details.",
+"type": "boolean"
+},
+"maxAffectedVersion": {
+"$ref": "Version",
+"description": "The max version of the package in which the vulnerability exists."
+},
+"minAffectedVersion": {
+"$ref": "Version",
+"description": "The min version of the package in which the vulnerability exists."
+},
+"package": {
+"description": "Required. The name of the package where the vulnerability was found.",
+"type": "string"
+},
+"packageType": {
+"description": "The type of package; whether native or non native(ruby gems, node.js packages etc).",
+"type": "string"
+},
+"severityName": {
+"description": "The severity (eg: distro assigned severity) for this vulnerability.",
+"type": "string"
+},
+"source": {
+"description": "The source from which the information in this Detail was obtained.",
+"type": "string"
+},
+"sourceUpdateTime": {
+"description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.",
+"format": "google-datetime",
+"type": "string"
+},
+"vendor": {
+"description": "The name of the vendor of the product.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Details": {
+"description": "Details of an attestation occurrence.",
+"id": "Details",
+"properties": {
+"attestation": {
+"$ref": "Attestation",
+"description": "Required. Attestation for the resource."
+}
+},
+"type": "object"
+},
+"Digest": {
+"description": "Digest information.",
+"id": "Digest",
+"properties": {
+"algo": {
+"description": "`SHA1`, `SHA512` etc.",
+"type": "string"
+},
+"digestBytes": {
+"description": "Value of the digest.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Discovered": {
+"description": "Provides information about the analysis status of a discovered resource.",
+"id": "Discovered",
+"properties": {
+"analysisCompleted": {
+"$ref": "AnalysisCompleted"
+},
+"analysisError": {
+"description": "Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.",
+"items": {
+"$ref": "Status"
+},
+"type": "array"
+},
+"analysisStatus": {
+"description": "The status of discovery for the resource.",
+"enum": [
+"ANALYSIS_STATUS_UNSPECIFIED",
+"PENDING",
+"SCANNING",
+"FINISHED_SUCCESS",
+"COMPLETE",
+"FINISHED_FAILED",
+"FINISHED_UNSUPPORTED"
+],
+"enumDescriptions": [
+"Unknown.",
+"Resource is known but no action has been taken yet.",
+"Resource is being analyzed.",
+"Analysis has finished successfully.",
+"Analysis has completed.",
+"Analysis has finished unsuccessfully, the analysis itself is in a bad state.",
+"The resource is known not to be supported"
+],
+"type": "string"
+},
+"analysisStatusError": {
+"$ref": "Status",
+"description": "When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage is output only and populated by the API."
+},
+"continuousAnalysis": {
+"description": "Whether the resource is continuously analyzed.",
+"enum": [
+"CONTINUOUS_ANALYSIS_UNSPECIFIED",
+"ACTIVE",
+"INACTIVE"
+],
+"enumDescriptions": [
+"Unknown.",
+"The resource is continuously analyzed.",
+"The resource is ignored for continuous analysis."
+],
+"type": "string"
+},
+"lastAnalysisTime": {
+"description": "The last time continuous analysis was done for this resource. Deprecated, do not use.",
+"format": "google-datetime",
+"type": "string"
+},
+"lastScanTime": {
+"description": "The last time this resource was scanned.",
+"format": "google-datetime",
+"type": "string"
+},
+"sbomStatus": {
+"$ref": "SBOMStatus",
+"description": "The status of an SBOM generation."
+}
+},
+"type": "object"
+},
+"Discovery": {
+"description": "A note that indicates a type of analysis a provider would perform. This note exists in a provider's project. A `Discovery` occurrence is created in a consumer's project at the start of analysis.",
+"id": "Discovery",
+"properties": {
+"analysisKind": {
+"description": "Required. Immutable. The kind of analysis that is handled by this discovery.",
+"enum": [
+"NOTE_KIND_UNSPECIFIED",
+"VULNERABILITY",
+"BUILD",
+"IMAGE",
+"PACKAGE",
+"DEPLOYMENT",
+"DISCOVERY",
+"ATTESTATION",
+"INTOTO",
+"SBOM",
+"SPDX_PACKAGE",
+"SPDX_FILE",
+"SPDX_RELATIONSHIP",
+"VULNERABILITY_ASSESSMENT",
+"SBOM_REFERENCE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The note and occurrence represent a package vulnerability.",
+"The note and occurrence assert build provenance.",
+"This represents an image basis relationship.",
+"This represents a package installed via a package manager.",
+"The note and occurrence track deployment events.",
+"The note and occurrence track the initial discovery status of a resource.",
+"This represents a logical \"role\" that can attest to artifacts.",
+"This represents an in-toto link.",
+"This represents a software bill of materials.",
+"This represents an SPDX Package.",
+"This represents an SPDX File.",
+"This represents an SPDX Relationship.",
+"This represents a Vulnerability Assessment.",
+"This represents an SBOM Reference."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Distribution": {
+"description": "This represents a particular channel of distribution for a given package. E.g., Debian's jessie-backports dpkg mirror.",
+"id": "Distribution",
+"properties": {
+"architecture": {
+"description": "The CPU architecture for which packages in this distribution channel were built.",
+"enum": [
+"ARCHITECTURE_UNSPECIFIED",
+"X86",
+"X64"
+],
+"enumDescriptions": [
+"Unknown architecture.",
+"X86 architecture.",
+"X64 architecture."
+],
+"type": "string"
+},
+"cpeUri": {
+"description": "Required. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.",
+"type": "string"
+},
+"description": {
+"description": "The distribution channel-specific description of this package.",
+"type": "string"
+},
+"latestVersion": {
+"$ref": "Version",
+"description": "The latest available version of this package in this distribution channel."
+},
+"maintainer": {
+"description": "A freeform string denoting the maintainer of this package.",
+"type": "string"
+},
+"url": {
+"description": "The distribution channel-specific homepage for this package.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DocumentNote": {
+"description": "DocumentNote represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
+"id": "DocumentNote",
+"properties": {
+"dataLicence": {
+"description": "Compliance with the SPDX specification includes populating the SPDX fields therein with data related to such fields (\"SPDX-Metadata\")",
+"type": "string"
+},
+"spdxVersion": {
+"description": "Provide a reference number that can be used to understand how to parse and interpret the rest of the file",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DocumentOccurrence": {
+"description": "DocumentOccurrence represents an SPDX Document Creation Information section: https://spdx.github.io/spdx-spec/2-document-creation-information/",
+"id": "DocumentOccurrence",
+"properties": {
+"createTime": {
+"description": "Identify when the SPDX file was originally created. The date is to be specified according to combined date and time in UTC format as specified in ISO 8601 standard",
+"format": "google-datetime",
+"type": "string"
+},
+"creatorComment": {
+"description": "A field for creators of the SPDX file to provide general comments about the creation of the SPDX file or any other relevant comment not included in the other fields",
+"type": "string"
+},
+"creators": {
+"description": "Identify who (or what, in the case of a tool) created the SPDX file. If the SPDX file was created by an individual, indicate the person's name",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"documentComment": {
+"description": "A field for creators of the SPDX file content to provide comments to the consumers of the SPDX document",
+"type": "string"
+},
+"externalDocumentRefs": {
+"description": "Identify any external SPDX documents referenced within this SPDX document",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"id": {
+"description": "Identify the current SPDX document which may be referenced in relationships by other files, packages internally and documents externally",
+"type": "string"
+},
+"licenseListVersion": {
+"description": "A field for creators of the SPDX file to provide the version of the SPDX License List used when the SPDX file was created",
+"type": "string"
+},
+"namespace": {
+"description": "Provide an SPDX document specific namespace as a unique absolute Uniform Resource Identifier (URI) as specified in RFC-3986, with the exception of the \u2018#\u2019 delimiter",
+"type": "string"
+},
+"title": {
+"description": "Identify name of this document as designated by creator",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Envelope": {
+"description": "MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type.",
+"id": "Envelope",
+"properties": {
+"payload": {
+"format": "byte",
+"type": "string"
+},
+"payloadType": {
+"type": "string"
+},
+"signatures": {
+"items": {
+"$ref": "EnvelopeSignature"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"EnvelopeSignature": {
+"id": "EnvelopeSignature",
+"properties": {
+"keyid": {
+"type": "string"
+},
+"sig": {
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Environment": {
+"description": "Defines an object for the environment field in in-toto links. The suggested fields are \"variables\", \"filesystem\", and \"workdir\".",
+"id": "Environment",
+"properties": {
+"customValues": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"ExportSBOMRequest": {
+"description": "The request to a call of ExportSBOM",
+"id": "ExportSBOMRequest",
+"properties": {},
+"type": "object"
+},
+"ExportSBOMResponse": {
+"description": "The response from a call to ExportSBOM",
+"id": "ExportSBOMResponse",
+"properties": {
+"discoveryOccurrenceId": {
+"description": "The name of the discovery occurrence in the form \"projects/{project_id}/occurrences/{OCCURRENCE_ID} It can be used to track the progression of the SBOM export.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExternalRef": {
+"description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package",
+"id": "ExternalRef",
+"properties": {
+"category": {
+"description": "An External Reference allows a Package to reference an external source of additional information, metadata, enumerations, asset identifiers, or downloadable content believed to be relevant to the Package",
+"enum": [
+"CATEGORY_UNSPECIFIED",
+"SECURITY",
+"PACKAGE_MANAGER",
+"PERSISTENT_ID",
+"OTHER"
+],
+"enumDescriptions": [
+"Unspecified",
+"Security (e.g. cpe22Type, cpe23Type)",
+"Package Manager (e.g. maven-central, npm, nuget, bower, purl)",
+"Persistent-Id (e.g. swh)",
+"Other"
+],
+"type": "string"
+},
+"comment": {
+"description": "Human-readable information about the purpose and target of the reference",
+"type": "string"
+},
+"locator": {
+"description": "The unique string with no spaces necessary to access the package-specific information, metadata, or content within the target location",
+"type": "string"
+},
+"type": {
+"description": "Type of category (e.g. 'npm' for the PACKAGE_MANAGER category)",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FileHashes": {
+"description": "Container message for hashes of byte content of files, used in source messages to verify integrity of source input to the build.",
+"id": "FileHashes",
+"properties": {
+"fileHash": {
+"description": "Required. Collection of file hashes.",
+"items": {
+"$ref": "Hash"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"FileNote": {
+"description": "FileNote represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
+"id": "FileNote",
+"properties": {
+"checksum": {
+"description": "Provide a unique identifier to match analysis information on each specific file in a package",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"fileType": {
+"description": "This field provides information about the type of file identified",
+"enum": [
+"FILE_TYPE_UNSPECIFIED",
+"SOURCE",
+"BINARY",
+"ARCHIVE",
+"APPLICATION",
+"AUDIO",
+"IMAGE",
+"TEXT",
+"VIDEO",
+"DOCUMENTATION",
+"SPDX",
+"OTHER"
+],
+"enumDescriptions": [
+"Unspecified",
+"The file is human readable source code (.c, .html, etc.)",
+"The file is a compiled object, target image or binary executable (.o, .a, etc.)",
+"The file represents an archive (.tar, .jar, etc.)",
+"The file is associated with a specific application type (MIME type of application/*)",
+"The file is associated with an audio file (MIME type of audio/* , e.g. .mp3)",
+"The file is associated with an picture image file (MIME type of image/*, e.g., .jpg, .gif)",
+"The file is human readable text file (MIME type of text/*)",
+"The file is associated with a video file type (MIME type of video/*)",
+"The file serves as documentation",
+"The file is an SPDX document",
+"The file doesn't fit into the above categories (generated artifacts, data files, etc.)"
+],
+"type": "string"
+},
+"title": {
+"description": "Identify the full path and filename that corresponds to the file information in this section",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FileOccurrence": {
+"description": "FileOccurrence represents an SPDX File Information section: https://spdx.github.io/spdx-spec/4-file-information/",
+"id": "FileOccurrence",
+"properties": {
+"attributions": {
+"description": "This field provides a place for the SPDX data creator to record, at the file level, acknowledgements that may be needed to be communicated in some contexts",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"comment": {
+"description": "This field provides a place for the SPDX file creator to record any general comments about the file",
+"type": "string"
+},
+"contributors": {
+"description": "This field provides a place for the SPDX file creator to record file contributors",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"copyright": {
+"description": "Identify the copyright holder of the file, as well as any dates present",
+"type": "string"
+},
+"filesLicenseInfo": {
+"description": "This field contains the license information actually found in the file, if any",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"id": {
+"description": "Uniquely identify any element in an SPDX document which may be referenced by other elements",
+"type": "string"
+},
+"licenseConcluded": {
+"$ref": "License",
+"description": "This field contains the license the SPDX file creator has concluded as governing the file or alternative values if the governing license cannot be determined"
+},
+"notice": {
+"description": "This field provides a place for the SPDX file creator to record license notices or other such related notices found in the file",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Fingerprint": {
+"description": "A set of properties that uniquely identify a given Docker image.",
+"id": "Fingerprint",
+"properties": {
+"v1Name": {
+"description": "Required. The layer ID of the final layer in the Docker image's v1 representation.",
+"type": "string"
+},
+"v2Blob": {
+"description": "Required. The ordered list of v2 blobs that represent a given image.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"v2Name": {
+"description": "Output only. The name of the image's v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + \" \" + v2_name[N+1]) Only the name of the final blob is kept.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FixableTotalByDigest": {
+"description": "Per resource and severity counts of fixable and total vulnerabilities.",
+"id": "FixableTotalByDigest",
+"properties": {
+"fixableCount": {
+"description": "The number of fixable vulnerabilities associated with this resource.",
+"format": "int64",
+"type": "string"
+},
+"resource": {
+"$ref": "Resource",
+"description": "The affected resource."
+},
+"severity": {
+"description": "The severity for this count. SEVERITY_UNSPECIFIED indicates total across all severities.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unknown.",
+"Minimal severity.",
+"Low severity.",
+"Medium severity.",
+"High severity.",
+"Critical severity."
+],
+"type": "string"
+},
+"totalCount": {
+"description": "The total number of vulnerabilities associated with this resource.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GeneratePackagesSummaryRequest": {
+"description": "GeneratePackagesSummaryRequest is the request body for the GeneratePackagesSummary API method. It just takes a single name argument, referring to the resource.",
+"id": "GeneratePackagesSummaryRequest",
+"properties": {},
+"type": "object"
+},
+"GenericSignedAttestation": {
+"description": "An attestation wrapper that uses the Grafeas `Signature` message. This attestation must define the `serialized_payload` that the `signatures` verify and any metadata necessary to interpret that plaintext. The signatures should always be over the `serialized_payload` bytestring.",
+"id": "GenericSignedAttestation",
+"properties": {
+"contentType": {
+"description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).",
+"enum": [
+"CONTENT_TYPE_UNSPECIFIED",
+"SIMPLE_SIGNING_JSON"
+],
+"enumDescriptions": [
+"`ContentType` is not set.",
+"Atomic format attestation signature. See https://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7/docs/atomic-signature.md The payload extracted in `plaintext` is a JSON blob conforming to the linked schema."
+],
+"type": "string"
+},
+"serializedPayload": {
+"description": "The serialized payload that is verified by one or more `signatures`. The encoding and semantic meaning of this payload must match what is set in `content_type`.",
+"format": "byte",
+"type": "string"
+},
+"signatures": {
+"description": "One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto for more details on signature structure and verification.",
+"items": {
+"$ref": "Signature"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GerritSourceContext": {
+"description": "A SourceContext referring to a Gerrit project.",
+"id": "GerritSourceContext",
+"properties": {
+"aliasContext": {
+"$ref": "AliasContext",
+"description": "An alias, which may be a branch or tag."
+},
+"gerritProject": {
+"description": "The full project name within the host. Projects may be nested, so \"project/subproject\" is a valid project name. The \"repo name\" is the hostURI/project.",
+"type": "string"
+},
+"hostUri": {
+"description": "The URI of a running Gerrit instance.",
+"type": "string"
+},
+"revisionId": {
+"description": "A revision (commit) ID.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetIamPolicyRequest": {
+"description": "Request message for `GetIamPolicy` method.",
+"id": "GetIamPolicyRequest",
+"properties": {
+"options": {
+"$ref": "GetPolicyOptions",
+"description": "OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`."
+}
+},
+"type": "object"
+},
+"GetPolicyOptions": {
+"description": "Encapsulates settings provided to GetIamPolicy.",
+"id": "GetPolicyOptions",
+"properties": {
+"requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GitSourceContext": {
+"description": "A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).",
+"id": "GitSourceContext",
+"properties": {
+"revisionId": {
+"description": "Git commit hash.",
+"type": "string"
+},
+"url": {
+"description": "Git repository URL.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata": {
+"description": "Metadata for all operations used and required for all operations that created by Container Analysis Providers",
+"id": "GoogleDevtoolsContaineranalysisV1alpha1OperationMetadata",
+"properties": {
+"createTime": {
+"description": "Output only. The time this operation was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time that this operation was marked completed or failed.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1BuildDetails": {
+"description": "Details of a build occurrence.",
+"id": "GrafeasV1beta1BuildDetails",
+"properties": {
+"inTotoSlsaProvenanceV1": {
+"$ref": "InTotoSlsaProvenanceV1"
+},
+"provenance": {
+"$ref": "BuildProvenance",
+"description": "Required. The actual provenance for the build."
+},
+"provenanceBytes": {
+"description": "Serialized JSON representation of the provenance, used in generating the build signature in the corresponding build note. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1DeploymentDetails": {
+"description": "Details of a deployment occurrence.",
+"id": "GrafeasV1beta1DeploymentDetails",
+"properties": {
+"deployment": {
+"$ref": "Deployment",
+"description": "Required. Deployment history for the resource."
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1DiscoveryDetails": {
+"description": "Details of a discovery occurrence.",
+"id": "GrafeasV1beta1DiscoveryDetails",
+"properties": {
+"discovered": {
+"$ref": "Discovered",
+"description": "Required. Analysis status for the discovered resource."
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1ImageDetails": {
+"description": "Details of an image occurrence.",
+"id": "GrafeasV1beta1ImageDetails",
+"properties": {
+"derivedImage": {
+"$ref": "Derived",
+"description": "Required. Immutable. The child image derived from the base image."
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1IntotoArtifact": {
+"id": "GrafeasV1beta1IntotoArtifact",
+"properties": {
+"hashes": {
+"$ref": "ArtifactHashes"
+},
+"resourceUri": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1IntotoDetails": {
+"description": "This corresponds to a signed in-toto link - it is made up of one or more signatures and the in-toto link itself. This is used for occurrences of a Grafeas in-toto note.",
+"id": "GrafeasV1beta1IntotoDetails",
+"properties": {
+"signatures": {
+"items": {
+"$ref": "GrafeasV1beta1IntotoSignature"
+},
+"type": "array"
+},
+"signed": {
+"$ref": "Link"
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1IntotoSignature": {
+"description": "A signature object consists of the KeyID used and the signature itself.",
+"id": "GrafeasV1beta1IntotoSignature",
+"properties": {
+"keyid": {
+"type": "string"
+},
+"sig": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1PackageDetails": {
+"description": "Details of a package occurrence.",
+"id": "GrafeasV1beta1PackageDetails",
+"properties": {
+"installation": {
+"$ref": "Installation",
+"description": "Required. Where the package was installed."
+}
+},
+"type": "object"
+},
+"GrafeasV1beta1VulnerabilityDetails": {
+"description": "Details of a vulnerability Occurrence.",
+"id": "GrafeasV1beta1VulnerabilityDetails",
+"properties": {
+"cvssScore": {
+"description": "Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0-10 where 0 indicates low severity and 10 indicates high severity.",
+"format": "float",
+"type": "number"
+},
+"cvssV2": {
+"$ref": "CVSS",
+"description": "The cvss v2 score for the vulnerability."
+},
+"cvssV3": {
+"$ref": "CVSS",
+"description": "The cvss v3 score for the vulnerability."
+},
+"cvssVersion": {
+"description": "Output only. CVSS version used to populate cvss_score and severity.",
+"enum": [
+"CVSS_VERSION_UNSPECIFIED",
+"CVSS_VERSION_2",
+"CVSS_VERSION_3"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"effectiveSeverity": {
+"description": "The distro assigned severity for this vulnerability when it is available, and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unknown.",
+"Minimal severity.",
+"Low severity.",
+"Medium severity.",
+"High severity.",
+"Critical severity."
+],
+"type": "string"
+},
+"extraDetails": {
+"description": "Occurrence-specific extra details about the vulnerability.",
+"type": "string"
+},
+"longDescription": {
+"description": "Output only. A detailed description of this vulnerability.",
+"type": "string"
+},
+"packageIssue": {
+"description": "Required. The set of affected locations and their fixes (if available) within the associated resource.",
+"items": {
+"$ref": "PackageIssue"
+},
+"type": "array"
+},
+"relatedUrls": {
+"description": "Output only. URLs related to this vulnerability.",
+"items": {
+"$ref": "RelatedUrl"
+},
+"type": "array"
+},
+"severity": {
+"description": "Output only. The note provider assigned Severity of the vulnerability.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unknown.",
+"Minimal severity.",
+"Low severity.",
+"Medium severity.",
+"High severity.",
+"Critical severity."
+],
+"type": "string"
+},
+"shortDescription": {
+"description": "Output only. A one sentence description of this vulnerability.",
+"type": "string"
+},
+"type": {
+"description": "The type of package; whether native or non native(ruby gems, node.js packages etc)",
+"type": "string"
+},
+"vexAssessment": {
+"$ref": "VexAssessment"
+}
+},
+"type": "object"
+},
+"Hash": {
+"description": "Container message for hash values.",
+"id": "Hash",
+"properties": {
+"type": {
+"description": "Required. The type of hash that was performed.",
+"enum": [
+"HASH_TYPE_UNSPECIFIED",
+"SHA256",
+"GO_MODULE_H1",
+"SHA512"
+],
+"enumDescriptions": [
+"Unknown.",
+"A SHA-256 hash.",
+"Dirhash of a Go module's source code which is then hex-encoded. See b/244466565 and https://github.com/in-toto/attestation/pull/108.",
+"A SHA-512 hash."
+],
+"type": "string"
+},
+"value": {
+"description": "Required. The hash value.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Hint": {
+"description": "This submessage provides human-readable hints about the purpose of the authority. Because the name of a note acts as its resource reference, it is important to disambiguate the canonical name of the Note (which might be a UUID for security purposes) from \"readable\" names more suitable for debug output. Note that these hints should not be used to look up authorities in security sensitive contexts, such as when looking up attestations to verify.",
+"id": "Hint",
+"properties": {
+"humanReadableName": {
+"description": "Required. The human readable name of this attestation authority, for example \"qa\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"InToto": {
+"description": "This contains the fields corresponding to the definition of a software supply chain step in an in-toto layout. This information goes into a Grafeas note.",
+"id": "InToto",
+"properties": {
+"expectedCommand": {
+"description": "This field contains the expected command used to perform the step.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"expectedMaterials": {
+"description": "The following fields contain in-toto artifact rules identifying the artifacts that enter this supply chain step, and exit the supply chain step, i.e. materials and products of the step.",
+"items": {
+"$ref": "ArtifactRule"
+},
+"type": "array"
+},
+"expectedProducts": {
+"items": {
+"$ref": "ArtifactRule"
+},
+"type": "array"
+},
+"signingKeys": {
+"description": "This field contains the public keys that can be used to verify the signatures on the step metadata.",
+"items": {
+"$ref": "SigningKey"
+},
+"type": "array"
+},
+"stepName": {
+"description": "This field identifies the name of the step in the supply chain.",
+"type": "string"
+},
+"threshold": {
+"description": "This field contains a value that indicates the minimum number of keys that need to be used to sign the step's in-toto link.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"InTotoSlsaProvenanceV1": {
+"id": "InTotoSlsaProvenanceV1",
+"properties": {
+"_type": {
+"description": "InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement",
+"type": "string"
+},
+"predicate": {
+"$ref": "SlsaProvenanceV1"
+},
+"predicateType": {
+"type": "string"
+},
+"subject": {
+"items": {
+"$ref": "Subject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Installation": {
+"description": "This represents how a particular software package may be installed on a system.",
+"id": "Installation",
+"properties": {
+"architecture": {
+"description": "Output only. The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.",
+"enum": [
+"ARCHITECTURE_UNSPECIFIED",
+"X86",
+"X64"
+],
+"enumDescriptions": [
+"Unknown architecture.",
+"X86 architecture.",
+"X64 architecture."
+],
+"readOnly": true,
+"type": "string"
+},
+"cpeUri": {
+"description": "Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.",
+"readOnly": true,
+"type": "string"
+},
+"license": {
+"$ref": "License",
+"description": "Licenses that have been declared by the authors of the package."
+},
+"location": {
+"description": "All of the places within the filesystem versions of this package have been found.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"name": {
+"description": "Required. Output only. The name of the installed package.",
+"readOnly": true,
+"type": "string"
+},
+"packageType": {
+"description": "Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).",
+"readOnly": true,
+"type": "string"
+},
+"version": {
+"$ref": "Version",
+"description": "Output only. The version of the package.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"Justification": {
+"description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED.",
+"id": "Justification",
+"properties": {
+"details": {
+"description": "Additional details on why this justification was chosen.",
+"type": "string"
+},
+"justificationType": {
+"description": "The justification type for this vulnerability.",
+"enum": [
+"JUSTIFICATION_TYPE_UNSPECIFIED",
+"COMPONENT_NOT_PRESENT",
+"VULNERABLE_CODE_NOT_PRESENT",
+"VULNERABLE_CODE_NOT_IN_EXECUTE_PATH",
+"VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY",
+"INLINE_MITIGATIONS_ALREADY_EXIST"
+],
+"enumDescriptions": [
+"JUSTIFICATION_TYPE_UNSPECIFIED.",
+"The vulnerable component is not present in the product.",
+"The vulnerable code is not present. Typically this case occurs when source code is configured or built in a way that excludes the vulnerable code.",
+"The vulnerable code can not be executed. Typically this case occurs when the product includes the vulnerable code but does not call or use the vulnerable code.",
+"The vulnerable code cannot be controlled by an attacker to exploit the vulnerability.",
+"The product includes built-in protections or features that prevent exploitation of the vulnerability. These built-in protections cannot be subverted by the attacker and cannot be configured or disabled by the user. These mitigations completely prevent exploitation based on known attack vectors."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"KnowledgeBase": {
+"id": "KnowledgeBase",
+"properties": {
+"name": {
+"description": "The KB name (generally of the form KB[0-9]+ i.e. KB123456).",
+"type": "string"
+},
+"url": {
+"description": "A link to the KB in the Windows update catalog - https://www.catalog.update.microsoft.com/",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Layer": {
+"description": "Layer holds metadata specific to a layer of a Docker image.",
+"id": "Layer",
+"properties": {
+"arguments": {
+"description": "The recovered arguments to the Dockerfile directive.",
+"type": "string"
+},
+"directive": {
+"description": "Required. The recovered Dockerfile directive used to construct this layer.",
+"enum": [
+"DIRECTIVE_UNSPECIFIED",
+"MAINTAINER",
+"RUN",
+"CMD",
+"LABEL",
+"EXPOSE",
+"ENV",
+"ADD",
+"COPY",
+"ENTRYPOINT",
+"VOLUME",
+"USER",
+"WORKDIR",
+"ARG",
+"ONBUILD",
+"STOPSIGNAL",
+"HEALTHCHECK",
+"SHELL"
+],
+"enumDescriptions": [
+"Default value for unsupported/missing directive.",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/",
+"https://docs.docker.com/engine/reference/builder/"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"License": {
+"description": "License information.",
+"id": "License",
+"properties": {
+"comments": {
+"description": "Comments",
+"type": "string"
+},
+"expression": {
+"description": "Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: \"LGPL-2.1-only OR MIT\", \"LGPL-2.1-only AND MIT\", \"GPL-2.0-or-later WITH Bison-exception-2.2\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LicensesSummary": {
+"description": "Per license count",
+"id": "LicensesSummary",
+"properties": {
+"count": {
+"description": "The number of fixable vulnerabilities associated with this resource.",
+"format": "int64",
+"type": "string"
+},
+"license": {
+"description": "The license of the package. Note that the format of this value is not guaranteed. It may be nil, an empty string, a boolean value (A | B), a differently formed boolean value (A OR B), etc...",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Link": {
+"description": "This corresponds to an in-toto link.",
+"id": "Link",
+"properties": {
+"byproducts": {
+"$ref": "ByProducts",
+"description": "ByProducts are data generated as part of a software supply chain step, but are not the actual result of the step."
+},
+"command": {
+"description": "This field contains the full command executed for the step. This can also be empty if links are generated for operations that aren't directly mapped to a specific command. Each term in the command is an independent string in the list. An example of a command in the in-toto metadata field is: \"command\": [\"git\", \"clone\", \"https://github.com/in-toto/demo-project.git\"]",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"environment": {
+"$ref": "Environment",
+"description": "This is a field that can be used to capture information about the environment. It is suggested for this field to contain information that details environment variables, filesystem information, and the present working directory. The recommended structure of this field is: \"environment\": { \"custom_values\": { \"variables\": \"\", \"filesystem\": \"\", \"workdir\": \"\", \"\": \"...\" } }"
+},
+"materials": {
+"description": "Materials are the supply chain artifacts that go into the step and are used for the operation performed. The key of the map is the path of the artifact and the structure contains the recorded hash information. An example is: \"materials\": [ { \"resource_uri\": \"foo/bar\", \"hashes\": { \"sha256\": \"ebebf...\", : } } ]",
+"items": {
+"$ref": "GrafeasV1beta1IntotoArtifact"
+},
+"type": "array"
+},
+"products": {
+"description": "Products are the supply chain artifacts generated as a result of the step. The structure is identical to that of materials.",
+"items": {
+"$ref": "GrafeasV1beta1IntotoArtifact"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListNoteOccurrencesResponse": {
+"description": "Response for listing occurrences for a note.",
+"id": "ListNoteOccurrencesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to provide to skip to a particular spot in the list.",
+"type": "string"
+},
+"occurrences": {
+"description": "The occurrences attached to the specified note.",
+"items": {
+"$ref": "Occurrence"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListNotesResponse": {
+"description": "Response for listing notes.",
+"id": "ListNotesResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next pagination token in the list response. It should be used as `page_token` for the following request. An empty value means no more results.",
+"type": "string"
+},
+"notes": {
+"description": "The notes requested.",
+"items": {
+"$ref": "Note"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListOccurrencesResponse": {
+"description": "Response for listing occurrences.",
+"id": "ListOccurrencesResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next pagination token in the list response. It should be used as `page_token` for the following request. An empty value means no more results.",
+"type": "string"
+},
+"occurrences": {
+"description": "The occurrences requested.",
+"items": {
+"$ref": "Occurrence"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "An occurrence of a particular package installation found within a system's filesystem. E.g., glibc was found in `/var/lib/dpkg/status`.",
+"id": "Location",
+"properties": {
+"cpeUri": {
+"description": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package.",
+"type": "string"
+},
+"path": {
+"description": "The path from which we gathered that this package/version is installed.",
+"type": "string"
+},
+"version": {
+"$ref": "Version",
+"description": "Deprecated. The version installed at this location."
+}
+},
+"type": "object"
+},
+"Note": {
+"description": "A type of analysis that can be done for a resource.",
+"id": "Note",
+"properties": {
+"attestationAuthority": {
+"$ref": "Authority",
+"description": "A note describing an attestation role."
+},
+"baseImage": {
+"$ref": "Basis",
+"description": "A note describing a base image."
+},
+"build": {
+"$ref": "Build",
+"description": "A note describing build provenance for a verifiable build."
+},
+"createTime": {
+"description": "Output only. The time this note was created. This field can be used as a filter in list requests.",
+"format": "google-datetime",
+"type": "string"
+},
+"deployable": {
+"$ref": "Deployable",
+"description": "A note describing something that can be deployed."
+},
+"discovery": {
+"$ref": "Discovery",
+"description": "A note describing the initial analysis of a resource."
+},
+"expirationTime": {
+"description": "Time of expiration for this note. Empty if note does not expire.",
+"format": "google-datetime",
+"type": "string"
+},
+"intoto": {
+"$ref": "InToto",
+"description": "A note describing an in-toto link."
+},
+"kind": {
+"description": "Output only. The type of analysis. This field can be used as a filter in list requests.",
+"enum": [
+"NOTE_KIND_UNSPECIFIED",
+"VULNERABILITY",
+"BUILD",
+"IMAGE",
+"PACKAGE",
+"DEPLOYMENT",
+"DISCOVERY",
+"ATTESTATION",
+"INTOTO",
+"SBOM",
+"SPDX_PACKAGE",
+"SPDX_FILE",
+"SPDX_RELATIONSHIP",
+"VULNERABILITY_ASSESSMENT",
+"SBOM_REFERENCE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The note and occurrence represent a package vulnerability.",
+"The note and occurrence assert build provenance.",
+"This represents an image basis relationship.",
+"This represents a package installed via a package manager.",
+"The note and occurrence track deployment events.",
+"The note and occurrence track the initial discovery status of a resource.",
+"This represents a logical \"role\" that can attest to artifacts.",
+"This represents an in-toto link.",
+"This represents a software bill of materials.",
+"This represents an SPDX Package.",
+"This represents an SPDX File.",
+"This represents an SPDX Relationship.",
+"This represents a Vulnerability Assessment.",
+"This represents an SBOM Reference."
+],
+"type": "string"
+},
+"longDescription": {
+"description": "A detailed description of this note.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The name of the note in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`.",
+"type": "string"
+},
+"package": {
+"$ref": "Package",
+"description": "A note describing a package hosted by various package managers."
+},
+"relatedNoteNames": {
+"description": "Other notes related to this note.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"relatedUrl": {
+"description": "URLs associated with this note.",
+"items": {
+"$ref": "RelatedUrl"
+},
+"type": "array"
+},
+"sbom": {
+"$ref": "DocumentNote",
+"description": "A note describing a software bill of materials."
+},
+"sbomReference": {
+"$ref": "SBOMReferenceNote",
+"description": "A note describing an SBOM reference."
+},
+"shortDescription": {
+"description": "A one sentence description of this note.",
+"type": "string"
+},
+"spdxFile": {
+"$ref": "FileNote",
+"description": "A note describing an SPDX File."
+},
+"spdxPackage": {
+"$ref": "PackageInfoNote",
+"description": "A note describing an SPDX Package."
+},
+"spdxRelationship": {
+"$ref": "RelationshipNote",
+"description": "A note describing an SPDX File."
+},
+"updateTime": {
+"description": "Output only. The time this note was last updated. This field can be used as a filter in list requests.",
+"format": "google-datetime",
+"type": "string"
+},
+"vulnerability": {
+"$ref": "Vulnerability",
+"description": "A note describing a package vulnerability."
+},
+"vulnerabilityAssessment": {
+"$ref": "VulnerabilityAssessmentNote",
+"description": "A note describing a vulnerability assessment."
+}
+},
+"type": "object"
+},
+"Occurrence": {
+"description": "An instance of an analysis type that has been found on a resource.",
+"id": "Occurrence",
+"properties": {
+"attestation": {
+"$ref": "Details",
+"description": "Describes an attestation of an artifact."
+},
+"build": {
+"$ref": "GrafeasV1beta1BuildDetails",
+"description": "Describes a verifiable build."
+},
+"createTime": {
+"description": "Output only. The time this occurrence was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"deployment": {
+"$ref": "GrafeasV1beta1DeploymentDetails",
+"description": "Describes the deployment of an artifact on a runtime."
+},
+"derivedImage": {
+"$ref": "GrafeasV1beta1ImageDetails",
+"description": "Describes how this resource derives from the basis in the associated note."
+},
+"discovered": {
+"$ref": "GrafeasV1beta1DiscoveryDetails",
+"description": "Describes when a resource was discovered."
+},
+"envelope": {
+"$ref": "Envelope",
+"description": "https://github.com/secure-systems-lab/dsse"
+},
+"installation": {
+"$ref": "GrafeasV1beta1PackageDetails",
+"description": "Describes the installation of a package on the linked resource."
+},
+"intoto": {
+"$ref": "GrafeasV1beta1IntotoDetails",
+"description": "Describes a specific in-toto link."
+},
+"kind": {
+"description": "Output only. This explicitly denotes which of the occurrence details are specified. This field can be used as a filter in list requests.",
+"enum": [
+"NOTE_KIND_UNSPECIFIED",
+"VULNERABILITY",
+"BUILD",
+"IMAGE",
+"PACKAGE",
+"DEPLOYMENT",
+"DISCOVERY",
+"ATTESTATION",
+"INTOTO",
+"SBOM",
+"SPDX_PACKAGE",
+"SPDX_FILE",
+"SPDX_RELATIONSHIP",
+"VULNERABILITY_ASSESSMENT",
+"SBOM_REFERENCE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The note and occurrence represent a package vulnerability.",
+"The note and occurrence assert build provenance.",
+"This represents an image basis relationship.",
+"This represents a package installed via a package manager.",
+"The note and occurrence track deployment events.",
+"The note and occurrence track the initial discovery status of a resource.",
+"This represents a logical \"role\" that can attest to artifacts.",
+"This represents an in-toto link.",
+"This represents a software bill of materials.",
+"This represents an SPDX Package.",
+"This represents an SPDX File.",
+"This represents an SPDX Relationship.",
+"This represents a Vulnerability Assessment.",
+"This represents an SBOM Reference."
+],
+"type": "string"
+},
+"name": {
+"description": "Output only. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"type": "string"
+},
+"noteName": {
+"description": "Required. Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests.",
+"type": "string"
+},
+"remediation": {
+"description": "A description of actions that can be taken to remedy the note.",
+"type": "string"
+},
+"resource": {
+"$ref": "Resource",
+"description": "Required. Immutable. The resource for which the occurrence applies."
+},
+"sbom": {
+"$ref": "DocumentOccurrence",
+"description": "Describes a specific software bill of materials document."
+},
+"sbomReference": {
+"$ref": "SBOMReferenceOccurrence",
+"description": "Describes a specific SBOM reference occurrences."
+},
+"spdxFile": {
+"$ref": "FileOccurrence",
+"description": "Describes a specific SPDX File."
+},
+"spdxPackage": {
+"$ref": "PackageInfoOccurrence",
+"description": "Describes a specific SPDX Package."
+},
+"spdxRelationship": {
+"$ref": "RelationshipOccurrence",
+"description": "Describes a specific SPDX Relationship."
+},
+"updateTime": {
+"description": "Output only. The time this occurrence was last updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"vulnerability": {
+"$ref": "GrafeasV1beta1VulnerabilityDetails",
+"description": "Describes a security vulnerability."
+}
+},
+"type": "object"
+},
+"Package": {
+"description": "Package represents a particular package version.",
+"id": "Package",
+"properties": {
+"architecture": {
+"description": "The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.",
+"enum": [
+"ARCHITECTURE_UNSPECIFIED",
+"X86",
+"X64"
+],
+"enumDescriptions": [
+"Unknown architecture.",
+"X86 architecture.",
+"X64 architecture."
+],
+"type": "string"
+},
+"cpeUri": {
+"description": "The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.",
+"type": "string"
+},
+"description": {
+"description": "The description of this package.",
+"type": "string"
+},
+"digest": {
+"description": "Hash value, typically a file digest, that allows unique identification a specific package.",
+"items": {
+"$ref": "Digest"
+},
+"type": "array"
+},
+"distribution": {
+"description": "The various channels by which a package is distributed.",
+"items": {
+"$ref": "Distribution"
+},
+"type": "array"
+},
+"license": {
+"$ref": "License",
+"description": "Licenses that have been declared by the authors of the package."
+},
+"maintainer": {
+"description": "A freeform text denoting the maintainer of this package.",
+"type": "string"
+},
+"name": {
+"description": "Required. Immutable. The name of the package.",
+"type": "string"
+},
+"packageType": {
+"description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).",
+"type": "string"
+},
+"url": {
+"description": "The homepage for this package.",
+"type": "string"
+},
+"version": {
+"$ref": "Version",
+"description": "The version of the package."
+}
+},
+"type": "object"
+},
+"PackageInfoNote": {
+"description": "PackageInfoNote represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
+"id": "PackageInfoNote",
+"properties": {
+"analyzed": {
+"description": "Indicates whether the file content of this package has been available for or subjected to analysis when creating the SPDX document",
+"type": "boolean"
+},
+"attribution": {
+"description": "A place for the SPDX data creator to record, at the package level, acknowledgements that may be needed to be communicated in some contexts",
+"type": "string"
+},
+"checksum": {
+"description": "Provide an independently reproducible mechanism that permits unique identification of a specific package that correlates to the data in this SPDX file",
+"type": "string"
+},
+"copyright": {
+"description": "Identify the copyright holders of the package, as well as any dates present",
+"type": "string"
+},
+"detailedDescription": {
+"description": "A more detailed description of the package",
+"type": "string"
+},
+"downloadLocation": {
+"description": "This section identifies the download Universal Resource Locator (URL), or a specific location within a version control system (VCS) for the package at the time that the SPDX file was created",
+"type": "string"
+},
+"externalRefs": {
+"description": "ExternalRef",
+"items": {
+"$ref": "ExternalRef"
+},
+"type": "array"
+},
+"filesLicenseInfo": {
+"description": "Contain the license the SPDX file creator has concluded as governing the This field is to contain a list of all licenses found in the package. The relationship between licenses (i.e., conjunctive, disjunctive) is not specified in this field \u2013 it is simply a listing of all licenses found",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"homePage": {
+"description": "Provide a place for the SPDX file creator to record a web site that serves as the package's home page",
+"type": "string"
+},
+"licenseDeclared": {
+"$ref": "License",
+"description": "List the licenses that have been declared by the authors of the package"
+},
+"originator": {
+"description": "If the package identified in the SPDX file originated from a different person or organization than identified as Package Supplier, this field identifies from where or whom the package originally came",
+"type": "string"
+},
+"packageType": {
+"description": "The type of package: OS, MAVEN, GO, GO_STDLIB, etc.",
+"type": "string"
+},
+"summaryDescription": {
+"description": "A short description of the package",
+"type": "string"
+},
+"supplier": {
+"description": "Identify the actual distribution source for the package/directory identified in the SPDX file",
+"type": "string"
+},
+"title": {
+"description": "Identify the full name of the package as given by the Package Originator",
+"type": "string"
+},
+"verificationCode": {
+"description": "This field provides an independently reproducible mechanism identifying specific contents of a package based on the actual files (except the SPDX file itself, if it is included in the package) that make up each package and that correlates to the data in this SPDX file",
+"type": "string"
+},
+"version": {
+"description": "Identify the version of the package",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PackageInfoOccurrence": {
+"description": "PackageInfoOccurrence represents an SPDX Package Information section: https://spdx.github.io/spdx-spec/3-package-information/",
+"id": "PackageInfoOccurrence",
+"properties": {
+"comment": {
+"description": "A place for the SPDX file creator to record any general comments about the package being described",
+"type": "string"
+},
+"filename": {
+"description": "Provide the actual file name of the package, or path of the directory being treated as a package",
+"type": "string"
+},
+"homePage": {
+"description": "Output only. Provide a place for the SPDX file creator to record a web site that serves as the package's home page",
+"readOnly": true,
+"type": "string"
+},
+"id": {
+"description": "Uniquely identify any element in an SPDX document which may be referenced by other elements",
+"type": "string"
+},
+"licenseConcluded": {
+"$ref": "License",
+"description": "package or alternative values, if the governing license cannot be determined"
+},
+"packageType": {
+"description": "Output only. The type of package: OS, MAVEN, GO, GO_STDLIB, etc.",
+"readOnly": true,
+"type": "string"
+},
+"sourceInfo": {
+"description": "Provide a place for the SPDX file creator to record any relevant background information or additional comments about the origin of the package",
+"type": "string"
+},
+"summaryDescription": {
+"description": "Output only. A short description of the package",
+"readOnly": true,
+"type": "string"
+},
+"title": {
+"description": "Output only. Identify the full name of the package as given by the Package Originator",
+"readOnly": true,
+"type": "string"
+},
+"version": {
+"description": "Output only. Identify the version of the package",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PackageIssue": {
+"description": "This message wraps a location affected by a vulnerability and its associated fix (if one is available).",
+"id": "PackageIssue",
+"properties": {
+"affectedLocation": {
+"$ref": "VulnerabilityLocation",
+"description": "Required. The location of the vulnerability."
+},
+"effectiveSeverity": {
+"description": "Output only. The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when it is not available.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unknown.",
+"Minimal severity.",
+"Low severity.",
+"Medium severity.",
+"High severity.",
+"Critical severity."
+],
+"readOnly": true,
+"type": "string"
+},
+"fixedLocation": {
+"$ref": "VulnerabilityLocation",
+"description": "The location of the available fix for vulnerability."
+},
+"packageType": {
+"description": "The type of package (e.g. OS, MAVEN, GO).",
+"type": "string"
+},
+"severityName": {
+"description": "Deprecated, use Details.effective_severity instead The severity (e.g., distro assigned severity) for this vulnerability.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PackagesSummaryResponse": {
+"description": "A summary of the packages found within the given resource.",
+"id": "PackagesSummaryResponse",
+"properties": {
+"licensesSummary": {
+"description": "A listing by license name of each of the licenses and their counts.",
+"items": {
+"$ref": "LicensesSummary"
+},
+"type": "array"
+},
+"resourceUrl": {
+"description": "The unique URL of the image or the container for which this summary applies.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PgpSignedAttestation": {
+"description": "An attestation wrapper with a PGP-compatible signature. This message only supports `ATTACHED` signatures, where the payload that is signed is included alongside the signature itself in the same file.",
+"id": "PgpSignedAttestation",
+"properties": {
+"contentType": {
+"description": "Type (for example schema) of the attestation payload that was signed. The verifier must ensure that the provided type is one that the verifier supports, and that the attestation payload is a valid instantiation of that type (for example by validating a JSON schema).",
+"enum": [
+"CONTENT_TYPE_UNSPECIFIED",
+"SIMPLE_SIGNING_JSON"
+],
+"enumDescriptions": [
+"`ContentType` is not set.",
+"Atomic format attestation signature. See https://github.com/containers/image/blob/8a5d2f82a6e3263290c8e0276c3e0f64e77723e7/docs/atomic-signature.md The payload extracted from `signature` is a JSON blob conforming to the linked schema."
+],
+"type": "string"
+},
+"pgpKeyId": {
+"description": "The cryptographic fingerprint of the key used to generate the signature, as output by, e.g. `gpg --list-keys`. This should be the version 4, full 160-bit fingerprint, expressed as a 40 character hexadecimal string. See https://tools.ietf.org/html/rfc4880#section-12.2 for details. Implementations may choose to acknowledge \"LONG\", \"SHORT\", or other abbreviated key IDs, but only the full fingerprint is guaranteed to work. In gpg, the full fingerprint can be retrieved from the `fpr` field returned when calling --list-keys with --with-colons. For example: ``` gpg --with-colons --with-fingerprint --force-v4-certs \\ --list-keys attester@example.com tru::1:1513631572:0:3:1:5 pub:...... fpr:::::::::24FF6481B76AC91E66A00AC657A93A81EF3AE6FB: ``` Above, the fingerprint is `24FF6481B76AC91E66A00AC657A93A81EF3AE6FB`.",
+"type": "string"
+},
+"signature": {
+"description": "Required. The raw content of the signature, as output by GNU Privacy Guard (GPG) or equivalent. Since this message only supports attached signatures, the payload that was signed must be attached. While the signature format supported is dependent on the verification implementation, currently only ASCII-armored (`--armor` to gpg), non-clearsigned (`--sign` rather than `--clearsign` to gpg) are supported. Concretely, `gpg --sign --armor --output=signature.gpg payload.json` will create the signature content expected in this field in `signature.gpg` for the `payload.json` attestation payload.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Product": {
+"description": "Product contains information about a product and how to uniquely identify it.",
+"id": "Product",
+"properties": {
+"genericUri": {
+"description": "Contains a URI which is vendor-specific. Example: The artifact repository URL of an image.",
+"type": "string"
+},
+"id": {
+"description": "Token that identifies a product so that it can be referred to from other parts in the document. There is no predefined format as long as it uniquely identifies a group in the context of the current document.",
+"type": "string"
+},
+"name": {
+"description": "Name of the product.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProjectRepoId": {
+"description": "Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project.",
+"id": "ProjectRepoId",
+"properties": {
+"projectId": {
+"description": "The ID of the project.",
+"type": "string"
+},
+"repoName": {
+"description": "The name of the repo. Leave empty for the default repo.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProvenanceBuilder": {
+"id": "ProvenanceBuilder",
+"properties": {
+"builderDependencies": {
+"items": {
+"$ref": "ResourceDescriptor"
+},
+"type": "array"
+},
+"id": {
+"type": "string"
+},
+"version": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"Publisher": {
+"description": "Publisher contains information about the publisher of this Note.",
+"id": "Publisher",
+"properties": {
+"issuingAuthority": {
+"description": "Provides information about the authority of the issuing party to release the document, in particular, the party's constituency and responsibilities or other obligations.",
+"type": "string"
+},
+"name": {
+"description": "Name of the publisher. Examples: 'Google', 'Google Cloud Platform'.",
+"type": "string"
+},
+"publisherNamespace": {
+"description": "The context or namespace. Contains a URL which is under control of the issuing party and can be used as a globally unique identifier for that issuing party. Example: https://csaf.io",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RelatedUrl": {
+"description": "Metadata for any related URL information.",
+"id": "RelatedUrl",
+"properties": {
+"label": {
+"description": "Label to describe usage of the URL.",
+"type": "string"
+},
+"url": {
+"description": "Specific URL associated with the resource.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RelationshipNote": {
+"description": "RelationshipNote represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
+"id": "RelationshipNote",
+"properties": {
+"type": {
+"description": "The type of relationship between the source and target SPDX elements",
+"enum": [
+"RELATIONSHIP_TYPE_UNSPECIFIED",
+"DESCRIBES",
+"DESCRIBED_BY",
+"CONTAINS",
+"CONTAINED_BY",
+"DEPENDS_ON",
+"DEPENDENCY_OF",
+"DEPENDENCY_MANIFEST_OF",
+"BUILD_DEPENDENCY_OF",
+"DEV_DEPENDENCY_OF",
+"OPTIONAL_DEPENDENCY_OF",
+"PROVIDED_DEPENDENCY_OF",
+"TEST_DEPENDENCY_OF",
+"RUNTIME_DEPENDENCY_OF",
+"EXAMPLE_OF",
+"GENERATES",
+"GENERATED_FROM",
+"ANCESTOR_OF",
+"DESCENDANT_OF",
+"VARIANT_OF",
+"DISTRIBUTION_ARTIFACT",
+"PATCH_FOR",
+"PATCH_APPLIED",
+"COPY_OF",
+"FILE_ADDED",
+"FILE_DELETED",
+"FILE_MODIFIED",
+"EXPANDED_FROM_ARCHIVE",
+"DYNAMIC_LINK",
+"STATIC_LINK",
+"DATA_FILE_OF",
+"TEST_CASE_OF",
+"BUILD_TOOL_OF",
+"DEV_TOOL_OF",
+"TEST_OF",
+"TEST_TOOL_OF",
+"DOCUMENTATION_OF",
+"OPTIONAL_COMPONENT_OF",
+"METAFILE_OF",
+"PACKAGE_OF",
+"AMENDS",
+"PREREQUISITE_FOR",
+"HAS_PREREQUISITE",
+"OTHER"
+],
+"enumDescriptions": [
+"Unspecified",
+"Is to be used when SPDXRef-DOCUMENT describes SPDXRef-A",
+"Is to be used when SPDXRef-A is described by SPDXREF-Document",
+"Is to be used when SPDXRef-A contains SPDXRef-B",
+"Is to be used when SPDXRef-A is contained by SPDXRef-B",
+"Is to be used when SPDXRef-A depends on SPDXRef-B",
+"Is to be used when SPDXRef-A is dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a manifest file that lists a set of dependencies for SPDXRef-B",
+"Is to be used when SPDXRef-A is a build dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a development dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is an optional dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a to be provided dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a test dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a dependency required for the execution of SPDXRef-B",
+"Is to be used when SPDXRef-A is an example of SPDXRef-B",
+"Is to be used when SPDXRef-A generates SPDXRef-B",
+"Is to be used when SPDXRef-A was generated from SPDXRef-B",
+"Is to be used when SPDXRef-A is an ancestor (same lineage but pre-dates) SPDXRef-B",
+"Is to be used when SPDXRef-A is a descendant of (same lineage but postdates) SPDXRef-B",
+"Is to be used when SPDXRef-A is a variant of (same lineage but not clear which came first) SPDXRef-B",
+"Is to be used when distributing SPDXRef-A requires that SPDXRef-B also be distributed",
+"Is to be used when SPDXRef-A is a patch file for (to be applied to) SPDXRef-B",
+"Is to be used when SPDXRef-A is a patch file that has been applied to SPDXRef-B",
+"Is to be used when SPDXRef-A is an exact copy of SPDXRef-B",
+"Is to be used when SPDXRef-A is a file that was added to SPDXRef-B",
+"Is to be used when SPDXRef-A is a file that was deleted from SPDXRef-B",
+"Is to be used when SPDXRef-A is a file that was modified from SPDXRef-B",
+"Is to be used when SPDXRef-A is expanded from the archive SPDXRef-B",
+"Is to be used when SPDXRef-A dynamically links to SPDXRef-B",
+"Is to be used when SPDXRef-A statically links to SPDXRef-B",
+"Is to be used when SPDXRef-A is a data file used in SPDXRef-B",
+"Is to be used when SPDXRef-A is a test case used in testing SPDXRef-B",
+"Is to be used when SPDXRef-A is used to build SPDXRef-B",
+"Is to be used when SPDXRef-A is used as a development tool for SPDXRef-B",
+"Is to be used when SPDXRef-A is used for testing SPDXRef-B",
+"Is to be used when SPDXRef-A is used as a test tool for SPDXRef-B",
+"Is to be used when SPDXRef-A provides documentation of SPDXRef-B",
+"Is to be used when SPDXRef-A is an optional component of SPDXRef-B",
+"Is to be used when SPDXRef-A is a metafile of SPDXRef-B",
+"Is to be used when SPDXRef-A is used as a package as part of SPDXRef-B",
+"Is to be used when (current) SPDXRef-DOCUMENT amends the SPDX information in SPDXRef-B",
+"Is to be used when SPDXRef-A is a prerequisite for SPDXRef-B",
+"Is to be used when SPDXRef-A has as a prerequisite SPDXRef-B",
+"Is to be used for a relationship which has not been defined in the formal SPDX specification. A description of the relationship should be included in the Relationship comments field"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"RelationshipOccurrence": {
+"description": "RelationshipOccurrence represents an SPDX Relationship section: https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/",
+"id": "RelationshipOccurrence",
+"properties": {
+"comment": {
+"description": "A place for the SPDX file creator to record any general comments about the relationship",
+"type": "string"
+},
+"source": {
+"description": "Also referred to as SPDXRef-A The source SPDX element (file, package, etc)",
+"type": "string"
+},
+"target": {
+"description": "Also referred to as SPDXRef-B The target SPDC element (file, package, etc) In cases where there are \"known unknowns\", the use of the keyword NOASSERTION can be used The keywords NONE can be used to indicate that an SPDX element (package/file/snippet) has no other elements connected by some relationship to it",
+"type": "string"
+},
+"type": {
+"description": "Output only. The type of relationship between the source and target SPDX elements",
+"enum": [
+"RELATIONSHIP_TYPE_UNSPECIFIED",
+"DESCRIBES",
+"DESCRIBED_BY",
+"CONTAINS",
+"CONTAINED_BY",
+"DEPENDS_ON",
+"DEPENDENCY_OF",
+"DEPENDENCY_MANIFEST_OF",
+"BUILD_DEPENDENCY_OF",
+"DEV_DEPENDENCY_OF",
+"OPTIONAL_DEPENDENCY_OF",
+"PROVIDED_DEPENDENCY_OF",
+"TEST_DEPENDENCY_OF",
+"RUNTIME_DEPENDENCY_OF",
+"EXAMPLE_OF",
+"GENERATES",
+"GENERATED_FROM",
+"ANCESTOR_OF",
+"DESCENDANT_OF",
+"VARIANT_OF",
+"DISTRIBUTION_ARTIFACT",
+"PATCH_FOR",
+"PATCH_APPLIED",
+"COPY_OF",
+"FILE_ADDED",
+"FILE_DELETED",
+"FILE_MODIFIED",
+"EXPANDED_FROM_ARCHIVE",
+"DYNAMIC_LINK",
+"STATIC_LINK",
+"DATA_FILE_OF",
+"TEST_CASE_OF",
+"BUILD_TOOL_OF",
+"DEV_TOOL_OF",
+"TEST_OF",
+"TEST_TOOL_OF",
+"DOCUMENTATION_OF",
+"OPTIONAL_COMPONENT_OF",
+"METAFILE_OF",
+"PACKAGE_OF",
+"AMENDS",
+"PREREQUISITE_FOR",
+"HAS_PREREQUISITE",
+"OTHER"
+],
+"enumDescriptions": [
+"Unspecified",
+"Is to be used when SPDXRef-DOCUMENT describes SPDXRef-A",
+"Is to be used when SPDXRef-A is described by SPDXREF-Document",
+"Is to be used when SPDXRef-A contains SPDXRef-B",
+"Is to be used when SPDXRef-A is contained by SPDXRef-B",
+"Is to be used when SPDXRef-A depends on SPDXRef-B",
+"Is to be used when SPDXRef-A is dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a manifest file that lists a set of dependencies for SPDXRef-B",
+"Is to be used when SPDXRef-A is a build dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a development dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is an optional dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a to be provided dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a test dependency of SPDXRef-B",
+"Is to be used when SPDXRef-A is a dependency required for the execution of SPDXRef-B",
+"Is to be used when SPDXRef-A is an example of SPDXRef-B",
+"Is to be used when SPDXRef-A generates SPDXRef-B",
+"Is to be used when SPDXRef-A was generated from SPDXRef-B",
+"Is to be used when SPDXRef-A is an ancestor (same lineage but pre-dates) SPDXRef-B",
+"Is to be used when SPDXRef-A is a descendant of (same lineage but postdates) SPDXRef-B",
+"Is to be used when SPDXRef-A is a variant of (same lineage but not clear which came first) SPDXRef-B",
+"Is to be used when distributing SPDXRef-A requires that SPDXRef-B also be distributed",
+"Is to be used when SPDXRef-A is a patch file for (to be applied to) SPDXRef-B",
+"Is to be used when SPDXRef-A is a patch file that has been applied to SPDXRef-B",
+"Is to be used when SPDXRef-A is an exact copy of SPDXRef-B",
+"Is to be used when SPDXRef-A is a file that was added to SPDXRef-B",
+"Is to be used when SPDXRef-A is a file that was deleted from SPDXRef-B",
+"Is to be used when SPDXRef-A is a file that was modified from SPDXRef-B",
+"Is to be used when SPDXRef-A is expanded from the archive SPDXRef-B",
+"Is to be used when SPDXRef-A dynamically links to SPDXRef-B",
+"Is to be used when SPDXRef-A statically links to SPDXRef-B",
+"Is to be used when SPDXRef-A is a data file used in SPDXRef-B",
+"Is to be used when SPDXRef-A is a test case used in testing SPDXRef-B",
+"Is to be used when SPDXRef-A is used to build SPDXRef-B",
+"Is to be used when SPDXRef-A is used as a development tool for SPDXRef-B",
+"Is to be used when SPDXRef-A is used for testing SPDXRef-B",
+"Is to be used when SPDXRef-A is used as a test tool for SPDXRef-B",
+"Is to be used when SPDXRef-A provides documentation of SPDXRef-B",
+"Is to be used when SPDXRef-A is an optional component of SPDXRef-B",
+"Is to be used when SPDXRef-A is a metafile of SPDXRef-B",
+"Is to be used when SPDXRef-A is used as a package as part of SPDXRef-B",
+"Is to be used when (current) SPDXRef-DOCUMENT amends the SPDX information in SPDXRef-B",
+"Is to be used when SPDXRef-A is a prerequisite for SPDXRef-B",
+"Is to be used when SPDXRef-A has as a prerequisite SPDXRef-B",
+"Is to be used for a relationship which has not been defined in the formal SPDX specification. A description of the relationship should be included in the Relationship comments field"
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Remediation": {
+"description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
+"id": "Remediation",
+"properties": {
+"details": {
+"description": "Contains a comprehensive human-readable discussion of the remediation.",
+"type": "string"
+},
+"remediationType": {
+"description": "The type of remediation that can be applied.",
+"enum": [
+"REMEDIATION_TYPE_UNSPECIFIED",
+"MITIGATION",
+"NO_FIX_PLANNED",
+"NONE_AVAILABLE",
+"VENDOR_FIX",
+"WORKAROUND"
+],
+"enumDescriptions": [
+"No remediation type specified.",
+"A MITIGATION is available.",
+"No fix is planned.",
+"Not available.",
+"A vendor fix is available.",
+"A workaround is available."
+],
+"type": "string"
+},
+"remediationUri": {
+"$ref": "RelatedUrl",
+"description": "Contains the URL where to obtain the remediation."
+}
+},
+"type": "object"
+},
+"RepoId": {
+"description": "A unique identifier for a Cloud Repo.",
+"id": "RepoId",
+"properties": {
+"projectRepoId": {
+"$ref": "ProjectRepoId",
+"description": "A combination of a project ID and a repo name."
+},
+"uid": {
+"description": "A server-assigned, globally unique identifier.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Resource": {
+"description": "An entity that can have metadata. For example, a Docker image.",
+"id": "Resource",
+"properties": {
+"contentHash": {
+"$ref": "Hash",
+"deprecated": true,
+"description": "Deprecated, do not use. Use uri instead. The hash of the resource content. For example, the Docker digest."
+},
+"name": {
+"deprecated": true,
+"description": "Deprecated, do not use. Use uri instead. The name of the resource. For example, the name of a Docker image - \"Debian\".",
+"type": "string"
+},
+"uri": {
+"description": "Required. The unique URI of the resource. For example, `https://gcr.io/project/image@sha256:foo` for a Docker image.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResourceDescriptor": {
+"id": "ResourceDescriptor",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "any"
+},
+"type": "object"
+},
+"content": {
+"format": "byte",
+"type": "string"
+},
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+},
+"downloadLocation": {
+"type": "string"
+},
+"mediaType": {
+"type": "string"
+},
+"name": {
+"type": "string"
+},
+"uri": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"RunDetails": {
+"id": "RunDetails",
+"properties": {
+"builder": {
+"$ref": "ProvenanceBuilder"
+},
+"byproducts": {
+"items": {
+"$ref": "ResourceDescriptor"
+},
+"type": "array"
+},
+"metadata": {
+"$ref": "BuildMetadata"
+}
+},
+"type": "object"
+},
+"SBOMReferenceNote": {
+"description": "The note representing an SBOM reference.",
+"id": "SBOMReferenceNote",
+"properties": {
+"format": {
+"description": "The format that SBOM takes. E.g. may be spdx, cyclonedx, etc...",
+"type": "string"
+},
+"version": {
+"description": "The version of the format that the SBOM takes. E.g. if the format is spdx, the version may be 2.3.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SBOMReferenceOccurrence": {
+"description": "The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details.",
+"id": "SBOMReferenceOccurrence",
+"properties": {
+"payload": {
+"$ref": "SbomReferenceIntotoPayload",
+"description": "The actual payload that contains the SBOM reference data."
+},
+"payloadType": {
+"description": "The kind of payload that SbomReferenceIntotoPayload takes. Since it's in the intoto format, this value is expected to be 'application/vnd.in-toto+json'.",
+"type": "string"
+},
+"signatures": {
+"description": "The signatures over the payload.",
+"items": {
+"$ref": "EnvelopeSignature"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SBOMStatus": {
+"description": "The status of an SBOM generation.",
+"id": "SBOMStatus",
+"properties": {
+"error": {
+"description": "If there was an error generating an SBOM, this will indicate what that error was.",
+"type": "string"
+},
+"sbomState": {
+"description": "The progress of the SBOM generation.",
+"enum": [
+"SBOM_STATE_UNSPECIFIED",
+"PENDING",
+"COMPLETE"
+],
+"enumDescriptions": [
+"Default unknown state.",
+"SBOM scanning is pending.",
+"SBOM scanning has completed."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"SbomReferenceIntotoPayload": {
+"description": "The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details.",
+"id": "SbomReferenceIntotoPayload",
+"properties": {
+"_type": {
+"description": "Identifier for the schema of the Statement.",
+"type": "string"
+},
+"predicate": {
+"$ref": "SbomReferenceIntotoPredicate",
+"description": "Additional parameters of the Predicate. Includes the actual data about the SBOM."
+},
+"predicateType": {
+"description": "URI identifying the type of the Predicate.",
+"type": "string"
+},
+"subject": {
+"description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact.",
+"items": {
+"$ref": "Subject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SbomReferenceIntotoPredicate": {
+"description": "A predicate which describes the SBOM being referenced.",
+"id": "SbomReferenceIntotoPredicate",
+"properties": {
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map of algorithm to digest of the contents of the SBOM.",
+"type": "object"
+},
+"location": {
+"description": "The location of the SBOM.",
+"type": "string"
+},
+"mimeType": {
+"description": "The mime type of the SBOM.",
+"type": "string"
+},
+"referrerId": {
+"description": "The person or system referring this predicate to the consumer.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+}
+},
+"type": "object"
+},
+"Signature": {
+"description": "Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular, verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with respect to the payload. The `signature` contents SHOULD NOT be \"attached\" (where the payload is included with the serialized `signature` bytes). Verifiers MUST ignore any \"attached\" payload and only verify signatures with respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature, or the canonical serialization of the proto message that holds this signature).",
+"id": "Signature",
+"properties": {
+"publicKeyId": {
+"description": "The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public key fingerprint: * \"openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA\" See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization): * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\" * \"nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5\"",
+"type": "string"
+},
+"signature": {
+"description": "The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be unambiguously provided with the Signature during verification. A wrapper message might provide the payload explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously computed to derive the payload.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SigningKey": {
+"description": "This defines the format used to record keys used in the software supply chain. An in-toto link is attested using one or more keys defined in the in-toto layout. An example of this is: { \"key_id\": \"776a00e29f3559e0141b3b096f696abc6cfb0c657ab40f441132b345b0...\", \"key_type\": \"rsa\", \"public_key_value\": \"-----BEGIN PUBLIC KEY-----\\nMIIBojANBgkqhkiG9w0B...\", \"key_scheme\": \"rsassa-pss-sha256\" } The format for in-toto's key definition can be found in section 4.2 of the in-toto specification.",
+"id": "SigningKey",
+"properties": {
+"keyId": {
+"description": "key_id is an identifier for the signing key.",
+"type": "string"
+},
+"keyScheme": {
+"description": "This field contains the corresponding signature scheme. Eg: \"rsassa-pss-sha256\".",
+"type": "string"
+},
+"keyType": {
+"description": "This field identifies the specific signing method. Eg: \"rsa\", \"ed25519\", and \"ecdsa\".",
+"type": "string"
+},
+"publicKeyValue": {
+"description": "This field contains the actual public key.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SlsaProvenanceV1": {
+"description": "Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.",
+"id": "SlsaProvenanceV1",
+"properties": {
+"buildDefinition": {
+"$ref": "BuildDefinition"
+},
+"runDetails": {
+"$ref": "RunDetails"
+}
+},
+"type": "object"
+},
+"Source": {
+"description": "Source describes the location of the source used for the build.",
+"id": "Source",
+"properties": {
+"additionalContexts": {
+"description": "If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field.",
+"items": {
+"$ref": "SourceContext"
+},
+"type": "array"
+},
+"artifactStorageSourceUri": {
+"description": "If provided, the input binary artifacts for the build came from this location.",
+"type": "string"
+},
+"context": {
+"$ref": "SourceContext",
+"description": "If provided, the source code used for the build came from this location."
+},
+"fileHashes": {
+"additionalProperties": {
+"$ref": "FileHashes"
+},
+"description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"SourceContext": {
+"description": "A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.",
+"id": "SourceContext",
+"properties": {
+"cloudRepo": {
+"$ref": "CloudRepoSourceContext",
+"description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
+},
+"gerrit": {
+"$ref": "GerritSourceContext",
+"description": "A SourceContext referring to a Gerrit project."
+},
+"git": {
+"$ref": "GitSourceContext",
+"description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels with user defined metadata.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Subject": {
+"description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact.",
+"id": "Subject",
+"properties": {
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "`\"\": \"\"` Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet",
+"type": "object"
+},
+"name": {
+"description": "Identifier to distinguish this artifact from others within the subject.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TimeSpan": {
+"description": "Start and end times for a build execution phase. Next ID: 3",
+"id": "TimeSpan",
+"properties": {
+"endTime": {
+"description": "End of time span.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "Start of time span.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Version": {
+"description": "Version contains structured information about the version of a package.",
+"id": "Version",
+"properties": {
+"epoch": {
+"description": "Used to correct mistakes in the version numbering scheme.",
+"format": "int32",
+"type": "integer"
+},
+"inclusive": {
+"description": "Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.",
+"type": "boolean"
+},
+"kind": {
+"description": "Required. Distinguishes between sentinel MIN/MAX versions and normal versions.",
+"enum": [
+"VERSION_KIND_UNSPECIFIED",
+"NORMAL",
+"MINIMUM",
+"MAXIMUM"
+],
+"enumDescriptions": [
+"Unknown.",
+"A standard package version.",
+"A special version representing negative infinity.",
+"A special version representing positive infinity."
+],
+"type": "string"
+},
+"name": {
+"description": "Required only when version kind is NORMAL. The main part of the version name.",
+"type": "string"
+},
+"revision": {
+"description": "The iteration of the package build from the above version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VexAssessment": {
+"description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability.",
+"id": "VexAssessment",
+"properties": {
+"cve": {
+"deprecated": true,
+"description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
+"type": "string"
+},
+"impacts": {
+"description": "Contains information about the impact of this vulnerability, this will change with time.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"justification": {
+"$ref": "Justification",
+"description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
+},
+"noteName": {
+"description": "The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`.",
+"type": "string"
+},
+"relatedUris": {
+"description": "Holds a list of references associated with this vulnerability item and assessment.",
+"items": {
+"$ref": "RelatedUrl"
+},
+"type": "array"
+},
+"remediations": {
+"description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
+"items": {
+"$ref": "Remediation"
+},
+"type": "array"
+},
+"state": {
+"description": "Provides the state of this Vulnerability assessment.",
+"enum": [
+"STATE_UNSPECIFIED",
+"AFFECTED",
+"NOT_AFFECTED",
+"FIXED",
+"UNDER_INVESTIGATION"
+],
+"enumDescriptions": [
+"No state is specified.",
+"This product is known to be affected by this vulnerability.",
+"This product is known to be not affected by this vulnerability.",
+"This product contains a fix for this vulnerability.",
+"It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation."
+],
+"type": "string"
+},
+"vulnerabilityId": {
+"description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Volume": {
+"description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution. Next ID: 3",
+"id": "Volume",
+"properties": {
+"name": {
+"description": "Name of the volume to mount. Volume names must be unique per build step and must be valid names for Docker volumes. Each named volume must be used by at least two build steps.",
+"type": "string"
+},
+"path": {
+"description": "Path at which to mount the volume. Paths must be absolute and cannot conflict with other volume paths on the same build step or with certain reserved volume paths.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Vulnerability": {
+"description": "Vulnerability provides metadata about a security vulnerability in a Note.",
+"id": "Vulnerability",
+"properties": {
+"cvssScore": {
+"description": "The CVSS score for this vulnerability.",
+"format": "float",
+"type": "number"
+},
+"cvssV2": {
+"$ref": "CVSS",
+"description": "The full description of the CVSS for version 2."
+},
+"cvssV3": {
+"$ref": "CVSSv3",
+"description": "The full description of the CVSS for version 3."
+},
+"cvssVersion": {
+"description": "CVSS version used to populate cvss_score and severity.",
+"enum": [
+"CVSS_VERSION_UNSPECIFIED",
+"CVSS_VERSION_2",
+"CVSS_VERSION_3"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"cwe": {
+"description": "A list of CWE for this vulnerability. For details, see: https://cwe.mitre.org/index.html",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"details": {
+"description": "All information about the package to specifically identify this vulnerability. One entry per (version range and cpe_uri) the package vulnerability has manifested in.",
+"items": {
+"$ref": "Detail"
+},
+"type": "array"
+},
+"severity": {
+"description": "Note provider assigned impact of the vulnerability.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unknown.",
+"Minimal severity.",
+"Low severity.",
+"Medium severity.",
+"High severity.",
+"Critical severity."
+],
+"type": "string"
+},
+"sourceUpdateTime": {
+"description": "The time this information was last changed at the source. This is an upstream timestamp from the underlying information source - e.g. Ubuntu security tracker.",
+"format": "google-datetime",
+"type": "string"
+},
+"windowsDetails": {
+"description": "Windows details get their own format because the information format and model don't match a normal detail. Specifically Windows updates are done as patches, thus Windows vulnerabilities really are a missing package, rather than a package being at an incorrect version.",
+"items": {
+"$ref": "WindowsDetail"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"VulnerabilityAssessmentNote": {
+"description": "A single VulnerabilityAssessmentNote represents one particular product's vulnerability assessment for one CVE.",
+"id": "VulnerabilityAssessmentNote",
+"properties": {
+"assessment": {
+"$ref": "Assessment",
+"description": "Represents a vulnerability assessment for the product."
+},
+"languageCode": {
+"description": "Identifies the language used by this document, corresponding to IETF BCP 47 / RFC 5646.",
+"type": "string"
+},
+"longDescription": {
+"description": "A detailed description of this Vex.",
+"type": "string"
+},
+"product": {
+"$ref": "Product",
+"description": "The product affected by this vex."
+},
+"publisher": {
+"$ref": "Publisher",
+"description": "Publisher details of this Note."
+},
+"shortDescription": {
+"description": "A one sentence description of this Vex.",
+"type": "string"
+},
+"title": {
+"description": "The title of the note. E.g. `Vex-Debian-11.4`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VulnerabilityLocation": {
+"description": "The location of the vulnerability.",
+"id": "VulnerabilityLocation",
+"properties": {
+"cpeUri": {
+"description": "Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) format. Examples include distro or storage location for vulnerable jar.",
+"type": "string"
+},
+"package": {
+"description": "Required. The package being described.",
+"type": "string"
+},
+"version": {
+"$ref": "Version",
+"description": "Required. The version of the package being described."
+}
+},
+"type": "object"
+},
+"VulnerabilityOccurrencesSummary": {
+"description": "A summary of how many vulnerability occurrences there are per resource and severity type.",
+"id": "VulnerabilityOccurrencesSummary",
+"properties": {
+"counts": {
+"description": "A listing by resource of the number of fixable and total vulnerabilities.",
+"items": {
+"$ref": "FixableTotalByDigest"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"WindowsDetail": {
+"id": "WindowsDetail",
+"properties": {
+"cpeUri": {
+"description": "Required. The CPE URI in [cpe format](https://cpe.mitre.org/specification/) in which the vulnerability manifests. Examples include distro or storage location for vulnerable jar.",
+"type": "string"
+},
+"description": {
+"description": "The description of the vulnerability.",
+"type": "string"
+},
+"fixingKbs": {
+"description": "Required. The names of the KBs which have hotfixes to mitigate this vulnerability. Note that there may be multiple hotfixes (and thus multiple KBs) that mitigate a given vulnerability. Currently any listed kb's presence is considered a fix.",
+"items": {
+"$ref": "KnowledgeBase"
+},
+"type": "array"
+},
+"name": {
+"description": "Required. The name of the vulnerability.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Container Analysis API",
+"version": "v1beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/contentwarehouse.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/contentwarehouse.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..1161c573f1b47db3ce999fa1a0ec625312496a49
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/contentwarehouse.v1.json
@@ -0,0 +1,5896 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://contentwarehouse.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "contentwarehouse",
+"description": "",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/document-warehouse",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "contentwarehouse:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://contentwarehouse.mtls.googleapis.com/",
+"name": "contentwarehouse",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"methods": {
+"fetchAcl": {
+"description": "Gets the access control policy for a resource. Returns NOT_FOUND error if the resource does not exist. Returns an empty policy if the resource exists but does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}:fetchAcl",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.fetchAcl",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for collection: projects/{project_number}/locations/{location}/collections/{collection_id}. Format for project: projects/{project_number}.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:fetchAcl",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1FetchAclRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1FetchAclResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setAcl": {
+"description": "Sets the access control policy for a resource. Replaces any existing policy.",
+"flatPath": "v1/projects/{projectsId}:setAcl",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.setAcl",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for collection: projects/{project_number}/locations/{location}/collections/{collection_id}. Format for project: projects/{project_number}.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setAcl",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1SetAclRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1SetAclResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"locations": {
+"methods": {
+"getStatus": {
+"description": "Get the project status.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}:getStatus",
+"httpMethod": "GET",
+"id": "contentwarehouse.projects.locations.getStatus",
+"parameterOrder": [
+"location"
+],
+"parameters": {
+"location": {
+"description": "Required. The location to be queried Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+location}:getStatus",
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1ProjectStatus"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"initialize": {
+"description": "Provisions resources for given tenant project. Returns a long running operation.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}:initialize",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.initialize",
+"parameterOrder": [
+"location"
+],
+"parameters": {
+"location": {
+"description": "Required. The location to be initialized Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+location}:initialize",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1InitializeProjectRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"runPipeline": {
+"description": "Run a predefined pipeline.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}:runPipeline",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.runPipeline",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name which owns the resources of the pipeline. Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:runPipeline",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1RunPipelineRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"documentSchemas": {
+"methods": {
+"create": {
+"description": "Creates a document schema.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documentSchemas.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/documentSchemas",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a document schema. Returns NOT_FOUND if the document schema does not exist. Returns BAD_REQUEST if the document schema has documents depending on it.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}",
+"httpMethod": "DELETE",
+"id": "contentwarehouse.projects.locations.documentSchemas.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document schema to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a document schema. Returns NOT_FOUND if the document schema does not exist.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}",
+"httpMethod": "GET",
+"id": "contentwarehouse.projects.locations.documentSchemas.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document schema to retrieve.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists document schemas.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas",
+"httpMethod": "GET",
+"id": "contentwarehouse.projects.locations.documentSchemas.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of document schemas to return. The service may return fewer than this value. If unspecified, at most 50 document schemas will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListDocumentSchemas` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDocumentSchemas` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of document schemas. Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/documentSchemas",
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1ListDocumentSchemasResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a Document Schema. Returns INVALID_ARGUMENT if the name of the Document Schema is non-empty and does not equal the existing name. Supports only appending new properties, adding new ENUM possible values, and updating the EnumTypeOptions.validation_check_disabled flag for ENUM possible values. Updating existing properties will result into INVALID_ARGUMENT.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}",
+"httpMethod": "PATCH",
+"id": "contentwarehouse.projects.locations.documentSchemas.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document schema to update. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"documents": {
+"methods": {
+"create": {
+"description": "Creates a document.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/documents",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1CreateDocumentRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1CreateDocumentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a document. Returns NOT_FOUND if the document does not exist.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:delete",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to delete. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:delete",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1DeleteDocumentRequest"
+},
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"fetchAcl": {
+"description": "Gets the access control policy for a resource. Returns NOT_FOUND error if the resource does not exist. Returns an empty policy if the resource exists but does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:fetchAcl",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.fetchAcl",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for collection: projects/{project_number}/locations/{location}/collections/{collection_id}. Format for project: projects/{project_number}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:fetchAcl",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1FetchAclRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1FetchAclResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a document. Returns NOT_FOUND if the document does not exist.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:get",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to retrieve. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:get",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1GetDocumentRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1Document"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"linkedSources": {
+"description": "Return all source document-links from the document.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/linkedSources",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.linkedSources",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the document, for which all source links are returned. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/linkedSources",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1ListLinkedSourcesRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1ListLinkedSourcesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"linkedTargets": {
+"description": "Return all target document-links from the document.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/linkedTargets",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.linkedTargets",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the document, for which all target links are returned. Format: projects/{project_number}/locations/{location}/documents/{target_document_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/linkedTargets",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1ListLinkedTargetsRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1ListLinkedTargetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"lock": {
+"description": "Lock the document so the document cannot be updated by other users.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:lock",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.lock",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to lock. Format: projects/{project_number}/locations/{location}/documents/{document}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:lock",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1LockDocumentRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1Document"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a document. Returns INVALID_ARGUMENT if the name of the document is non-empty and does not equal the existing name.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}",
+"httpMethod": "PATCH",
+"id": "contentwarehouse.projects.locations.documents.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to update. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1UpdateDocumentRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1UpdateDocumentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"search": {
+"description": "Searches for documents using provided SearchDocumentsRequest. This call only returns documents that the caller has permission to search against.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents:search",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.search",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent, which owns this collection of documents. Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/documents:search",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1SearchDocumentsRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1SearchDocumentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setAcl": {
+"description": "Sets the access control policy for a resource. Replaces any existing policy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:setAcl",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.setAcl",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for collection: projects/{project_number}/locations/{location}/collections/{collection_id}. Format for project: projects/{project_number}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setAcl",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1SetAclRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1SetAclResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"documentLinks": {
+"methods": {
+"create": {
+"description": "Create a link between a source document and a target document.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/documentLinks",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.documentLinks.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Parent of the document-link to be created. parent of document-link should be a document. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/documentLinks",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1CreateDocumentLinkRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentLink"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Remove the link between the source and target documents.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/documentLinks/{documentLinksId}:delete",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.documentLinks.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document-link to be deleted. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}/documentLinks/{document_link_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+/documentLinks/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:delete",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest"
+},
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"referenceId": {
+"methods": {
+"delete": {
+"description": "Deletes a document. Returns NOT_FOUND if the document does not exist.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}:delete",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.referenceId.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to delete. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:delete",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1DeleteDocumentRequest"
+},
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a document. Returns NOT_FOUND if the document does not exist.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}:get",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.documents.referenceId.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to retrieve. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:get",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1GetDocumentRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1Document"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a document. Returns INVALID_ARGUMENT if the name of the document is non-empty and does not equal the existing name.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}",
+"httpMethod": "PATCH",
+"id": "contentwarehouse.projects.locations.documents.referenceId.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to update. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1UpdateDocumentRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1UpdateDocumentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "contentwarehouse.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"ruleSets": {
+"methods": {
+"create": {
+"description": "Creates a ruleset.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.ruleSets.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/ruleSets",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1RuleSet"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1RuleSet"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a ruleset. Returns NOT_FOUND if the document does not exist.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}",
+"httpMethod": "DELETE",
+"id": "contentwarehouse.projects.locations.ruleSets.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the rule set to delete. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a ruleset. Returns NOT_FOUND if the ruleset does not exist.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}",
+"httpMethod": "GET",
+"id": "contentwarehouse.projects.locations.ruleSets.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the rule set to retrieve. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1RuleSet"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists rulesets.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets",
+"httpMethod": "GET",
+"id": "contentwarehouse.projects.locations.ruleSets.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of rule sets to return. The service may return fewer than this value. If unspecified, at most 50 rule sets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListRuleSets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListRuleSets` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of document. Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/ruleSets",
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1ListRuleSetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a ruleset. Returns INVALID_ARGUMENT if the name of the ruleset is non-empty and does not equal the existing name.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}",
+"httpMethod": "PATCH",
+"id": "contentwarehouse.projects.locations.ruleSets.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the rule set to update. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1UpdateRuleSetRequest"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1RuleSet"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"synonymSets": {
+"methods": {
+"create": {
+"description": "Creates a SynonymSet for a single context. Throws an ALREADY_EXISTS exception if a synonymset already exists for the context.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets",
+"httpMethod": "POST",
+"id": "contentwarehouse.projects.locations.synonymSets.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/synonymSets",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1SynonymSet"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1SynonymSet"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a SynonymSet for a given context. Throws a NOT_FOUND exception if the SynonymSet is not found.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}",
+"httpMethod": "DELETE",
+"id": "contentwarehouse.projects.locations.synonymSets.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the synonymSet to delete Format: projects/{project_number}/locations/{location}/synonymSets/{context}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a SynonymSet for a particular context. Throws a NOT_FOUND exception if the Synonymset does not exist",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}",
+"httpMethod": "GET",
+"id": "contentwarehouse.projects.locations.synonymSets.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the synonymSet to retrieve Format: projects/{project_number}/locations/{location}/synonymSets/{context}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1SynonymSet"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns all SynonymSets (for all contexts) for the specified location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets",
+"httpMethod": "GET",
+"id": "contentwarehouse.projects.locations.synonymSets.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of synonymSets to return. The service may return fewer than this value. If unspecified, at most 50 rule sets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListSynonymSets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSynonymSets` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/synonymSets",
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1ListSynonymSetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Remove the existing SynonymSet for the context and replaces it with a new one. Throws a NOT_FOUND exception if the SynonymSet is not found.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}",
+"httpMethod": "PATCH",
+"id": "contentwarehouse.projects.locations.synonymSets.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the synonymSet to update Format: projects/{project_number}/locations/{location}/synonymSets/{context}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudContentwarehouseV1SynonymSet"
+},
+"response": {
+"$ref": "GoogleCloudContentwarehouseV1SynonymSet"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241204",
+"rootUrl": "https://contentwarehouse.googleapis.com/",
+"schemas": {
+"CloudAiPlatformTenantresourceCloudSqlInstanceConfig": {
+"description": "The identity to configure a CloudSQL instance provisioned via SLM Terraform.",
+"id": "CloudAiPlatformTenantresourceCloudSqlInstanceConfig",
+"properties": {
+"cloudSqlInstanceConnectionName": {
+"description": "Output only. The CloudSQL instance connection name.",
+"type": "string"
+},
+"cloudSqlInstanceName": {
+"description": "Input/Output [Optional]. The CloudSQL instance name within SLM instance. If not set, a random UUIC will be generated as instance name.",
+"type": "string"
+},
+"kmsKeyReference": {
+"description": "Input [Optional]. The KMS key name or the KMS grant name used for CMEK encryption. Only set this field when provisioning new CloudSQL instances. For existing CloudSQL instances, this field will be ignored because CMEK re-encryption is not supported.",
+"type": "string"
+},
+"mdbRolesForCorpAccess": {
+"description": "Input [Optional]. MDB roles for corp access to CloudSQL instance.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"slmInstanceName": {
+"description": "Output only. The SLM instance's full resource name.",
+"type": "string"
+},
+"slmInstanceTemplate": {
+"description": "Input [Required]. The SLM instance template to provision CloudSQL.",
+"type": "string"
+},
+"slmInstanceType": {
+"description": "Input [Required]. The SLM instance type to provision CloudSQL.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceGcsBucketConfig": {
+"description": "The identity to configure a GCS bucket.",
+"id": "CloudAiPlatformTenantresourceGcsBucketConfig",
+"properties": {
+"admins": {
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"bucketName": {
+"description": "Input/Output [Optional]. The name of a GCS bucket with max length of 63 chars. If not set, a random UUID will be generated as bucket name.",
+"type": "string"
+},
+"entityName": {
+"description": "Input/Output [Optional]. Only needed for per-entity tenant GCP resources. During Deprovision API, the on-demand deletion will only cover the tenant GCP resources with the specified entity name.",
+"type": "string"
+},
+"kmsKeyReference": {
+"description": "Input/Output [Optional]. The KMS key name or the KMS grant name used for CMEK encryption. Only set this field when provisioning new GCS bucket. For existing GCS bucket, this field will be ignored because CMEK re-encryption is not supported.",
+"type": "string"
+},
+"ttlDays": {
+"description": "Input/Output [Optional]. Only needed when the content in bucket need to be garbage collected within some amount of days.",
+"format": "int32",
+"type": "integer"
+},
+"viewers": {
+"description": "Input/Output [Required]. IAM roles (viewer/admin) put on the bucket.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceIamPolicyBinding": {
+"description": "The dynamic IAM bindings to be granted after tenant projects are created.",
+"id": "CloudAiPlatformTenantresourceIamPolicyBinding",
+"properties": {
+"members": {
+"description": "Input/Output [Required]. The member service accounts with the roles above. Note: placeholders are same as the resource above.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"resource": {
+"description": "Input/Output [Required]. The resource name that will be accessed by members, which also depends on resource_type. Note: placeholders are supported in resource names. For example, ${tpn} will be used when the tenant project number is not ready.",
+"type": "string"
+},
+"resourceType": {
+"description": "Input/Output [Required]. Specifies the type of resource that will be accessed by members.",
+"enum": [
+"RESOURCE_TYPE_UNSPECIFIED",
+"PROJECT",
+"SERVICE_ACCOUNT",
+"GCS_BUCKET",
+"SERVICE_CONSUMER",
+"AR_REPO"
+],
+"enumDescriptions": [
+"",
+"The value of resource field is the ID or number of a project. Format is ",
+"The value of resource field is the resource name of a service account. Format is projects//serviceAccounts/",
+"The value of resource field is the name of a GCS bucket (not its resource name). Format is .",
+"The value of resource field is the resource name of a service consumer. Format is services//consumers/",
+"The value of the resource field is the AR Image Uri which identifies an AR REPO. Allowed formats are: /// ///: ///@"
+],
+"type": "string"
+},
+"role": {
+"description": "Input/Output [Required]. The role for members below.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceInfraSpannerConfig": {
+"description": "The configuration for a spanner database provisioning. Next ID: 8",
+"id": "CloudAiPlatformTenantresourceInfraSpannerConfig",
+"properties": {
+"createDatabaseOptions": {
+"$ref": "CloudAiPlatformTenantresourceInfraSpannerConfigCreateDatabaseOptions",
+"description": "Input [Optional]. The options to create a spanner database. Note: give the right options to ensure the right KMS key access audit logging and AxT logging in expected logging category."
+},
+"kmsKeyReference": {
+"description": "Input [Optional]. The KMS key name or the KMS grant name used for CMEK encryption. Only set this field when provisioning new Infra Spanner databases. For existing Infra Spanner databases, this field will be ignored because CMEK re-encryption is not supported. For example, projects//locations//keyRings//cryptoKeys/",
+"type": "string"
+},
+"sdlBundlePath": {
+"description": "Input [Required]. The file path to the spanner SDL bundle.",
+"type": "string"
+},
+"spannerBorgServiceAccount": {
+"description": "Input [Optional]. The spanner borg service account for delegating the kms key to. For example, spanner-infra-cmek-nonprod@system.gserviceaccount.com, for the nonprod universe.",
+"type": "string"
+},
+"spannerLocalNamePrefix": {
+"type": "string"
+},
+"spannerNamespace": {
+"type": "string"
+},
+"spannerUniverse": {
+"description": "Input [Required]. Every database in Spanner can be identified by the following path name: /span//:",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceInfraSpannerConfigCreateDatabaseOptions": {
+"description": "The options to create a spanner database. KMS key access audit logging and AxT logging will be associated with the given resource name, resource type and service name. Please ensure to give right options to enable correct audit logging and AxT logging.",
+"id": "CloudAiPlatformTenantresourceInfraSpannerConfigCreateDatabaseOptions",
+"properties": {
+"cmekCloudResourceName": {
+"description": "The cloud resource name for the CMEK encryption. For example, projects//locations/",
+"type": "string"
+},
+"cmekCloudResourceType": {
+"description": "The cloud resource type for the CMEK encryption. For example, contentwarehouse.googleapis.com/Location",
+"type": "string"
+},
+"cmekServiceName": {
+"description": "The service name for the CMEK encryption. For example, contentwarehouse.googleapis.com",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceServiceAccountIdentity": {
+"description": "The identity to configure a service account.",
+"id": "CloudAiPlatformTenantresourceServiceAccountIdentity",
+"properties": {
+"serviceAccountEmail": {
+"description": "Output only. The service account email that has been created.",
+"type": "string"
+},
+"tag": {
+"description": "Input/Output [Optional]. The tag that configures the service account, as defined in google3/configs/production/cdpush/acl-zanzibar-cloud-prod/activation_grants/activation_grants.gcl. Note: The default P4 service account has the empty tag.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceTenantProjectConfig": {
+"description": "The identity to configure a tenant project.",
+"id": "CloudAiPlatformTenantresourceTenantProjectConfig",
+"properties": {
+"billingConfig": {
+"$ref": "GoogleApiServiceconsumermanagementV1BillingConfig",
+"description": "Input/Output [Required]. The billing account properties to create the tenant project."
+},
+"folder": {
+"description": "Input/Output [Required]. The folder that holds tenant projects and folder-level permissions will be automatically granted to all tenant projects under the folder. Note: the valid folder format is `folders/{folder_number}`.",
+"type": "string"
+},
+"policyBindings": {
+"description": "Input/Output [Required]. The policy bindings that are applied to the tenant project during creation. At least one binding must have the role `roles/owner` with either `user` or `group` type.",
+"items": {
+"$ref": "GoogleApiServiceconsumermanagementV1PolicyBinding"
+},
+"type": "array"
+},
+"services": {
+"description": "Input/Output [Required]. The API services that are enabled on the tenant project during creation.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceTenantProjectResource": {
+"description": "The tenant project and tenant resources. Next ID: 10",
+"id": "CloudAiPlatformTenantresourceTenantProjectResource",
+"properties": {
+"cloudSqlInstances": {
+"description": "The CloudSQL instances that are provisioned under the tenant project.",
+"items": {
+"$ref": "CloudAiPlatformTenantresourceCloudSqlInstanceConfig"
+},
+"type": "array"
+},
+"gcsBuckets": {
+"description": "The GCS buckets that are provisioned under the tenant project.",
+"items": {
+"$ref": "CloudAiPlatformTenantresourceGcsBucketConfig"
+},
+"type": "array"
+},
+"iamPolicyBindings": {
+"description": "The dynamic IAM bindings that are granted under the tenant project. Note: this should only add new bindings to the project if they don't exist and the existing bindings won't be affected.",
+"items": {
+"$ref": "CloudAiPlatformTenantresourceIamPolicyBinding"
+},
+"type": "array"
+},
+"infraSpannerConfigs": {
+"description": "The Infra Spanner databases that are provisioned under the tenant project. Note: this is an experimental feature.",
+"items": {
+"$ref": "CloudAiPlatformTenantresourceInfraSpannerConfig"
+},
+"type": "array"
+},
+"tag": {
+"description": "Input/Output [Required]. The tag that uniquely identifies a tenant project within a tenancy unit. Note: for the same tenant project tag, all tenant manager operations should be idempotent.",
+"type": "string"
+},
+"tenantProjectConfig": {
+"$ref": "CloudAiPlatformTenantresourceTenantProjectConfig",
+"description": "The configurations of a tenant project."
+},
+"tenantProjectId": {
+"description": "Output only. The tenant project ID that has been created.",
+"type": "string"
+},
+"tenantProjectNumber": {
+"description": "Output only. The tenant project number that has been created.",
+"format": "int64",
+"type": "string"
+},
+"tenantServiceAccounts": {
+"description": "The service account identities (or enabled API service's P4SA) that are expclicitly created under the tenant project (before JIT provisioning during enabled API services).",
+"items": {
+"$ref": "CloudAiPlatformTenantresourceTenantServiceAccountIdentity"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceTenantResource": {
+"description": "A collection of tenant resources.",
+"id": "CloudAiPlatformTenantresourceTenantResource",
+"properties": {
+"p4ServiceAccounts": {
+"description": "A list of P4 service accounts (go/p4sa) to provision or deprovision.",
+"items": {
+"$ref": "CloudAiPlatformTenantresourceServiceAccountIdentity"
+},
+"type": "array"
+},
+"tenantProjectResources": {
+"description": "A list of tenant projects and tenant resources to provision or deprovision.",
+"items": {
+"$ref": "CloudAiPlatformTenantresourceTenantProjectResource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CloudAiPlatformTenantresourceTenantServiceAccountIdentity": {
+"description": "The identity of service accounts that have been explicitly created under tenant projects.",
+"id": "CloudAiPlatformTenantresourceTenantServiceAccountIdentity",
+"properties": {
+"serviceAccountEmail": {
+"description": "Output only. The email address of the generated service account.",
+"type": "string"
+},
+"serviceName": {
+"description": "Input/Output [Required]. The service that the service account belongs to. (e.g. cloudbuild.googleapis.com for GCB service accounts)",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceconsumermanagementV1BillingConfig": {
+"description": "Describes the billing configuration for a new tenant project.",
+"id": "GoogleApiServiceconsumermanagementV1BillingConfig",
+"properties": {
+"billingAccount": {
+"description": "Name of the billing account. For example `billingAccounts/012345-567890-ABCDEF`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceconsumermanagementV1PolicyBinding": {
+"description": "Translates to IAM Policy bindings (without auditing at this level)",
+"id": "GoogleApiServiceconsumermanagementV1PolicyBinding",
+"properties": {
+"members": {
+"description": "Uses the same format as in IAM policy. `member` must include both a prefix and ID. For example, `user:{emailId}`, `serviceAccount:{emailId}`, `group:{emailId}`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role. (https://cloud.google.com/iam/docs/understanding-roles) For example, `roles/viewer`, `roles/editor`, or `roles/owner`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1AccessControlAction": {
+"description": "Represents the action responsible for access control list management operations.",
+"id": "GoogleCloudContentwarehouseV1AccessControlAction",
+"properties": {
+"operationType": {
+"description": "Identifies the type of operation.",
+"enum": [
+"UNKNOWN",
+"ADD_POLICY_BINDING",
+"REMOVE_POLICY_BINDING",
+"REPLACE_POLICY_BINDING"
+],
+"enumDescriptions": [
+"The unknown operation type.",
+"Adds newly given policy bindings in the existing bindings list.",
+"Removes newly given policy bindings from the existing bindings list.",
+"Replaces existing policy bindings with the given policy binding list"
+],
+"type": "string"
+},
+"policy": {
+"$ref": "GoogleIamV1Policy",
+"description": "Represents the new policy from which bindings are added, removed or replaced based on the type of the operation. the policy is limited to a few 10s of KB."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1Action": {
+"description": "Represents the action triggered by Rule Engine when the rule is true.",
+"id": "GoogleCloudContentwarehouseV1Action",
+"properties": {
+"accessControl": {
+"$ref": "GoogleCloudContentwarehouseV1AccessControlAction",
+"description": "Action triggering access control operations."
+},
+"actionId": {
+"description": "ID of the action. Managed internally.",
+"type": "string"
+},
+"addToFolder": {
+"$ref": "GoogleCloudContentwarehouseV1AddToFolderAction",
+"description": "Action triggering create document link operation."
+},
+"dataUpdate": {
+"$ref": "GoogleCloudContentwarehouseV1DataUpdateAction",
+"description": "Action triggering data update operations."
+},
+"dataValidation": {
+"$ref": "GoogleCloudContentwarehouseV1DataValidationAction",
+"description": "Action triggering data validation operations."
+},
+"deleteDocumentAction": {
+"$ref": "GoogleCloudContentwarehouseV1DeleteDocumentAction",
+"description": "Action deleting the document."
+},
+"publishToPubSub": {
+"$ref": "GoogleCloudContentwarehouseV1PublishAction",
+"description": "Action publish to Pub/Sub operation."
+},
+"removeFromFolderAction": {
+"$ref": "GoogleCloudContentwarehouseV1RemoveFromFolderAction",
+"description": "Action removing a document from a folder."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ActionExecutorOutput": {
+"description": "Represents the output of the Action Executor.",
+"id": "GoogleCloudContentwarehouseV1ActionExecutorOutput",
+"properties": {
+"ruleActionsPairs": {
+"description": "List of rule and corresponding actions result.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1RuleActionsPair"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ActionOutput": {
+"description": "Represents the result of executing an action.",
+"id": "GoogleCloudContentwarehouseV1ActionOutput",
+"properties": {
+"actionId": {
+"description": "ID of the action.",
+"type": "string"
+},
+"actionState": {
+"description": "State of an action.",
+"enum": [
+"UNKNOWN",
+"ACTION_SUCCEEDED",
+"ACTION_FAILED",
+"ACTION_TIMED_OUT",
+"ACTION_PENDING"
+],
+"enumDescriptions": [
+"The unknown state.",
+"State indicating action executed successfully.",
+"State indicating action failed.",
+"State indicating action timed out.",
+"State indicating action is pending."
+],
+"type": "string"
+},
+"outputMessage": {
+"description": "Action execution output message.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1AddToFolderAction": {
+"description": "Represents the action responsible for adding document under a folder.",
+"id": "GoogleCloudContentwarehouseV1AddToFolderAction",
+"properties": {
+"folders": {
+"description": "Names of the folder under which new document is to be added. Format: projects/{project_number}/locations/{location}/documents/{document_id}.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1CloudAIDocumentOption": {
+"description": "Request Option for processing Cloud AI Document in CW Document.",
+"id": "GoogleCloudContentwarehouseV1CloudAIDocumentOption",
+"properties": {
+"customizedEntitiesPropertiesConversions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "If set, only selected entities will be converted to properties.",
+"type": "object"
+},
+"enableEntitiesConversions": {
+"description": "Whether to convert all the entities to properties.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1CreateDocumentLinkRequest": {
+"description": "Request message for DocumentLinkService.CreateDocumentLink.",
+"id": "GoogleCloudContentwarehouseV1CreateDocumentLinkRequest",
+"properties": {
+"documentLink": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentLink",
+"description": "Required. Document links associated with the source documents (source_document_id)."
+},
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the document creator, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1CreateDocumentMetadata": {
+"description": "Metadata object for CreateDocument request (currently empty).",
+"id": "GoogleCloudContentwarehouseV1CreateDocumentMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1CreateDocumentRequest": {
+"description": "Request message for DocumentService.CreateDocument.",
+"id": "GoogleCloudContentwarehouseV1CreateDocumentRequest",
+"properties": {
+"cloudAiDocumentOption": {
+"$ref": "GoogleCloudContentwarehouseV1CloudAIDocumentOption",
+"description": "Request Option for processing Cloud AI Document in Document Warehouse. This field offers limited support for mapping entities from Cloud AI Document to Warehouse Document. Please consult with product team before using this field and other available options."
+},
+"createMask": {
+"description": "Field mask for creating Document fields. If mask path is empty, it means all fields are masked. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask.",
+"format": "google-fieldmask",
+"type": "string"
+},
+"document": {
+"$ref": "GoogleCloudContentwarehouseV1Document",
+"description": "Required. The document to create."
+},
+"policy": {
+"$ref": "GoogleIamV1Policy",
+"description": "Default document policy during creation. This refers to an Identity and Access (IAM) policy, which specifies access controls for the Document. Conditions defined in the policy will be ignored."
+},
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the end user, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1CreateDocumentResponse": {
+"description": "Response message for DocumentService.CreateDocument.",
+"id": "GoogleCloudContentwarehouseV1CreateDocumentResponse",
+"properties": {
+"document": {
+"$ref": "GoogleCloudContentwarehouseV1Document",
+"description": "Document created after executing create request."
+},
+"longRunningOperations": {
+"description": "post-processing LROs",
+"items": {
+"$ref": "GoogleLongrunningOperation"
+},
+"type": "array"
+},
+"metadata": {
+"$ref": "GoogleCloudContentwarehouseV1ResponseMetadata",
+"description": "Additional information for the API invocation, such as the request tracking id."
+},
+"ruleEngineOutput": {
+"$ref": "GoogleCloudContentwarehouseV1RuleEngineOutput",
+"description": "Output from Rule Engine recording the rule evaluator and action executor's output. Refer format in: google/cloud/contentwarehouse/v1/rule_engine.proto"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1CustomWeightsMetadata": {
+"description": "To support the custom weighting across document schemas.",
+"id": "GoogleCloudContentwarehouseV1CustomWeightsMetadata",
+"properties": {
+"weightedSchemaProperties": {
+"description": "List of schema and property name. Allows a maximum of 10 schemas to be specified for relevance boosting.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1WeightedSchemaProperty"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DataUpdateAction": {
+"description": "Represents the action responsible for properties update operations.",
+"id": "GoogleCloudContentwarehouseV1DataUpdateAction",
+"properties": {
+"entries": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Map of (K, V) -> (valid name of the field, new value of the field) E.g., (\"age\", \"60\") entry triggers update of field age with a value of 60. If the field is not present then new entry is added. During update action execution, value strings will be casted to appropriate types.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DataValidationAction": {
+"description": "Represents the action responsible for data validation operations.",
+"id": "GoogleCloudContentwarehouseV1DataValidationAction",
+"properties": {
+"conditions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Map of (K, V) -> (field, string condition to be evaluated on the field) E.g., (\"age\", \"age > 18 && age < 60\") entry triggers validation of field age with the given condition. Map entries will be ANDed during validation.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DateTimeArray": {
+"description": "DateTime values.",
+"id": "GoogleCloudContentwarehouseV1DateTimeArray",
+"properties": {
+"values": {
+"description": "List of datetime values. Both OffsetDateTime and ZonedDateTime are supported.",
+"items": {
+"$ref": "GoogleTypeDateTime"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DateTimeTypeOptions": {
+"description": "Configurations for a date time property.",
+"id": "GoogleCloudContentwarehouseV1DateTimeTypeOptions",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DeleteDocumentAction": {
+"description": "Represents the action responsible for deleting the document.",
+"id": "GoogleCloudContentwarehouseV1DeleteDocumentAction",
+"properties": {
+"enableHardDelete": {
+"description": "Boolean field to select between hard vs soft delete options. Set 'true' for 'hard delete' and 'false' for 'soft delete'.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest": {
+"description": "Request message for DocumentLinkService.DeleteDocumentLink.",
+"id": "GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest",
+"properties": {
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the document creator, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DeleteDocumentRequest": {
+"description": "Request message for DocumentService.DeleteDocument.",
+"id": "GoogleCloudContentwarehouseV1DeleteDocumentRequest",
+"properties": {
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the end user, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1Document": {
+"description": "Defines the structure for content warehouse document proto.",
+"id": "GoogleCloudContentwarehouseV1Document",
+"properties": {
+"cloudAiDocument": {
+"$ref": "GoogleCloudDocumentaiV1Document",
+"description": "Document AI format to save the structured content, including OCR."
+},
+"contentCategory": {
+"description": "Indicates the category (image, audio, video etc.) of the original content.",
+"enum": [
+"CONTENT_CATEGORY_UNSPECIFIED",
+"CONTENT_CATEGORY_IMAGE",
+"CONTENT_CATEGORY_AUDIO",
+"CONTENT_CATEGORY_VIDEO"
+],
+"enumDescriptions": [
+"No category is specified.",
+"Content is of image type.",
+"Content is of audio type.",
+"Content is of video type."
+],
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time when the document is created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"creator": {
+"description": "The user who creates the document.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. Display name of the document given by the user. This name will be displayed in the UI. Customer can populate this field with the name of the document. This differs from the 'title' field as 'title' is optional and stores the top heading in the document.",
+"type": "string"
+},
+"displayUri": {
+"description": "Uri to display the document, for example, in the UI.",
+"type": "string"
+},
+"dispositionTime": {
+"description": "Output only. If linked to a Collection with RetentionPolicy, the date when the document becomes mutable.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"documentSchemaName": {
+"description": "The Document schema name. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.",
+"type": "string"
+},
+"inlineRawDocument": {
+"description": "Raw document content.",
+"format": "byte",
+"type": "string"
+},
+"legalHold": {
+"description": "Output only. Indicates if the document has a legal hold on it.",
+"readOnly": true,
+"type": "boolean"
+},
+"name": {
+"description": "The resource name of the document. Format: projects/{project_number}/locations/{location}/documents/{document_id}. The name is ignored when creating a document.",
+"type": "string"
+},
+"plainText": {
+"description": "Other document format, such as PPTX, XLXS",
+"type": "string"
+},
+"properties": {
+"description": "List of values that are user supplied metadata.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1Property"
+},
+"type": "array"
+},
+"rawDocumentFileType": {
+"description": "This is used when DocAI was not used to load the document and parsing/ extracting is needed for the inline_raw_document. For example, if inline_raw_document is the byte representation of a PDF file, then this should be set to: RAW_DOCUMENT_FILE_TYPE_PDF.",
+"enum": [
+"RAW_DOCUMENT_FILE_TYPE_UNSPECIFIED",
+"RAW_DOCUMENT_FILE_TYPE_PDF",
+"RAW_DOCUMENT_FILE_TYPE_DOCX",
+"RAW_DOCUMENT_FILE_TYPE_XLSX",
+"RAW_DOCUMENT_FILE_TYPE_PPTX",
+"RAW_DOCUMENT_FILE_TYPE_TEXT",
+"RAW_DOCUMENT_FILE_TYPE_TIFF"
+],
+"enumDescriptions": [
+"No raw document specified or it is non-parsable",
+"Adobe PDF format",
+"Microsoft Word format",
+"Microsoft Excel format",
+"Microsoft Powerpoint format",
+"UTF-8 encoded text format",
+"TIFF or TIF image file format"
+],
+"type": "string"
+},
+"rawDocumentPath": {
+"description": "Raw document file in Cloud Storage path.",
+"type": "string"
+},
+"referenceId": {
+"description": "The reference ID set by customers. Must be unique per project and location.",
+"type": "string"
+},
+"textExtractionDisabled": {
+"deprecated": true,
+"description": "If true, text extraction will not be performed.",
+"type": "boolean"
+},
+"textExtractionEnabled": {
+"description": "If true, text extraction will be performed.",
+"type": "boolean"
+},
+"title": {
+"description": "Title that describes the document. This can be the top heading or text that describes the document.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the document is last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"updater": {
+"description": "The user who lastly updates the document.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DocumentLink": {
+"description": "A document-link between source and target document.",
+"id": "GoogleCloudContentwarehouseV1DocumentLink",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the documentLink is created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Description of this document-link.",
+"type": "string"
+},
+"name": {
+"description": "Name of this document-link. It is required that the parent derived form the name to be consistent with the source document reference. Otherwise an exception will be thrown. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}/documentLinks/{document_link_id}.",
+"type": "string"
+},
+"sourceDocumentReference": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentReference",
+"description": "Document references of the source document."
+},
+"state": {
+"description": "The state of the documentlink. If target node has been deleted, the link is marked as invalid. Removing a source node will result in removal of all associated links.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"SOFT_DELETED"
+],
+"enumDescriptions": [
+"Unknown state of documentlink.",
+"The documentlink has both source and target documents detected.",
+"Target document is deleted, and mark the documentlink as soft-deleted."
+],
+"type": "string"
+},
+"targetDocumentReference": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentReference",
+"description": "Document references of the target document."
+},
+"updateTime": {
+"description": "Output only. The time when the documentLink is last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DocumentQuery": {
+"id": "GoogleCloudContentwarehouseV1DocumentQuery",
+"properties": {
+"customPropertyFilter": {
+"deprecated": true,
+"description": "This filter specifies a structured syntax to match against the [PropertyDefinition].is_filterable marked as `true`. The syntax for this expression is a subset of SQL syntax. Supported operators are: `=`, `!=`, `<`, `<=`, `>`, and `>=` where the left of the operator is a property name and the right of the operator is a number or a quoted string. You must escape backslash (\\\\) and quote (\\\") characters. Supported functions are `LOWER([property_name])` to perform a case insensitive match and `EMPTY([property_name])` to filter on the existence of a key. Boolean expressions (AND/OR/NOT) are supported up to 3 levels of nesting (for example, \"((A AND B AND C) OR NOT D) AND E\"), a maximum of 100 comparisons or functions are allowed in the expression. The expression must be < 6000 bytes in length. Sample Query: `(LOWER(driving_license)=\"class \\\"a\\\"\" OR EMPTY(driving_license)) AND driving_years > 10`",
+"type": "string"
+},
+"customWeightsMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1CustomWeightsMetadata",
+"description": "To support the custom weighting across document schemas, customers need to provide the properties to be used to boost the ranking in the search request. For a search query with CustomWeightsMetadata specified, only the RetrievalImportance for the properties in the CustomWeightsMetadata will be honored."
+},
+"documentCreatorFilter": {
+"description": "The exact creator(s) of the documents to search against. If a value isn't specified, documents within the search results are associated with any creator. If multiple values are specified, documents within the search results may be associated with any of the specified creators.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"documentNameFilter": {
+"description": "Search the documents in the list. Format: projects/{project_number}/locations/{location}/documents/{document_id}.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"documentSchemaNames": {
+"description": "This filter specifies the exact document schema Document.document_schema_name of the documents to search against. If a value isn't specified, documents within the search results are associated with any schema. If multiple values are specified, documents within the search results may be associated with any of the specified schemas. At most 20 document schema names are allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"fileTypeFilter": {
+"$ref": "GoogleCloudContentwarehouseV1FileTypeFilter",
+"description": "This filter specifies the types of files to return: ALL, FOLDER, or FILE. If FOLDER or FILE is specified, then only either folders or files will be returned, respectively. If ALL is specified, both folders and files will be returned. If no value is specified, ALL files will be returned."
+},
+"folderNameFilter": {
+"description": "Search all the documents under this specified folder. Format: projects/{project_number}/locations/{location}/documents/{document_id}.",
+"type": "string"
+},
+"isNlQuery": {
+"description": "Experimental, do not use. If the query is a natural language question. False by default. If true, then the question-answering feature will be used instead of search, and `result_count` in SearchDocumentsRequest must be set. In addition, all other input fields related to search (pagination, histograms, etc.) will be ignored.",
+"type": "boolean"
+},
+"propertyFilter": {
+"description": "This filter specifies a structured syntax to match against the PropertyDefinition.is_filterable marked as `true`. The relationship between the PropertyFilters is OR.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1PropertyFilter"
+},
+"type": "array"
+},
+"query": {
+"description": "The query string that matches against the full text of the document and the searchable properties. The query partially supports [Google AIP style syntax](https://google.aip.dev/160). Specifically, the query supports literals, logical operators, negation operators, comparison operators, and functions. Literals: A bare literal value (examples: \"42\", \"Hugo\") is a value to be matched against. It searches over the full text of the document and the searchable properties. Logical operators: \"AND\", \"and\", \"OR\", and \"or\" are binary logical operators (example: \"engineer OR developer\"). Negation operators: \"NOT\" and \"!\" are negation operators (example: \"NOT software\"). Comparison operators: support the binary comparison operators =, !=, <, >, <= and >= for string, numeric, enum, boolean. Also support like operator `~~` for string. It provides semantic search functionality by parsing, stemming and doing synonyms expansion against the input query. To specify a property in the query, the left hand side expression in the comparison must be the property ID including the parent. The right hand side must be literals. For example: \"\\\"projects/123/locations/us\\\".property_a < 1\" matches results whose \"property_a\" is less than 1 in project 123 and us location. The literals and comparison expression can be connected in a single query (example: \"software engineer \\\"projects/123/locations/us\\\".salary > 100\"). Functions: supported functions are `LOWER([property_name])` to perform a case insensitive match and `EMPTY([property_name])` to filter on the existence of a key. Support nested expressions connected using parenthesis and logical operators. The default logical operators is `AND` if there is no operators between expressions. The query can be used with other filters e.g. `time_filters` and `folder_name_filter`. They are connected with `AND` operator under the hood. The maximum number of allowed characters is 255.",
+"type": "string"
+},
+"queryContext": {
+"description": "For custom synonyms. Customers provide the synonyms based on context. One customer can provide multiple set of synonyms based on different context. The search query will be expanded based on the custom synonyms of the query context set. By default, no custom synonyms wll be applied if no query context is provided. It is not supported for CMEK compliant deployment.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"timeFilters": {
+"description": "Documents created/updated within a range specified by this filter are searched against.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1TimeFilter"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DocumentReference": {
+"description": "References to the documents.",
+"id": "GoogleCloudContentwarehouseV1DocumentReference",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the document is created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deleteTime": {
+"description": "Output only. The time when the document is deleted.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "display_name of the referenced document; this name does not need to be consistent to the display_name in the Document proto, depending on the ACL constraint.",
+"type": "string"
+},
+"documentIsFolder": {
+"description": "The document type of the document being referenced.",
+"type": "boolean"
+},
+"documentIsLegalHoldFolder": {
+"description": "Document is a folder with legal hold.",
+"type": "boolean"
+},
+"documentIsRetentionFolder": {
+"description": "Document is a folder with retention policy.",
+"type": "boolean"
+},
+"documentName": {
+"description": "Required. Name of the referenced document.",
+"type": "string"
+},
+"snippet": {
+"description": "Stores the subset of the referenced document's content. This is useful to allow user peek the information of the referenced document.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the document is last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1DocumentSchema": {
+"description": "A document schema used to define document structure.",
+"id": "GoogleCloudContentwarehouseV1DocumentSchema",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the document schema is created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Schema description.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. Name of the schema given by the user. Must be unique per project.",
+"type": "string"
+},
+"documentIsFolder": {
+"description": "Document Type, true refers the document is a folder, otherwise it is a typical document.",
+"type": "boolean"
+},
+"name": {
+"description": "The resource name of the document schema. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}. The name is ignored when creating a document schema.",
+"type": "string"
+},
+"propertyDefinitions": {
+"description": "Document details.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1PropertyDefinition"
+},
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. The time when the document schema is last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1EnumArray": {
+"description": "Enum values.",
+"id": "GoogleCloudContentwarehouseV1EnumArray",
+"properties": {
+"values": {
+"description": "List of enum values.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1EnumTypeOptions": {
+"description": "Configurations for an enum/categorical property.",
+"id": "GoogleCloudContentwarehouseV1EnumTypeOptions",
+"properties": {
+"possibleValues": {
+"description": "Required. List of possible enum values.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"validationCheckDisabled": {
+"description": "Make sure the Enum property value provided in the document is in the possile value list during document creation. The validation check runs by default.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1EnumValue": {
+"description": "Represents the string value of the enum field.",
+"id": "GoogleCloudContentwarehouseV1EnumValue",
+"properties": {
+"value": {
+"description": "String value of the enum field. This must match defined set of enums in document schema using EnumTypeOptions.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ExportToCdwPipeline": {
+"description": "The configuration of exporting documents from the Document Warehouse to CDW pipeline.",
+"id": "GoogleCloudContentwarehouseV1ExportToCdwPipeline",
+"properties": {
+"docAiDataset": {
+"description": "Optional. The CDW dataset resource name. This field is optional. If not set, the documents will be exported to Cloud Storage only. Format: projects/{project}/locations/{location}/processors/{processor}/dataset",
+"type": "string"
+},
+"documents": {
+"description": "The list of all the resource names of the documents to be processed. Format: projects/{project_number}/locations/{location}/documents/{document_id}.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"exportFolderPath": {
+"description": "The Cloud Storage folder path used to store the exported documents before being sent to CDW. Format: `gs:///`.",
+"type": "string"
+},
+"trainingSplitRatio": {
+"description": "Ratio of training dataset split. When importing into Document AI Workbench, documents will be automatically split into training and test split category with the specified ratio. This field is required if doc_ai_dataset is set.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1FetchAclRequest": {
+"description": "Request message for DocumentService.FetchAcl",
+"id": "GoogleCloudContentwarehouseV1FetchAclRequest",
+"properties": {
+"projectOwner": {
+"description": "For Get Project ACL only. Authorization check for end user will be ignored when project_owner=true.",
+"type": "boolean"
+},
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the end user, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1FetchAclResponse": {
+"description": "Response message for DocumentService.FetchAcl.",
+"id": "GoogleCloudContentwarehouseV1FetchAclResponse",
+"properties": {
+"metadata": {
+"$ref": "GoogleCloudContentwarehouseV1ResponseMetadata",
+"description": "Additional information for the API invocation, such as the request tracking id."
+},
+"policy": {
+"$ref": "GoogleIamV1Policy",
+"description": "The IAM policy."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1FileTypeFilter": {
+"description": "Filter for the specific types of documents returned.",
+"id": "GoogleCloudContentwarehouseV1FileTypeFilter",
+"properties": {
+"fileType": {
+"description": "The type of files to return.",
+"enum": [
+"FILE_TYPE_UNSPECIFIED",
+"ALL",
+"FOLDER",
+"DOCUMENT",
+"ROOT_FOLDER"
+],
+"enumDescriptions": [
+"Default document type. If set, disables the filter.",
+"Returns all document types, including folders.",
+"Returns only folders.",
+"Returns only non-folder documents.",
+"Returns only root folders"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1FloatArray": {
+"description": "Float values.",
+"id": "GoogleCloudContentwarehouseV1FloatArray",
+"properties": {
+"values": {
+"description": "List of float values.",
+"items": {
+"format": "float",
+"type": "number"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1FloatTypeOptions": {
+"description": "Configurations for a float property.",
+"id": "GoogleCloudContentwarehouseV1FloatTypeOptions",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1GcsIngestPipeline": {
+"description": "The configuration of the Cloud Storage Ingestion pipeline.",
+"id": "GoogleCloudContentwarehouseV1GcsIngestPipeline",
+"properties": {
+"inputPath": {
+"description": "The input Cloud Storage folder. All files under this folder will be imported to Document Warehouse. Format: `gs:///`.",
+"type": "string"
+},
+"pipelineConfig": {
+"$ref": "GoogleCloudContentwarehouseV1IngestPipelineConfig",
+"description": "Optional. The config for the Cloud Storage Ingestion pipeline. It provides additional customization options to run the pipeline and can be skipped if it is not applicable."
+},
+"processorType": {
+"description": "The Doc AI processor type name. Only used when the format of ingested files is Doc AI Document proto format.",
+"type": "string"
+},
+"schemaName": {
+"description": "The Document Warehouse schema resource name. All documents processed by this pipeline will use this schema. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.",
+"type": "string"
+},
+"skipIngestedDocuments": {
+"description": "The flag whether to skip ingested documents. If it is set to true, documents in Cloud Storage contains key \"status\" with value \"status=ingested\" in custom metadata will be skipped to ingest.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1GcsIngestWithDocAiProcessorsPipeline": {
+"description": "The configuration of the Cloud Storage Ingestion with DocAI Processors pipeline.",
+"id": "GoogleCloudContentwarehouseV1GcsIngestWithDocAiProcessorsPipeline",
+"properties": {
+"extractProcessorInfos": {
+"description": "The extract processors information. One matched extract processor will be used to process documents based on the classify processor result. If no classify processor is specified, the first extract processor will be used.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1ProcessorInfo"
+},
+"type": "array"
+},
+"inputPath": {
+"description": "The input Cloud Storage folder. All files under this folder will be imported to Document Warehouse. Format: `gs:///`.",
+"type": "string"
+},
+"pipelineConfig": {
+"$ref": "GoogleCloudContentwarehouseV1IngestPipelineConfig",
+"description": "Optional. The config for the Cloud Storage Ingestion with DocAI Processors pipeline. It provides additional customization options to run the pipeline and can be skipped if it is not applicable."
+},
+"processorResultsFolderPath": {
+"description": "The Cloud Storage folder path used to store the raw results from processors. Format: `gs:///`.",
+"type": "string"
+},
+"skipIngestedDocuments": {
+"description": "The flag whether to skip ingested documents. If it is set to true, documents in Cloud Storage contains key \"status\" with value \"status=ingested\" in custom metadata will be skipped to ingest.",
+"type": "boolean"
+},
+"splitClassifyProcessorInfo": {
+"$ref": "GoogleCloudContentwarehouseV1ProcessorInfo",
+"description": "The split and classify processor information. The split and classify result will be used to find a matched extract processor."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1GetDocumentRequest": {
+"description": "Request message for DocumentService.GetDocument.",
+"id": "GoogleCloudContentwarehouseV1GetDocumentRequest",
+"properties": {
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the end user, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1HistogramQuery": {
+"description": "The histogram request.",
+"id": "GoogleCloudContentwarehouseV1HistogramQuery",
+"properties": {
+"filters": {
+"$ref": "GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter",
+"description": "Optional. Filter the result of histogram query by the property names. It only works with histogram query count('FilterableProperties'). It is an optional. It will perform histogram on all the property names for all the document schemas. Setting this field will have a better performance."
+},
+"histogramQuery": {
+"description": "An expression specifies a histogram request against matching documents for searches. See SearchDocumentsRequest.histogram_queries for details about syntax.",
+"type": "string"
+},
+"requirePreciseResultSize": {
+"description": "Controls if the histogram query requires the return of a precise count. Enable this flag may adversely impact performance. Defaults to true.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter": {
+"id": "GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter",
+"properties": {
+"documentSchemas": {
+"description": "This filter specifies the exact document schema(s) Document.document_schema_name to run histogram query against. It is optional. It will perform histogram for property names for all the document schemas if it is not set. At most 10 document schema names are allowed. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"propertyNames": {
+"description": "It is optional. It will perform histogram for all the property names if it is not set. The properties need to be defined with the is_filterable flag set to true and the name of the property should be in the format: \"schemaId.propertyName\". The property needs to be defined in the schema. Example: the schema id is abc. Then the name of property for property MORTGAGE_TYPE will be \"abc.MORTGAGE_TYPE\".",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"yAxis": {
+"description": "By default, the y_axis is HISTOGRAM_YAXIS_DOCUMENT if this field is not set.",
+"enum": [
+"HISTOGRAM_YAXIS_DOCUMENT",
+"HISTOGRAM_YAXIS_PROPERTY"
+],
+"enumDescriptions": [
+"Count the documents per property name.",
+"Count the properties per property name."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1HistogramQueryResult": {
+"description": "Histogram result that matches HistogramQuery specified in searches.",
+"id": "GoogleCloudContentwarehouseV1HistogramQueryResult",
+"properties": {
+"histogram": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "A map from the values of the facet associated with distinct values to the number of matching entries with corresponding value. The key format is: * (for string histogram) string values stored in the field.",
+"type": "object"
+},
+"histogramQuery": {
+"description": "Requested histogram expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1IngestPipelineConfig": {
+"description": "The ingestion pipeline config.",
+"id": "GoogleCloudContentwarehouseV1IngestPipelineConfig",
+"properties": {
+"cloudFunction": {
+"description": "The Cloud Function resource name. The Cloud Function needs to live inside consumer project and is accessible to Document AI Warehouse P4SA. Only Cloud Functions V2 is supported. Cloud function execution should complete within 5 minutes or this file ingestion may fail due to timeout. Format: `https://{region}-{project_id}.cloudfunctions.net/{cloud_function}` The following keys are available the request json payload. * display_name * properties * plain_text * reference_id * document_schema_name * raw_document_path * raw_document_file_type The following keys from the cloud function json response payload will be ingested to the Document AI Warehouse as part of Document proto content and/or related information. The original values will be overridden if any key is present in the response. * display_name * properties * plain_text * document_acl_policy * folder",
+"type": "string"
+},
+"documentAclPolicy": {
+"$ref": "GoogleIamV1Policy",
+"description": "The document level acl policy config. This refers to an Identity and Access (IAM) policy, which specifies access controls for all documents ingested by the pipeline. The role and members under the policy needs to be specified. The following roles are supported for document level acl control: * roles/contentwarehouse.documentAdmin * roles/contentwarehouse.documentEditor * roles/contentwarehouse.documentViewer The following members are supported for document level acl control: * user:user-email@example.com * group:group-email@example.com Note that for documents searched with LLM, only single level user or group acl check is supported."
+},
+"enableDocumentTextExtraction": {
+"description": "The document text extraction enabled flag. If the flag is set to true, DWH will perform text extraction on the raw document.",
+"type": "boolean"
+},
+"folder": {
+"description": "Optional. The name of the folder to which all ingested documents will be linked during ingestion process. Format is `projects/{project}/locations/{location}/documents/{folder_id}`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1InitializeProjectRequest": {
+"description": "Request message for projectService.InitializeProject",
+"id": "GoogleCloudContentwarehouseV1InitializeProjectRequest",
+"properties": {
+"accessControlMode": {
+"description": "Required. The access control mode for accessing the customer data",
+"enum": [
+"ACL_MODE_UNKNOWN",
+"ACL_MODE_UNIVERSAL_ACCESS",
+"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_BYOID",
+"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI"
+],
+"enumDescriptions": [
+"This value is required by protobuf best practices",
+"Universal Access: No document level access control.",
+"Document level access control with customer own Identity Service.",
+"Document level access control using Google Cloud Identity."
+],
+"type": "string"
+},
+"databaseType": {
+"description": "Required. The type of database used to store customer data",
+"enum": [
+"DB_UNKNOWN",
+"DB_INFRA_SPANNER",
+"DB_CLOUD_SQL_POSTGRES"
+],
+"enumDeprecated": [
+false,
+false,
+true
+],
+"enumDescriptions": [
+"This value is required by protobuf best practices",
+"Internal Spanner",
+"Cloud Sql with a Postgres Sql instance"
+],
+"type": "string"
+},
+"documentCreatorDefaultRole": {
+"description": "Optional. The default role for the person who create a document.",
+"enum": [
+"DOCUMENT_CREATOR_DEFAULT_ROLE_UNSPECIFIED",
+"DOCUMENT_ADMIN",
+"DOCUMENT_EDITOR",
+"DOCUMENT_VIEWER"
+],
+"enumDescriptions": [
+"Unspecified, will be default to document admin role.",
+"Document Admin, same as contentwarehouse.googleapis.com/documentAdmin.",
+"Document Editor, same as contentwarehouse.googleapis.com/documentEditor.",
+"Document Viewer, same as contentwarehouse.googleapis.com/documentViewer."
+],
+"type": "string"
+},
+"enableCalUserEmailLogging": {
+"description": "Optional. Whether to enable CAL user email logging.",
+"type": "boolean"
+},
+"kmsKey": {
+"description": "Optional. The KMS key used for CMEK encryption. It is required that the kms key is in the same region as the endpoint. The same key will be used for all provisioned resources, if encryption is available. If the kms_key is left empty, no encryption will be enforced.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1InitializeProjectResponse": {
+"description": "Response message for projectService.InitializeProject",
+"id": "GoogleCloudContentwarehouseV1InitializeProjectResponse",
+"properties": {
+"message": {
+"description": "The message of the project initialization process.",
+"type": "string"
+},
+"state": {
+"description": "The state of the project initialization process.",
+"enum": [
+"STATE_UNSPECIFIED",
+"SUCCEEDED",
+"FAILED",
+"CANCELLED",
+"RUNNING"
+],
+"enumDescriptions": [
+"Clients should never see this.",
+"Finished project initialization without error.",
+"Finished project initialization with an error.",
+"Client canceled the LRO.",
+"Ask the customer to check the operation for results."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1IntegerArray": {
+"description": "Integer values.",
+"id": "GoogleCloudContentwarehouseV1IntegerArray",
+"properties": {
+"values": {
+"description": "List of integer values.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1IntegerTypeOptions": {
+"description": "Configurations for an integer property.",
+"id": "GoogleCloudContentwarehouseV1IntegerTypeOptions",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1InvalidRule": {
+"description": "A triggered rule that failed the validation check(s) after parsing.",
+"id": "GoogleCloudContentwarehouseV1InvalidRule",
+"properties": {
+"error": {
+"description": "Validation error on a parsed expression.",
+"type": "string"
+},
+"rule": {
+"$ref": "GoogleCloudContentwarehouseV1Rule",
+"description": "Triggered rule."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ListDocumentSchemasResponse": {
+"description": "Response message for DocumentSchemaService.ListDocumentSchemas.",
+"id": "GoogleCloudContentwarehouseV1ListDocumentSchemasResponse",
+"properties": {
+"documentSchemas": {
+"description": "The document schemas from the specified parent.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentSchema"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ListLinkedSourcesRequest": {
+"description": "Response message for DocumentLinkService.ListLinkedSources.",
+"id": "GoogleCloudContentwarehouseV1ListLinkedSourcesRequest",
+"properties": {
+"pageSize": {
+"description": "The maximum number of document-links to return. The service may return fewer than this value. If unspecified, at most 50 document-links will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListLinkedSources` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListLinkedSources` must match the call that provided the page token.",
+"type": "string"
+},
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the document creator, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ListLinkedSourcesResponse": {
+"description": "Response message for DocumentLinkService.ListLinkedSources.",
+"id": "GoogleCloudContentwarehouseV1ListLinkedSourcesResponse",
+"properties": {
+"documentLinks": {
+"description": "Source document-links.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentLink"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ListLinkedTargetsRequest": {
+"description": "Request message for DocumentLinkService.ListLinkedTargets.",
+"id": "GoogleCloudContentwarehouseV1ListLinkedTargetsRequest",
+"properties": {
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the document creator, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ListLinkedTargetsResponse": {
+"description": "Response message for DocumentLinkService.ListLinkedTargets.",
+"id": "GoogleCloudContentwarehouseV1ListLinkedTargetsResponse",
+"properties": {
+"documentLinks": {
+"description": "Target document-links.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentLink"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ListRuleSetsResponse": {
+"description": "Response message for RuleSetService.ListRuleSets.",
+"id": "GoogleCloudContentwarehouseV1ListRuleSetsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"ruleSets": {
+"description": "The rule sets from the specified parent.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1RuleSet"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ListSynonymSetsResponse": {
+"description": "Response message for SynonymSetService.ListSynonymSets.",
+"id": "GoogleCloudContentwarehouseV1ListSynonymSetsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A page token, received from a previous `ListSynonymSets` call. Provide this to retrieve the subsequent page.",
+"type": "string"
+},
+"synonymSets": {
+"description": "The synonymSets from the specified parent.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1SynonymSet"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1LockDocumentRequest": {
+"description": "Request message for DocumentService.LockDocument.",
+"id": "GoogleCloudContentwarehouseV1LockDocumentRequest",
+"properties": {
+"collectionId": {
+"description": "The collection the document connects to.",
+"type": "string"
+},
+"lockingUser": {
+"$ref": "GoogleCloudContentwarehouseV1UserInfo",
+"description": "The user information who locks the document."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1MapProperty": {
+"description": "Map property value. Represents a structured entries of key value pairs, consisting of field names which map to dynamically typed values.",
+"id": "GoogleCloudContentwarehouseV1MapProperty",
+"properties": {
+"fields": {
+"additionalProperties": {
+"$ref": "GoogleCloudContentwarehouseV1Value"
+},
+"description": "Unordered map of dynamically typed values.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1MapTypeOptions": {
+"description": "Configurations for a Map property.",
+"id": "GoogleCloudContentwarehouseV1MapTypeOptions",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1MergeFieldsOptions": {
+"description": "Options for merging updated fields.",
+"id": "GoogleCloudContentwarehouseV1MergeFieldsOptions",
+"properties": {
+"replaceMessageFields": {
+"description": "When merging message fields, the default behavior is to merge the content of two message fields together. If you instead want to use the field from the source message to replace the corresponding field in the destination message, set this flag to true. When this flag is set, specified submessage fields that are missing in source will be cleared in destination.",
+"type": "boolean"
+},
+"replaceRepeatedFields": {
+"description": "When merging repeated fields, the default behavior is to append entries from the source repeated field to the destination repeated field. If you instead want to keep only the entries from the source repeated field, set this flag to true. If you want to replace a repeated field within a message field on the destination message, you must set both replace_repeated_fields and replace_message_fields to true, otherwise the repeated fields will be appended.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ProcessWithDocAiPipeline": {
+"description": "The configuration of processing documents in Document Warehouse with DocAi processors pipeline.",
+"id": "GoogleCloudContentwarehouseV1ProcessWithDocAiPipeline",
+"properties": {
+"documents": {
+"description": "The list of all the resource names of the documents to be processed. Format: projects/{project_number}/locations/{location}/documents/{document_id}.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"exportFolderPath": {
+"description": "The Cloud Storage folder path used to store the exported documents before being sent to CDW. Format: `gs:///`.",
+"type": "string"
+},
+"processorInfo": {
+"$ref": "GoogleCloudContentwarehouseV1ProcessorInfo",
+"description": "The CDW processor information."
+},
+"processorResultsFolderPath": {
+"description": "The Cloud Storage folder path used to store the raw results from processors. Format: `gs:///`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ProcessorInfo": {
+"description": "The DocAI processor information.",
+"id": "GoogleCloudContentwarehouseV1ProcessorInfo",
+"properties": {
+"documentType": {
+"description": "The processor will process the documents with this document type.",
+"type": "string"
+},
+"processorName": {
+"description": "The processor resource name. Format is `projects/{project}/locations/{location}/processors/{processor}`, or `projects/{project}/locations/{location}/processors/{processor}/processorVersions/{processorVersion}`",
+"type": "string"
+},
+"schemaName": {
+"description": "The Document schema resource name. All documents processed by this processor will use this schema. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ProjectStatus": {
+"description": "Status of a project, including the project state, dbType, aclMode and etc.",
+"id": "GoogleCloudContentwarehouseV1ProjectStatus",
+"properties": {
+"accessControlMode": {
+"description": "Access control mode.",
+"enum": [
+"ACL_MODE_UNKNOWN",
+"ACL_MODE_UNIVERSAL_ACCESS",
+"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_BYOID",
+"ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI"
+],
+"enumDescriptions": [
+"This value is required by protobuf best practices",
+"Universal Access: No document level access control.",
+"Document level access control with customer own Identity Service.",
+"Document level access control using Google Cloud Identity."
+],
+"type": "string"
+},
+"databaseType": {
+"description": "Database type.",
+"enum": [
+"DB_UNKNOWN",
+"DB_INFRA_SPANNER",
+"DB_CLOUD_SQL_POSTGRES"
+],
+"enumDeprecated": [
+false,
+false,
+true
+],
+"enumDescriptions": [
+"This value is required by protobuf best practices",
+"Internal Spanner",
+"Cloud Sql with a Postgres Sql instance"
+],
+"type": "string"
+},
+"documentCreatorDefaultRole": {
+"description": "The default role for the person who create a document.",
+"type": "string"
+},
+"location": {
+"description": "The location of the queried project.",
+"type": "string"
+},
+"qaEnabled": {
+"description": "If the qa is enabled on this project.",
+"type": "boolean"
+},
+"state": {
+"description": "State of the project.",
+"enum": [
+"PROJECT_STATE_UNSPECIFIED",
+"PROJECT_STATE_PENDING",
+"PROJECT_STATE_COMPLETED",
+"PROJECT_STATE_FAILED",
+"PROJECT_STATE_DELETING",
+"PROJECT_STATE_DELETING_FAILED",
+"PROJECT_STATE_DELETED",
+"PROJECT_STATE_NOT_FOUND"
+],
+"enumDescriptions": [
+"Default status, required by protobuf best practices.",
+"The project is in the middle of a provision process.",
+"All dependencies have been provisioned.",
+"A provision process was previously initiated, but failed.",
+"The project is in the middle of a deletion process.",
+"A deleting process was initiated, but failed.",
+"The project is deleted.",
+"The project is not found."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1Property": {
+"description": "Property of a document.",
+"id": "GoogleCloudContentwarehouseV1Property",
+"properties": {
+"dateTimeValues": {
+"$ref": "GoogleCloudContentwarehouseV1DateTimeArray",
+"description": "Date time property values. It is not supported by CMEK compliant deployment."
+},
+"enumValues": {
+"$ref": "GoogleCloudContentwarehouseV1EnumArray",
+"description": "Enum property values."
+},
+"floatValues": {
+"$ref": "GoogleCloudContentwarehouseV1FloatArray",
+"description": "Float property values."
+},
+"integerValues": {
+"$ref": "GoogleCloudContentwarehouseV1IntegerArray",
+"description": "Integer property values."
+},
+"mapProperty": {
+"$ref": "GoogleCloudContentwarehouseV1MapProperty",
+"description": "Map property values."
+},
+"name": {
+"description": "Required. Must match the name of a PropertyDefinition in the DocumentSchema.",
+"type": "string"
+},
+"propertyValues": {
+"$ref": "GoogleCloudContentwarehouseV1PropertyArray",
+"description": "Nested structured data property values."
+},
+"textValues": {
+"$ref": "GoogleCloudContentwarehouseV1TextArray",
+"description": "String/text property values."
+},
+"timestampValues": {
+"$ref": "GoogleCloudContentwarehouseV1TimestampArray",
+"description": "Timestamp property values. It is not supported by CMEK compliant deployment."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1PropertyArray": {
+"description": "Property values.",
+"id": "GoogleCloudContentwarehouseV1PropertyArray",
+"properties": {
+"properties": {
+"description": "List of property values.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1Property"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1PropertyDefinition": {
+"description": "Defines the metadata for a schema property.",
+"id": "GoogleCloudContentwarehouseV1PropertyDefinition",
+"properties": {
+"dateTimeTypeOptions": {
+"$ref": "GoogleCloudContentwarehouseV1DateTimeTypeOptions",
+"description": "Date time property. It is not supported by CMEK compliant deployment."
+},
+"displayName": {
+"description": "The display-name for the property, used for front-end.",
+"type": "string"
+},
+"enumTypeOptions": {
+"$ref": "GoogleCloudContentwarehouseV1EnumTypeOptions",
+"description": "Enum/categorical property."
+},
+"floatTypeOptions": {
+"$ref": "GoogleCloudContentwarehouseV1FloatTypeOptions",
+"description": "Float property."
+},
+"integerTypeOptions": {
+"$ref": "GoogleCloudContentwarehouseV1IntegerTypeOptions",
+"description": "Integer property."
+},
+"isFilterable": {
+"description": "Whether the property can be filtered. If this is a sub-property, all the parent properties must be marked filterable.",
+"type": "boolean"
+},
+"isMetadata": {
+"description": "Whether the property is user supplied metadata. This out-of-the box placeholder setting can be used to tag derived properties. Its value and interpretation logic should be implemented by API user.",
+"type": "boolean"
+},
+"isRepeatable": {
+"description": "Whether the property can have multiple values.",
+"type": "boolean"
+},
+"isRequired": {
+"description": "Whether the property is mandatory. Default is 'false', i.e. populating property value can be skipped. If 'true' then user must populate the value for this property.",
+"type": "boolean"
+},
+"isSearchable": {
+"description": "Indicates that the property should be included in a global search.",
+"type": "boolean"
+},
+"mapTypeOptions": {
+"$ref": "GoogleCloudContentwarehouseV1MapTypeOptions",
+"description": "Map property."
+},
+"name": {
+"description": "Required. The name of the metadata property. Must be unique within a document schema and is case insensitive. Names must be non-blank, start with a letter, and can contain alphanumeric characters and: /, :, -, _, and .",
+"type": "string"
+},
+"propertyTypeOptions": {
+"$ref": "GoogleCloudContentwarehouseV1PropertyTypeOptions",
+"description": "Nested structured data property."
+},
+"retrievalImportance": {
+"description": "The retrieval importance of the property during search.",
+"enum": [
+"RETRIEVAL_IMPORTANCE_UNSPECIFIED",
+"HIGHEST",
+"HIGHER",
+"HIGH",
+"MEDIUM",
+"LOW",
+"LOWEST"
+],
+"enumDescriptions": [
+"No importance specified. Default medium importance.",
+"Highest importance.",
+"Higher importance.",
+"High importance.",
+"Medium importance.",
+"Low importance (negative).",
+"Lowest importance (negative)."
+],
+"type": "string"
+},
+"schemaSources": {
+"description": "The mapping information between this property to another schema source.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource"
+},
+"type": "array"
+},
+"textTypeOptions": {
+"$ref": "GoogleCloudContentwarehouseV1TextTypeOptions",
+"description": "Text/string property."
+},
+"timestampTypeOptions": {
+"$ref": "GoogleCloudContentwarehouseV1TimestampTypeOptions",
+"description": "Timestamp property. It is not supported by CMEK compliant deployment."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource": {
+"description": "The schema source information.",
+"id": "GoogleCloudContentwarehouseV1PropertyDefinitionSchemaSource",
+"properties": {
+"name": {
+"description": "The schema name in the source.",
+"type": "string"
+},
+"processorType": {
+"description": "The Doc AI processor type name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1PropertyFilter": {
+"id": "GoogleCloudContentwarehouseV1PropertyFilter",
+"properties": {
+"condition": {
+"description": "The filter condition. The syntax for this expression is a subset of SQL syntax. Supported operators are: `=`, `!=`, `<`, `<=`, `>`, `>=`, and `~~` where the left of the operator is a property name and the right of the operator is a number or a quoted string. You must escape backslash (\\\\) and quote (\\\") characters. `~~` is the LIKE operator. The right of the operator must be a string. The only supported property data type for LIKE is text_values. It provides semantic search functionality by parsing, stemming and doing synonyms expansion against the input query. It matches if the property contains semantic similar content to the query. It is not regex matching or wildcard matching. For example, \"property.company ~~ \\\"google\\\"\" will match records whose property `property.compnay` have values like \"Google Inc.\", \"Google LLC\" or \"Google Company\". Supported functions are `LOWER([property_name])` to perform a case insensitive match and `EMPTY([property_name])` to filter on the existence of a key. Boolean expressions (AND/OR/NOT) are supported up to 3 levels of nesting (for example, \"((A AND B AND C) OR NOT D) AND E\"), a maximum of 100 comparisons or functions are allowed in the expression. The expression must be < 6000 bytes in length. Only properties that are marked filterable are allowed (PropertyDefinition.is_filterable). Property names do not need to be prefixed by the document schema id (as is the case with histograms), however property names will need to be prefixed by its parent hierarchy, if any. For example: top_property_name.sub_property_name. Sample Query: `(LOWER(driving_license)=\"class \\\"a\\\"\" OR EMPTY(driving_license)) AND driving_years > 10` CMEK compliant deployment only supports: * Operators: `=`, `<`, `<=`, `>`, and `>=`. * Boolean expressions: AND and OR.",
+"type": "string"
+},
+"documentSchemaName": {
+"description": "The Document schema name Document.document_schema_name. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1PropertyTypeOptions": {
+"description": "Configurations for a nested structured data property.",
+"id": "GoogleCloudContentwarehouseV1PropertyTypeOptions",
+"properties": {
+"propertyDefinitions": {
+"description": "Required. List of property definitions.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1PropertyDefinition"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1PublishAction": {
+"description": "Represents the action responsible for publishing messages to a Pub/Sub topic.",
+"id": "GoogleCloudContentwarehouseV1PublishAction",
+"properties": {
+"messages": {
+"description": "Messages to be published.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"topicId": {
+"description": "The topic id in the Pub/Sub service for which messages will be published to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1QAResult": {
+"description": "Additional result info for the question-answering feature.",
+"id": "GoogleCloudContentwarehouseV1QAResult",
+"properties": {
+"confidenceScore": {
+"description": "The calibrated confidence score for this document, in the range [0., 1.]. This represents the confidence level for whether the returned document and snippet answers the user's query.",
+"format": "float",
+"type": "number"
+},
+"highlights": {
+"description": "Highlighted sections in the snippet.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1QAResultHighlight"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1QAResultHighlight": {
+"description": "A text span in the search text snippet that represents a highlighted section (answer context, highly relevant sentence, etc.).",
+"id": "GoogleCloudContentwarehouseV1QAResultHighlight",
+"properties": {
+"endIndex": {
+"description": "End index of the highlight, exclusive.",
+"format": "int32",
+"type": "integer"
+},
+"startIndex": {
+"description": "Start index of the highlight.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RemoveFromFolderAction": {
+"description": "Represents the action responsible for remove a document from a specific folder.",
+"id": "GoogleCloudContentwarehouseV1RemoveFromFolderAction",
+"properties": {
+"condition": {
+"description": "Condition of the action to be executed.",
+"type": "string"
+},
+"folder": {
+"description": "Name of the folder under which new document is to be added. Format: projects/{project_number}/locations/{location}/documents/{document_id}.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RequestMetadata": {
+"description": "Meta information is used to improve the performance of the service.",
+"id": "GoogleCloudContentwarehouseV1RequestMetadata",
+"properties": {
+"userInfo": {
+"$ref": "GoogleCloudContentwarehouseV1UserInfo",
+"description": "Provides user unique identification and groups information."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1ResponseMetadata": {
+"description": "Additional information returned to client, such as debugging information.",
+"id": "GoogleCloudContentwarehouseV1ResponseMetadata",
+"properties": {
+"requestId": {
+"description": "A unique id associated with this call. This id is logged for tracking purpose.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1Rule": {
+"description": "Represents the rule for a content warehouse trigger.",
+"id": "GoogleCloudContentwarehouseV1Rule",
+"properties": {
+"actions": {
+"description": "List of actions that are executed when the rule is satisfied.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1Action"
+},
+"type": "array"
+},
+"condition": {
+"description": "Represents the conditional expression to be evaluated. Expression should evaluate to a boolean result. When the condition is true actions are executed. Example: user_role = \"hsbc_role_1\" AND doc.salary > 20000",
+"type": "string"
+},
+"description": {
+"description": "Short description of the rule and its context.",
+"type": "string"
+},
+"ruleId": {
+"description": "ID of the rule. It has to be unique across all the examples. This is managed internally.",
+"type": "string"
+},
+"triggerType": {
+"description": "Identifies the trigger type for running the policy.",
+"enum": [
+"UNKNOWN",
+"ON_CREATE",
+"ON_UPDATE",
+"ON_CREATE_LINK",
+"ON_DELETE_LINK"
+],
+"enumDescriptions": [
+"Trigger for unknown action.",
+"Trigger for create document action.",
+"Trigger for update document action.",
+"Trigger for create link action.",
+"Trigger for delete link action."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RuleActionsPair": {
+"description": "Represents a rule and outputs of associated actions.",
+"id": "GoogleCloudContentwarehouseV1RuleActionsPair",
+"properties": {
+"actionOutputs": {
+"description": "Outputs of executing the actions associated with the above rule.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1ActionOutput"
+},
+"type": "array"
+},
+"rule": {
+"$ref": "GoogleCloudContentwarehouseV1Rule",
+"description": "Represents the rule."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RuleEngineOutput": {
+"description": "Records the output of Rule Engine including rule evaluation and actions result.",
+"id": "GoogleCloudContentwarehouseV1RuleEngineOutput",
+"properties": {
+"actionExecutorOutput": {
+"$ref": "GoogleCloudContentwarehouseV1ActionExecutorOutput",
+"description": "Output from Action Executor containing rule and corresponding actions execution result."
+},
+"documentName": {
+"description": "Name of the document against which the rules and actions were evaluated.",
+"type": "string"
+},
+"ruleEvaluatorOutput": {
+"$ref": "GoogleCloudContentwarehouseV1RuleEvaluatorOutput",
+"description": "Output from Rule Evaluator containing matched, unmatched and invalid rules."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RuleEvaluatorOutput": {
+"description": "Represents the output of the Rule Evaluator.",
+"id": "GoogleCloudContentwarehouseV1RuleEvaluatorOutput",
+"properties": {
+"invalidRules": {
+"description": "A subset of triggered rules that failed the validation check(s) after parsing.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1InvalidRule"
+},
+"type": "array"
+},
+"matchedRules": {
+"description": "A subset of triggered rules that are evaluated true for a given request.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1Rule"
+},
+"type": "array"
+},
+"triggeredRules": {
+"description": "List of rules fetched from database for the given request trigger type.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1Rule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RuleSet": {
+"description": "Represents a set of rules from a single customer.",
+"id": "GoogleCloudContentwarehouseV1RuleSet",
+"properties": {
+"description": {
+"description": "Short description of the rule-set.",
+"type": "string"
+},
+"name": {
+"description": "The resource name of the rule set. Managed internally. Format: projects/{project_number}/locations/{location}/ruleSet/{rule_set_id}. The name is ignored when creating a rule set.",
+"type": "string"
+},
+"rules": {
+"description": "List of rules given by the customer.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1Rule"
+},
+"type": "array"
+},
+"source": {
+"description": "Source of the rules i.e., customer name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RunPipelineMetadata": {
+"description": "Metadata message of RunPipeline method.",
+"id": "GoogleCloudContentwarehouseV1RunPipelineMetadata",
+"properties": {
+"exportToCdwPipelineMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RunPipelineMetadataExportToCdwPipelineMetadata",
+"description": "The pipeline metadata for Export-to-CDW pipeline."
+},
+"failedFileCount": {
+"description": "Number of files that have failed at some point in the pipeline.",
+"format": "int32",
+"type": "integer"
+},
+"gcsIngestPipelineMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RunPipelineMetadataGcsIngestPipelineMetadata",
+"description": "The pipeline metadata for GcsIngest pipeline."
+},
+"individualDocumentStatuses": {
+"description": "The list of response details of each document.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1RunPipelineMetadataIndividualDocumentStatus"
+},
+"type": "array"
+},
+"processWithDocAiPipelineMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RunPipelineMetadataProcessWithDocAiPipelineMetadata",
+"description": "The pipeline metadata for Process-with-DocAi pipeline."
+},
+"totalFileCount": {
+"description": "Number of files that were processed by the pipeline.",
+"format": "int32",
+"type": "integer"
+},
+"userInfo": {
+"$ref": "GoogleCloudContentwarehouseV1UserInfo",
+"description": "User unique identification and groups information."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RunPipelineMetadataExportToCdwPipelineMetadata": {
+"description": "The metadata message for Export-to-CDW pipeline.",
+"id": "GoogleCloudContentwarehouseV1RunPipelineMetadataExportToCdwPipelineMetadata",
+"properties": {
+"docAiDataset": {
+"description": "The output CDW dataset resource name.",
+"type": "string"
+},
+"documents": {
+"description": "The input list of all the resource names of the documents to be exported.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"outputPath": {
+"description": "The output Cloud Storage folder in this pipeline.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RunPipelineMetadataGcsIngestPipelineMetadata": {
+"description": "The metadata message for GcsIngest pipeline.",
+"id": "GoogleCloudContentwarehouseV1RunPipelineMetadataGcsIngestPipelineMetadata",
+"properties": {
+"inputPath": {
+"description": "The input Cloud Storage folder in this pipeline. Format: `gs:///`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RunPipelineMetadataIndividualDocumentStatus": {
+"description": "The status of processing a document.",
+"id": "GoogleCloudContentwarehouseV1RunPipelineMetadataIndividualDocumentStatus",
+"properties": {
+"documentId": {
+"description": "Document identifier of an existing document.",
+"type": "string"
+},
+"status": {
+"$ref": "GoogleRpcStatus",
+"description": "The status processing the document."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RunPipelineMetadataProcessWithDocAiPipelineMetadata": {
+"description": "The metadata message for Process-with-DocAi pipeline.",
+"id": "GoogleCloudContentwarehouseV1RunPipelineMetadataProcessWithDocAiPipelineMetadata",
+"properties": {
+"documents": {
+"description": "The input list of all the resource names of the documents to be processed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"processorInfo": {
+"$ref": "GoogleCloudContentwarehouseV1ProcessorInfo",
+"description": "The DocAI processor to process the documents with."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1RunPipelineRequest": {
+"description": "Request message for DocumentService.RunPipeline.",
+"id": "GoogleCloudContentwarehouseV1RunPipelineRequest",
+"properties": {
+"exportCdwPipeline": {
+"$ref": "GoogleCloudContentwarehouseV1ExportToCdwPipeline",
+"description": "Export docuemnts from Document Warehouse to CDW for training purpose."
+},
+"gcsIngestPipeline": {
+"$ref": "GoogleCloudContentwarehouseV1GcsIngestPipeline",
+"description": "Cloud Storage ingestion pipeline."
+},
+"gcsIngestWithDocAiProcessorsPipeline": {
+"$ref": "GoogleCloudContentwarehouseV1GcsIngestWithDocAiProcessorsPipeline",
+"description": "Use DocAI processors to process documents in Cloud Storage and ingest them to Document Warehouse."
+},
+"processWithDocAiPipeline": {
+"$ref": "GoogleCloudContentwarehouseV1ProcessWithDocAiPipeline",
+"description": "Use a DocAI processor to process documents in Document Warehouse, and re-ingest the updated results into Document Warehouse."
+},
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the end user, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1SearchDocumentsRequest": {
+"description": "Request message for DocumentService.SearchDocuments.",
+"id": "GoogleCloudContentwarehouseV1SearchDocumentsRequest",
+"properties": {
+"documentQuery": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentQuery",
+"description": "Query used to search against documents (keyword, filters, etc.)."
+},
+"histogramQueries": {
+"description": "An expression specifying a histogram request against matching documents. Expression syntax is an aggregation function call with histogram facets and other options. The following aggregation functions are supported: * `count(string_histogram_facet)`: Count the number of matching entities for each distinct attribute value. Data types: * Histogram facet (aka filterable properties): Facet names with format .. Facets will have the format of: `a-zA-Z`. If the facet is a child facet, then the parent hierarchy needs to be specified separated by dots in the prefix after the schema id. Thus, the format for a multi- level facet is: .. . Example: schema123.root_parent_facet.middle_facet.child_facet * DocumentSchemaId: (with no schema id prefix) to get histograms for each document type (returns the schema id path, e.g. projects/12345/locations/us-west/documentSchemas/abc123). Example expression: * Document type counts: count('DocumentSchemaId') * For schema id, abc123, get the counts for MORTGAGE_TYPE: count('abc123.MORTGAGE_TYPE')",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1HistogramQuery"
+},
+"type": "array"
+},
+"offset": {
+"description": "An integer that specifies the current offset (that is, starting result location, amongst the documents deemed by the API as relevant) in search results. This field is only considered if page_token is unset. The maximum allowed value is 5000. Otherwise an error is thrown. For example, 0 means to return results starting from the first matching document, and 10 means to return from the 11th document. This can be used for pagination, (for example, pageSize = 10 and offset = 10 means to return from the second page).",
+"format": "int32",
+"type": "integer"
+},
+"orderBy": {
+"description": "The criteria determining how search results are sorted. For non-empty query, default is `\"relevance desc\"`. For empty query, default is `\"upload_date desc\"`. Supported options are: * `\"relevance desc\"`: By relevance descending, as determined by the API algorithms. * `\"upload_date desc\"`: By upload date descending. * `\"upload_date\"`: By upload date ascending. * `\"update_date desc\"`: By last updated date descending. * `\"update_date\"`: By last updated date ascending. * `\"retrieval_importance desc\"`: By retrieval importance of properties descending. This feature is still under development, please do not use unless otherwise instructed to do so.",
+"type": "string"
+},
+"pageSize": {
+"description": "A limit on the number of documents returned in the search results. Increasing this value above the default value of 10 can increase search response time. The value can be between 1 and 100.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token specifying the current offset within search results. See SearchDocumentsResponse.next_page_token for an explanation of how to obtain the next set of query results.",
+"type": "string"
+},
+"qaSizeLimit": {
+"description": "Experimental, do not use. The limit on the number of documents returned for the question-answering feature. To enable the question-answering feature, set [DocumentQuery].is_nl_query to true.",
+"format": "int32",
+"type": "integer"
+},
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the end user, used to enforce access control and improve the search quality of the service."
+},
+"requireTotalSize": {
+"description": "Controls if the search document request requires the return of a total size of matched documents. See SearchDocumentsResponse.total_size. Enabling this flag may adversely impact performance. Hint: If this is used with pagination, set this flag on the initial query but set this to false on subsequent page calls (keep the total count locally). Defaults to false.",
+"type": "boolean"
+},
+"totalResultSize": {
+"description": "Controls if the search document request requires the return of a total size of matched documents. See SearchDocumentsResponse.total_size.",
+"enum": [
+"TOTAL_RESULT_SIZE_UNSPECIFIED",
+"ESTIMATED_SIZE",
+"ACTUAL_SIZE"
+],
+"enumDescriptions": [
+"Total number calculation will be skipped.",
+"Estimate total number. The total result size will be accurated up to 10,000. This option will add cost and latency to your request.",
+"It may adversely impact performance. The limit is 1000,000."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1SearchDocumentsResponse": {
+"description": "Response message for DocumentService.SearchDocuments.",
+"id": "GoogleCloudContentwarehouseV1SearchDocumentsResponse",
+"properties": {
+"histogramQueryResults": {
+"description": "The histogram results that match with the specified SearchDocumentsRequest.histogram_queries.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1HistogramQueryResult"
+},
+"type": "array"
+},
+"matchingDocuments": {
+"description": "The document entities that match the specified SearchDocumentsRequest.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument"
+},
+"type": "array"
+},
+"metadata": {
+"$ref": "GoogleCloudContentwarehouseV1ResponseMetadata",
+"description": "Additional information for the API invocation, such as the request tracking id."
+},
+"nextPageToken": {
+"description": "The token that specifies the starting position of the next page of results. This field is empty if there are no more results.",
+"type": "string"
+},
+"questionAnswer": {
+"description": "Experimental. Question answer from the query against the document.",
+"type": "string"
+},
+"totalSize": {
+"description": "The total number of matched documents which is available only if the client set SearchDocumentsRequest.require_total_size to `true` or set SearchDocumentsRequest.total_result_size to `ESTIMATED_SIZE` or `ACTUAL_SIZE`. Otherwise, the value will be `-1`. Typically a UI would handle this condition by displaying \"of many\", for example: \"Displaying 10 of many\".",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument": {
+"description": "Document entry with metadata inside SearchDocumentsResponse",
+"id": "GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument",
+"properties": {
+"document": {
+"$ref": "GoogleCloudContentwarehouseV1Document",
+"description": "Document that matches the specified SearchDocumentsRequest. This document only contains indexed metadata information."
+},
+"matchedTokenPageIndices": {
+"description": "Return the 1-based page indices where those pages have one or more matched tokens.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"qaResult": {
+"$ref": "GoogleCloudContentwarehouseV1QAResult",
+"description": "Experimental. Additional result info if the question-answering feature is enabled."
+},
+"searchTextSnippet": {
+"description": "Contains snippets of text from the document full raw text that most closely match a search query's keywords, if available. All HTML tags in the original fields are stripped when returned in this field, and matching query keywords are enclosed in HTML bold tags. If the question-answering feature is enabled, this field will instead contain a snippet that answers the user's natural-language query. No HTML bold tags will be present, and highlights in the answer snippet can be found in QAResult.highlights.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1SetAclRequest": {
+"description": "Request message for DocumentService.SetAcl.",
+"id": "GoogleCloudContentwarehouseV1SetAclRequest",
+"properties": {
+"policy": {
+"$ref": "GoogleIamV1Policy",
+"description": "Required. REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. This refers to an Identity and Access (IAM) policy, which specifies access controls for the Document. You can set ACL with condition for projects only. Supported operators are: `=`, `!=`, `<`, `<=`, `>`, and `>=` where the left of the operator is `DocumentSchemaId` or property name and the right of the operator is a number or a quoted string. You must escape backslash (\\\\) and quote (\\\") characters. Boolean expressions (AND/OR) are supported up to 3 levels of nesting (for example, \"((A AND B AND C) OR D) AND E\"), a maximum of 10 comparisons are allowed in the expression. The expression must be < 6000 bytes in length. Sample condition: `\"DocumentSchemaId = \\\"some schema id\\\" OR SchemaId.floatPropertyName >= 10\"`"
+},
+"projectOwner": {
+"description": "For Set Project ACL only. Authorization check for end user will be ignored when project_owner=true.",
+"type": "boolean"
+},
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the end user, used to enforce access control for the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1SetAclResponse": {
+"description": "Response message for DocumentService.SetAcl.",
+"id": "GoogleCloudContentwarehouseV1SetAclResponse",
+"properties": {
+"metadata": {
+"$ref": "GoogleCloudContentwarehouseV1ResponseMetadata",
+"description": "Additional information for the API invocation, such as the request tracking id."
+},
+"policy": {
+"$ref": "GoogleIamV1Policy",
+"description": "The policy will be attached to a resource (e.g. projecct, document)."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1SynonymSet": {
+"description": "Represents a list of synonyms for a given context. For example a context \"sales\" could contain: Synonym 1: sale, invoice, bill, order Synonym 2: money, credit, finance, payment Synonym 3: shipping, freight, transport Each SynonymSets should be disjoint",
+"id": "GoogleCloudContentwarehouseV1SynonymSet",
+"properties": {
+"context": {
+"description": "This is a freeform field. Example contexts can be \"sales,\" \"engineering,\" \"real estate,\" \"accounting,\" etc. The context can be supplied during search requests.",
+"type": "string"
+},
+"name": {
+"description": "The resource name of the SynonymSet This is mandatory for google.api.resource. Format: projects/{project_number}/locations/{location}/synonymSets/{context}.",
+"type": "string"
+},
+"synonyms": {
+"description": "List of Synonyms for the context.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1SynonymSetSynonym"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1SynonymSetSynonym": {
+"description": "Represents a list of words given by the customer All these words are synonyms of each other.",
+"id": "GoogleCloudContentwarehouseV1SynonymSetSynonym",
+"properties": {
+"words": {
+"description": "For example: sale, invoice, bill, order",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1TextArray": {
+"description": "String/text values.",
+"id": "GoogleCloudContentwarehouseV1TextArray",
+"properties": {
+"values": {
+"description": "List of text values.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1TextTypeOptions": {
+"description": "Configurations for a text property.",
+"id": "GoogleCloudContentwarehouseV1TextTypeOptions",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1TimeFilter": {
+"description": "Filter on create timestamp or update timestamp of documents.",
+"id": "GoogleCloudContentwarehouseV1TimeFilter",
+"properties": {
+"timeField": {
+"description": "Specifies which time field to filter documents on. Defaults to TimeField.UPLOAD_TIME.",
+"enum": [
+"TIME_FIELD_UNSPECIFIED",
+"CREATE_TIME",
+"UPDATE_TIME",
+"DISPOSITION_TIME"
+],
+"enumDescriptions": [
+"Default value.",
+"Earliest document create time.",
+"Latest document update time.",
+"Time when document becomes mutable again."
+],
+"type": "string"
+},
+"timeRange": {
+"$ref": "GoogleTypeInterval"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1TimestampArray": {
+"description": "Timestamp values.",
+"id": "GoogleCloudContentwarehouseV1TimestampArray",
+"properties": {
+"values": {
+"description": "List of timestamp values.",
+"items": {
+"$ref": "GoogleCloudContentwarehouseV1TimestampValue"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1TimestampTypeOptions": {
+"description": "Configurations for a timestamp property.",
+"id": "GoogleCloudContentwarehouseV1TimestampTypeOptions",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1TimestampValue": {
+"description": "Timestamp value type.",
+"id": "GoogleCloudContentwarehouseV1TimestampValue",
+"properties": {
+"textValue": {
+"description": "The string must represent a valid instant in UTC and is parsed using java.time.format.DateTimeFormatter.ISO_INSTANT. e.g. \"2013-09-29T18:46:19Z\"",
+"type": "string"
+},
+"timestampValue": {
+"description": "Timestamp value",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1UpdateDocumentMetadata": {
+"description": "Metadata object for UpdateDocument request (currently empty).",
+"id": "GoogleCloudContentwarehouseV1UpdateDocumentMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1UpdateDocumentRequest": {
+"description": "Request message for DocumentService.UpdateDocument.",
+"id": "GoogleCloudContentwarehouseV1UpdateDocumentRequest",
+"properties": {
+"cloudAiDocumentOption": {
+"$ref": "GoogleCloudContentwarehouseV1CloudAIDocumentOption",
+"description": "Request Option for processing Cloud AI Document in Document Warehouse. This field offers limited support for mapping entities from Cloud AI Document to Warehouse Document. Please consult with product team before using this field and other available options."
+},
+"document": {
+"$ref": "GoogleCloudContentwarehouseV1Document",
+"description": "Required. The document to update."
+},
+"requestMetadata": {
+"$ref": "GoogleCloudContentwarehouseV1RequestMetadata",
+"description": "The meta information collected about the end user, used to enforce access control for the service."
+},
+"updateOptions": {
+"$ref": "GoogleCloudContentwarehouseV1UpdateOptions",
+"description": "Options for the update operation."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1UpdateDocumentResponse": {
+"description": "Response message for DocumentService.UpdateDocument.",
+"id": "GoogleCloudContentwarehouseV1UpdateDocumentResponse",
+"properties": {
+"document": {
+"$ref": "GoogleCloudContentwarehouseV1Document",
+"description": "Updated document after executing update request."
+},
+"metadata": {
+"$ref": "GoogleCloudContentwarehouseV1ResponseMetadata",
+"description": "Additional information for the API invocation, such as the request tracking id."
+},
+"ruleEngineOutput": {
+"$ref": "GoogleCloudContentwarehouseV1RuleEngineOutput",
+"description": "Output from Rule Engine recording the rule evaluator and action executor's output. Refer format in: google/cloud/contentwarehouse/v1/rule_engine.proto"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest": {
+"description": "Request message for DocumentSchemaService.UpdateDocumentSchema.",
+"id": "GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest",
+"properties": {
+"documentSchema": {
+"$ref": "GoogleCloudContentwarehouseV1DocumentSchema",
+"description": "Required. The document schema to update with."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1UpdateOptions": {
+"description": "Options for Update operations.",
+"id": "GoogleCloudContentwarehouseV1UpdateOptions",
+"properties": {
+"mergeFieldsOptions": {
+"$ref": "GoogleCloudContentwarehouseV1MergeFieldsOptions",
+"description": "Options for merging."
+},
+"updateMask": {
+"description": "Field mask for merging Document fields. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"type": "string"
+},
+"updateType": {
+"description": "Type for update.",
+"enum": [
+"UPDATE_TYPE_UNSPECIFIED",
+"UPDATE_TYPE_REPLACE",
+"UPDATE_TYPE_MERGE",
+"UPDATE_TYPE_INSERT_PROPERTIES_BY_NAMES",
+"UPDATE_TYPE_REPLACE_PROPERTIES_BY_NAMES",
+"UPDATE_TYPE_DELETE_PROPERTIES_BY_NAMES",
+"UPDATE_TYPE_MERGE_AND_REPLACE_OR_INSERT_PROPERTIES_BY_NAMES"
+],
+"enumDescriptions": [
+"Defaults to full replace behavior, ie. FULL_REPLACE.",
+"Fully replace all the fields (including previously linked raw document). Any field masks will be ignored.",
+"Merge the fields into the existing entities.",
+"Inserts the properties by names.",
+"Replace the properties by names.",
+"Delete the properties by names.",
+"For each of the property, replaces the property if the it exists, otherwise inserts a new property. And for the rest of the fields, merge them based on update mask and merge fields options."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1UpdateRuleSetRequest": {
+"description": "Request message for RuleSetService.UpdateRuleSet.",
+"id": "GoogleCloudContentwarehouseV1UpdateRuleSetRequest",
+"properties": {
+"ruleSet": {
+"$ref": "GoogleCloudContentwarehouseV1RuleSet",
+"description": "Required. The rule set to update."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1UserInfo": {
+"description": "The user information.",
+"id": "GoogleCloudContentwarehouseV1UserInfo",
+"properties": {
+"groupIds": {
+"description": "The unique group identifications which the user is belong to. The format is \"group:yyyy@example.com\";",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"id": {
+"description": "A unique user identification string, as determined by the client. The maximum number of allowed characters is 255. Allowed characters include numbers 0 to 9, uppercase and lowercase letters, and restricted special symbols (:, @, +, -, _, ~) The format is \"user:xxxx@example.com\";",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1Value": {
+"description": "`Value` represents a dynamically typed value which can be either be a float, a integer, a string, or a datetime value. A producer of value is expected to set one of these variants. Absence of any variant indicates an error.",
+"id": "GoogleCloudContentwarehouseV1Value",
+"properties": {
+"booleanValue": {
+"description": "Represents a boolean value.",
+"type": "boolean"
+},
+"datetimeValue": {
+"$ref": "GoogleTypeDateTime",
+"description": "Represents a datetime value."
+},
+"enumValue": {
+"$ref": "GoogleCloudContentwarehouseV1EnumValue",
+"description": "Represents an enum value."
+},
+"floatValue": {
+"description": "Represents a float value.",
+"format": "float",
+"type": "number"
+},
+"intValue": {
+"description": "Represents a integer value.",
+"format": "int32",
+"type": "integer"
+},
+"stringValue": {
+"description": "Represents a string value.",
+"type": "string"
+},
+"timestampValue": {
+"$ref": "GoogleCloudContentwarehouseV1TimestampValue",
+"description": "Represents a timestamp value."
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1WeightedSchemaProperty": {
+"description": "Specifies the schema property name.",
+"id": "GoogleCloudContentwarehouseV1WeightedSchemaProperty",
+"properties": {
+"documentSchemaName": {
+"description": "The document schema name.",
+"type": "string"
+},
+"propertyNames": {
+"description": "The property definition names in the schema.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1beta1CreateDocumentMetadata": {
+"description": "Metadata object for CreateDocument request (currently empty).",
+"id": "GoogleCloudContentwarehouseV1beta1CreateDocumentMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1beta1InitializeProjectResponse": {
+"description": "Response message for projectService.InitializeProject",
+"id": "GoogleCloudContentwarehouseV1beta1InitializeProjectResponse",
+"properties": {
+"message": {
+"description": "The message of the project initialization process.",
+"type": "string"
+},
+"state": {
+"description": "The state of the project initialization process.",
+"enum": [
+"STATE_UNSPECIFIED",
+"SUCCEEDED",
+"FAILED",
+"CANCELLED",
+"RUNNING"
+],
+"enumDescriptions": [
+"Clients should never see this.",
+"Finished project initialization without error.",
+"Finished project initialization with an error.",
+"Client canceled the LRO.",
+"Ask the customer to check the operation for results."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudContentwarehouseV1beta1UpdateDocumentMetadata": {
+"description": "Metadata object for UpdateDocument request (currently empty).",
+"id": "GoogleCloudContentwarehouseV1beta1UpdateDocumentMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1Barcode": {
+"description": "Encodes the detailed information of a barcode.",
+"id": "GoogleCloudDocumentaiV1Barcode",
+"properties": {
+"format": {
+"description": "Format of a barcode. The supported formats are: - `CODE_128`: Code 128 type. - `CODE_39`: Code 39 type. - `CODE_93`: Code 93 type. - `CODABAR`: Codabar type. - `DATA_MATRIX`: 2D Data Matrix type. - `ITF`: ITF type. - `EAN_13`: EAN-13 type. - `EAN_8`: EAN-8 type. - `QR_CODE`: 2D QR code type. - `UPC_A`: UPC-A type. - `UPC_E`: UPC-E type. - `PDF417`: PDF417 type. - `AZTEC`: 2D Aztec code type. - `DATABAR`: GS1 DataBar code type.",
+"type": "string"
+},
+"rawValue": {
+"description": "Raw value encoded in the barcode. For example: `'MEBKM:TITLE:Google;URL:https://www.google.com;;'`.",
+"type": "string"
+},
+"valueFormat": {
+"description": "Value format describes the format of the value that a barcode encodes. The supported formats are: - `CONTACT_INFO`: Contact information. - `EMAIL`: Email address. - `ISBN`: ISBN identifier. - `PHONE`: Phone number. - `PRODUCT`: Product. - `SMS`: SMS message. - `TEXT`: Text string. - `URL`: URL address. - `WIFI`: Wifi information. - `GEO`: Geo-localization. - `CALENDAR_EVENT`: Calendar event. - `DRIVER_LICENSE`: Driver's license.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1BoundingPoly": {
+"description": "A bounding polygon for the detected image annotation.",
+"id": "GoogleCloudDocumentaiV1BoundingPoly",
+"properties": {
+"normalizedVertices": {
+"description": "The bounding polygon normalized vertices.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1NormalizedVertex"
+},
+"type": "array"
+},
+"vertices": {
+"description": "The bounding polygon vertices.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1Vertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1Document": {
+"description": "Document represents the canonical document resource in Document AI. It is an interchange format that provides insights into documents and allows for collaboration between users and Document AI to iterate and optimize for quality.",
+"id": "GoogleCloudDocumentaiV1Document",
+"properties": {
+"chunkedDocument": {
+"$ref": "GoogleCloudDocumentaiV1DocumentChunkedDocument",
+"description": "Document chunked based on chunking config."
+},
+"content": {
+"description": "Optional. Inline document content, represented as a stream of bytes. Note: As with all `bytes` fields, protobuffers use a pure binary representation, whereas JSON representations use base64.",
+"format": "byte",
+"type": "string"
+},
+"documentLayout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayout",
+"description": "Parsed layout of the document."
+},
+"entities": {
+"description": "A list of entities detected on Document.text. For document shards, entities in this list may cross shard boundaries.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentEntity"
+},
+"type": "array"
+},
+"entityRelations": {
+"description": "Placeholder. Relationship among Document.entities.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentEntityRelation"
+},
+"type": "array"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "Any error that occurred while processing this document."
+},
+"mimeType": {
+"description": "An IANA published [media type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml).",
+"type": "string"
+},
+"pages": {
+"description": "Visual page layout for the Document.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPage"
+},
+"type": "array"
+},
+"revisions": {
+"description": "Placeholder. Revision history of this document.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentRevision"
+},
+"type": "array"
+},
+"shardInfo": {
+"$ref": "GoogleCloudDocumentaiV1DocumentShardInfo",
+"description": "Information about the sharding if this document is sharded part of a larger document. If the document is not sharded, this message is not specified."
+},
+"text": {
+"description": "Optional. UTF-8 encoded text in reading order from the document.",
+"type": "string"
+},
+"textChanges": {
+"description": "Placeholder. A list of text corrections made to Document.text. This is usually used for annotating corrections to OCR mistakes. Text changes for a given revision may not overlap with each other.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentTextChange"
+},
+"type": "array"
+},
+"textStyles": {
+"deprecated": true,
+"description": "Styles for the Document.text.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentStyle"
+},
+"type": "array"
+},
+"uri": {
+"description": "Optional. Currently supports Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. For more information, refer to [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentChunkedDocument": {
+"description": "Represents the chunks that the document is divided into.",
+"id": "GoogleCloudDocumentaiV1DocumentChunkedDocument",
+"properties": {
+"chunks": {
+"description": "List of chunks.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunk"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentChunkedDocumentChunk": {
+"description": "Represents a chunk.",
+"id": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunk",
+"properties": {
+"chunkId": {
+"description": "ID of the chunk.",
+"type": "string"
+},
+"content": {
+"description": "Text content of the chunk.",
+"type": "string"
+},
+"pageFooters": {
+"description": "Page footers associated with the chunk.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageFooter"
+},
+"type": "array"
+},
+"pageHeaders": {
+"description": "Page headers associated with the chunk.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageHeader"
+},
+"type": "array"
+},
+"pageSpan": {
+"$ref": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageSpan",
+"description": "Page span of the chunk."
+},
+"sourceBlockIds": {
+"description": "Unused.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageFooter": {
+"description": "Represents the page footer associated with the chunk.",
+"id": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageFooter",
+"properties": {
+"pageSpan": {
+"$ref": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageSpan",
+"description": "Page span of the footer."
+},
+"text": {
+"description": "Footer in text format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageHeader": {
+"description": "Represents the page header associated with the chunk.",
+"id": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageHeader",
+"properties": {
+"pageSpan": {
+"$ref": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageSpan",
+"description": "Page span of the header."
+},
+"text": {
+"description": "Header in text format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageSpan": {
+"description": "Represents where the chunk starts and ends in the document.",
+"id": "GoogleCloudDocumentaiV1DocumentChunkedDocumentChunkChunkPageSpan",
+"properties": {
+"pageEnd": {
+"description": "Page where chunk ends in the document.",
+"format": "int32",
+"type": "integer"
+},
+"pageStart": {
+"description": "Page where chunk starts in the document.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayout": {
+"description": "Represents the parsed layout of a document as a collection of blocks that the document is divided into.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayout",
+"properties": {
+"blocks": {
+"description": "List of blocks in the document.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlock"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlock": {
+"description": "Represents a block. A block could be one of the various types (text, table, list) supported.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlock",
+"properties": {
+"blockId": {
+"description": "ID of the block.",
+"type": "string"
+},
+"listBlock": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutListBlock",
+"description": "Block consisting of list content/structure."
+},
+"pageSpan": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutPageSpan",
+"description": "Page span of the block."
+},
+"tableBlock": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableBlock",
+"description": "Block consisting of table content/structure."
+},
+"textBlock": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTextBlock",
+"description": "Block consisting of text content."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutListBlock": {
+"description": "Represents a list type block.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutListBlock",
+"properties": {
+"listEntries": {
+"description": "List entries that constitute a list block.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutListEntry"
+},
+"type": "array"
+},
+"type": {
+"description": "Type of the list_entries (if exist). Available options are `ordered` and `unordered`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutListEntry": {
+"description": "Represents an entry in the list.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutListEntry",
+"properties": {
+"blocks": {
+"description": "A list entry is a list of blocks. Repeated blocks support further hierarchies and nested blocks.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlock"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutPageSpan": {
+"description": "Represents where the block starts and ends in the document.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutPageSpan",
+"properties": {
+"pageEnd": {
+"description": "Page where block ends in the document.",
+"format": "int32",
+"type": "integer"
+},
+"pageStart": {
+"description": "Page where block starts in the document.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableBlock": {
+"description": "Represents a table type block.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableBlock",
+"properties": {
+"bodyRows": {
+"description": "Body rows containing main table content.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableRow"
+},
+"type": "array"
+},
+"caption": {
+"description": "Table caption/title.",
+"type": "string"
+},
+"headerRows": {
+"description": "Header rows at the top of the table.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableRow"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableCell": {
+"description": "Represents a cell in a table row.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableCell",
+"properties": {
+"blocks": {
+"description": "A table cell is a list of blocks. Repeated blocks support further hierarchies and nested blocks.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlock"
+},
+"type": "array"
+},
+"colSpan": {
+"description": "How many columns this cell spans.",
+"format": "int32",
+"type": "integer"
+},
+"rowSpan": {
+"description": "How many rows this cell spans.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableRow": {
+"description": "Represents a row in a table.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableRow",
+"properties": {
+"cells": {
+"description": "A table row is a list of table cells.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTableCell"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTextBlock": {
+"description": "Represents a text type block.",
+"id": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlockLayoutTextBlock",
+"properties": {
+"blocks": {
+"description": "A text block could further have child blocks. Repeated blocks support further hierarchies and nested blocks.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentDocumentLayoutDocumentLayoutBlock"
+},
+"type": "array"
+},
+"text": {
+"description": "Text content stored in the block.",
+"type": "string"
+},
+"type": {
+"description": "Type of the text in the block. Available options are: `paragraph`, `subtitle`, `heading-1`, `heading-2`, `heading-3`, `heading-4`, `heading-5`, `header`, `footer`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentEntity": {
+"description": "An entity that could be a phrase in the text or a property that belongs to the document. It is a known entity type, such as a person, an organization, or location.",
+"id": "GoogleCloudDocumentaiV1DocumentEntity",
+"properties": {
+"confidence": {
+"description": "Optional. Confidence of detected Schema entity. Range `[0, 1]`.",
+"format": "float",
+"type": "number"
+},
+"id": {
+"description": "Optional. Canonical id. This will be a unique value in the entity list for this document.",
+"type": "string"
+},
+"mentionId": {
+"description": "Optional. Deprecated. Use `id` field instead.",
+"type": "string"
+},
+"mentionText": {
+"description": "Optional. Text value of the entity e.g. `1600 Amphitheatre Pkwy`.",
+"type": "string"
+},
+"normalizedValue": {
+"$ref": "GoogleCloudDocumentaiV1DocumentEntityNormalizedValue",
+"description": "Optional. Normalized entity value. Absent if the extracted value could not be converted or the type (e.g. address) is not supported for certain parsers. This field is also only populated for certain supported document types."
+},
+"pageAnchor": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageAnchor",
+"description": "Optional. Represents the provenance of this entity wrt. the location on the page where it was found."
+},
+"properties": {
+"description": "Optional. Entities can be nested to form a hierarchical data structure representing the content in the document.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentEntity"
+},
+"type": "array"
+},
+"provenance": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance",
+"description": "Optional. The history of this annotation."
+},
+"redacted": {
+"description": "Optional. Whether the entity will be redacted for de-identification purposes.",
+"type": "boolean"
+},
+"textAnchor": {
+"$ref": "GoogleCloudDocumentaiV1DocumentTextAnchor",
+"description": "Optional. Provenance of the entity. Text anchor indexing into the Document.text."
+},
+"type": {
+"description": "Required. Entity type from a schema e.g. `Address`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentEntityNormalizedValue": {
+"description": "Parsed and normalized entity value.",
+"id": "GoogleCloudDocumentaiV1DocumentEntityNormalizedValue",
+"properties": {
+"addressValue": {
+"$ref": "GoogleTypePostalAddress",
+"description": "Postal address. See also: https://github.com/googleapis/googleapis/blob/master/google/type/postal_address.proto"
+},
+"booleanValue": {
+"description": "Boolean value. Can be used for entities with binary values, or for checkboxes.",
+"type": "boolean"
+},
+"dateValue": {
+"$ref": "GoogleTypeDate",
+"description": "Date value. Includes year, month, day. See also: https://github.com/googleapis/googleapis/blob/master/google/type/date.proto"
+},
+"datetimeValue": {
+"$ref": "GoogleTypeDateTime",
+"description": "DateTime value. Includes date, time, and timezone. See also: https://github.com/googleapis/googleapis/blob/master/google/type/datetime.proto"
+},
+"floatValue": {
+"description": "Float value.",
+"format": "float",
+"type": "number"
+},
+"integerValue": {
+"description": "Integer value.",
+"format": "int32",
+"type": "integer"
+},
+"moneyValue": {
+"$ref": "GoogleTypeMoney",
+"description": "Money value. See also: https://github.com/googleapis/googleapis/blob/master/google/type/money.proto"
+},
+"text": {
+"description": "Optional. An optional field to store a normalized string. For some entity types, one of respective `structured_value` fields may also be populated. Also not all the types of `structured_value` will be normalized. For example, some processors may not generate `float` or `integer` normalized text by default. Below are sample formats mapped to structured values. - Money/Currency type (`money_value`) is in the ISO 4217 text format. - Date type (`date_value`) is in the ISO 8601 text format. - Datetime type (`datetime_value`) is in the ISO 8601 text format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentEntityRelation": {
+"description": "Relationship between Entities.",
+"id": "GoogleCloudDocumentaiV1DocumentEntityRelation",
+"properties": {
+"objectId": {
+"description": "Object entity id.",
+"type": "string"
+},
+"relation": {
+"description": "Relationship description.",
+"type": "string"
+},
+"subjectId": {
+"description": "Subject entity id.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPage": {
+"description": "A page in a Document.",
+"id": "GoogleCloudDocumentaiV1DocumentPage",
+"properties": {
+"blocks": {
+"description": "A list of visually detected text blocks on the page. A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageBlock"
+},
+"type": "array"
+},
+"detectedBarcodes": {
+"description": "A list of detected barcodes.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedBarcode"
+},
+"type": "array"
+},
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"dimension": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDimension",
+"description": "Physical dimension of the page."
+},
+"formFields": {
+"description": "A list of visually detected form fields on the page.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageFormField"
+},
+"type": "array"
+},
+"image": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageImage",
+"description": "Rendered image for this page. This image is preprocessed to remove any skew, rotation, and distortions such that the annotation bounding boxes can be upright and axis-aligned."
+},
+"imageQualityScores": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageImageQualityScores",
+"description": "Image quality scores."
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for the page."
+},
+"lines": {
+"description": "A list of visually detected text lines on the page. A collection of tokens that a human would perceive as a line.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLine"
+},
+"type": "array"
+},
+"pageNumber": {
+"description": "1-based index for current Page in a parent Document. Useful when a page is taken out of a Document for individual processing.",
+"format": "int32",
+"type": "integer"
+},
+"paragraphs": {
+"description": "A list of visually detected text paragraphs on the page. A collection of lines that a human would perceive as a paragraph.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageParagraph"
+},
+"type": "array"
+},
+"provenance": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance",
+"deprecated": true,
+"description": "The history of this page."
+},
+"symbols": {
+"description": "A list of visually detected symbols on the page.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageSymbol"
+},
+"type": "array"
+},
+"tables": {
+"description": "A list of visually detected tables on the page.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageTable"
+},
+"type": "array"
+},
+"tokens": {
+"description": "A list of visually detected tokens on the page.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageToken"
+},
+"type": "array"
+},
+"transforms": {
+"description": "Transformation matrices that were applied to the original document image to produce Page.image.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageMatrix"
+},
+"type": "array"
+},
+"visualElements": {
+"description": "A list of detected non-text visual elements e.g. checkbox, signature etc. on the page.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageVisualElement"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageAnchor": {
+"description": "Referencing the visual context of the entity in the Document.pages. Page anchors can be cross-page, consist of multiple bounding polygons and optionally reference specific layout element types.",
+"id": "GoogleCloudDocumentaiV1DocumentPageAnchor",
+"properties": {
+"pageRefs": {
+"description": "One or more references to visual page elements",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageAnchorPageRef"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageAnchorPageRef": {
+"description": "Represents a weak reference to a page element within a document.",
+"id": "GoogleCloudDocumentaiV1DocumentPageAnchorPageRef",
+"properties": {
+"boundingPoly": {
+"$ref": "GoogleCloudDocumentaiV1BoundingPoly",
+"description": "Optional. Identifies the bounding polygon of a layout element on the page. If `layout_type` is set, the bounding polygon must be exactly the same to the layout element it's referring to."
+},
+"confidence": {
+"description": "Optional. Confidence of detected page element, if applicable. Range `[0, 1]`.",
+"format": "float",
+"type": "number"
+},
+"layoutId": {
+"deprecated": true,
+"description": "Optional. Deprecated. Use PageRef.bounding_poly instead.",
+"type": "string"
+},
+"layoutType": {
+"description": "Optional. The type of the layout element that is being referenced if any.",
+"enum": [
+"LAYOUT_TYPE_UNSPECIFIED",
+"BLOCK",
+"PARAGRAPH",
+"LINE",
+"TOKEN",
+"VISUAL_ELEMENT",
+"TABLE",
+"FORM_FIELD"
+],
+"enumDescriptions": [
+"Layout Unspecified.",
+"References a Page.blocks element.",
+"References a Page.paragraphs element.",
+"References a Page.lines element.",
+"References a Page.tokens element.",
+"References a Page.visual_elements element.",
+"Refrrences a Page.tables element.",
+"References a Page.form_fields element."
+],
+"type": "string"
+},
+"page": {
+"description": "Required. Index into the Document.pages element, for example using `Document.pages` to locate the related page element. This field is skipped when its value is the default `0`. See https://developers.google.com/protocol-buffers/docs/proto3#json.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageBlock": {
+"description": "A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.",
+"id": "GoogleCloudDocumentaiV1DocumentPageBlock",
+"properties": {
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for Block."
+},
+"provenance": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance",
+"deprecated": true,
+"description": "The history of this annotation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageDetectedBarcode": {
+"description": "A detected barcode.",
+"id": "GoogleCloudDocumentaiV1DocumentPageDetectedBarcode",
+"properties": {
+"barcode": {
+"$ref": "GoogleCloudDocumentaiV1Barcode",
+"description": "Detailed barcode information of the DetectedBarcode."
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for DetectedBarcode."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageDetectedLanguage": {
+"description": "Detected language for a structural component.",
+"id": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage",
+"properties": {
+"confidence": {
+"description": "Confidence of detected language. Range `[0, 1]`.",
+"format": "float",
+"type": "number"
+},
+"languageCode": {
+"description": "The [BCP-47 language code](https://www.unicode.org/reports/tr35/#Unicode_locale_identifier), such as `en-US` or `sr-Latn`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageDimension": {
+"description": "Dimension for the page.",
+"id": "GoogleCloudDocumentaiV1DocumentPageDimension",
+"properties": {
+"height": {
+"description": "Page height.",
+"format": "float",
+"type": "number"
+},
+"unit": {
+"description": "Dimension unit.",
+"type": "string"
+},
+"width": {
+"description": "Page width.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageFormField": {
+"description": "A form field detected on the page.",
+"id": "GoogleCloudDocumentaiV1DocumentPageFormField",
+"properties": {
+"correctedKeyText": {
+"description": "Created for Labeling UI to export key text. If corrections were made to the text identified by the `field_name.text_anchor`, this field will contain the correction.",
+"type": "string"
+},
+"correctedValueText": {
+"description": "Created for Labeling UI to export value text. If corrections were made to the text identified by the `field_value.text_anchor`, this field will contain the correction.",
+"type": "string"
+},
+"fieldName": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for the FormField name. e.g. `Address`, `Email`, `Grand total`, `Phone number`, etc."
+},
+"fieldValue": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for the FormField value."
+},
+"nameDetectedLanguages": {
+"description": "A list of detected languages for name together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"provenance": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance",
+"description": "The history of this annotation."
+},
+"valueDetectedLanguages": {
+"description": "A list of detected languages for value together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"valueType": {
+"description": "If the value is non-textual, this field represents the type. Current valid values are: - blank (this indicates the `field_value` is normal text) - `unfilled_checkbox` - `filled_checkbox`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageImage": {
+"description": "Rendered image contents for this page.",
+"id": "GoogleCloudDocumentaiV1DocumentPageImage",
+"properties": {
+"content": {
+"description": "Raw byte content of the image.",
+"format": "byte",
+"type": "string"
+},
+"height": {
+"description": "Height of the image in pixels.",
+"format": "int32",
+"type": "integer"
+},
+"mimeType": {
+"description": "Encoding [media type (MIME type)](https://www.iana.org/assignments/media-types/media-types.xhtml) for the image.",
+"type": "string"
+},
+"width": {
+"description": "Width of the image in pixels.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageImageQualityScores": {
+"description": "Image quality scores for the page image.",
+"id": "GoogleCloudDocumentaiV1DocumentPageImageQualityScores",
+"properties": {
+"detectedDefects": {
+"description": "A list of detected defects.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect"
+},
+"type": "array"
+},
+"qualityScore": {
+"description": "The overall quality score. Range `[0, 1]` where `1` is perfect quality.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect": {
+"description": "Image Quality Defects",
+"id": "GoogleCloudDocumentaiV1DocumentPageImageQualityScoresDetectedDefect",
+"properties": {
+"confidence": {
+"description": "Confidence of detected defect. Range `[0, 1]` where `1` indicates strong confidence that the defect exists.",
+"format": "float",
+"type": "number"
+},
+"type": {
+"description": "Name of the defect type. Supported values are: - `quality/defect_blurry` - `quality/defect_noisy` - `quality/defect_dark` - `quality/defect_faint` - `quality/defect_text_too_small` - `quality/defect_document_cutoff` - `quality/defect_text_cutoff` - `quality/defect_glare`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageLayout": {
+"description": "Visual element describing a layout unit on a page.",
+"id": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"properties": {
+"boundingPoly": {
+"$ref": "GoogleCloudDocumentaiV1BoundingPoly",
+"description": "The bounding polygon for the Layout."
+},
+"confidence": {
+"description": "Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range `[0, 1]`.",
+"format": "float",
+"type": "number"
+},
+"orientation": {
+"description": "Detected orientation for the Layout.",
+"enum": [
+"ORIENTATION_UNSPECIFIED",
+"PAGE_UP",
+"PAGE_RIGHT",
+"PAGE_DOWN",
+"PAGE_LEFT"
+],
+"enumDescriptions": [
+"Unspecified orientation.",
+"Orientation is aligned with page up.",
+"Orientation is aligned with page right. Turn the head 90 degrees clockwise from upright to read.",
+"Orientation is aligned with page down. Turn the head 180 degrees from upright to read.",
+"Orientation is aligned with page left. Turn the head 90 degrees counterclockwise from upright to read."
+],
+"type": "string"
+},
+"textAnchor": {
+"$ref": "GoogleCloudDocumentaiV1DocumentTextAnchor",
+"description": "Text anchor indexing into the Document.text."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageLine": {
+"description": "A collection of tokens that a human would perceive as a line. Does not cross column boundaries, can be horizontal, vertical, etc.",
+"id": "GoogleCloudDocumentaiV1DocumentPageLine",
+"properties": {
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for Line."
+},
+"provenance": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance",
+"deprecated": true,
+"description": "The history of this annotation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageMatrix": {
+"description": "Representation for transformation matrix, intended to be compatible and used with OpenCV format for image manipulation.",
+"id": "GoogleCloudDocumentaiV1DocumentPageMatrix",
+"properties": {
+"cols": {
+"description": "Number of columns in the matrix.",
+"format": "int32",
+"type": "integer"
+},
+"data": {
+"description": "The matrix data.",
+"format": "byte",
+"type": "string"
+},
+"rows": {
+"description": "Number of rows in the matrix.",
+"format": "int32",
+"type": "integer"
+},
+"type": {
+"description": "This encodes information about what data type the matrix uses. For example, 0 (CV_8U) is an unsigned 8-bit image. For the full list of OpenCV primitive data types, please refer to https://docs.opencv.org/4.3.0/d1/d1b/group__core__hal__interface.html",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageParagraph": {
+"description": "A collection of lines that a human would perceive as a paragraph.",
+"id": "GoogleCloudDocumentaiV1DocumentPageParagraph",
+"properties": {
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for Paragraph."
+},
+"provenance": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance",
+"deprecated": true,
+"description": "The history of this annotation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageSymbol": {
+"description": "A detected symbol.",
+"id": "GoogleCloudDocumentaiV1DocumentPageSymbol",
+"properties": {
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for Symbol."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageTable": {
+"description": "A table representation similar to HTML table structure.",
+"id": "GoogleCloudDocumentaiV1DocumentPageTable",
+"properties": {
+"bodyRows": {
+"description": "Body rows of the table.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageTableTableRow"
+},
+"type": "array"
+},
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"headerRows": {
+"description": "Header rows of the table.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageTableTableRow"
+},
+"type": "array"
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for Table."
+},
+"provenance": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance",
+"deprecated": true,
+"description": "The history of this table."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageTableTableCell": {
+"description": "A cell representation inside the table.",
+"id": "GoogleCloudDocumentaiV1DocumentPageTableTableCell",
+"properties": {
+"colSpan": {
+"description": "How many columns this cell spans.",
+"format": "int32",
+"type": "integer"
+},
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for TableCell."
+},
+"rowSpan": {
+"description": "How many rows this cell spans.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageTableTableRow": {
+"description": "A row of table cells.",
+"id": "GoogleCloudDocumentaiV1DocumentPageTableTableRow",
+"properties": {
+"cells": {
+"description": "Cells that make up this row.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageTableTableCell"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageToken": {
+"description": "A detected token.",
+"id": "GoogleCloudDocumentaiV1DocumentPageToken",
+"properties": {
+"detectedBreak": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak",
+"description": "Detected break at the end of a Token."
+},
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for Token."
+},
+"provenance": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance",
+"deprecated": true,
+"description": "The history of this annotation."
+},
+"styleInfo": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageTokenStyleInfo",
+"description": "Text style attributes."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak": {
+"description": "Detected break at the end of a Token.",
+"id": "GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak",
+"properties": {
+"type": {
+"description": "Detected break type.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"SPACE",
+"WIDE_SPACE",
+"HYPHEN"
+],
+"enumDescriptions": [
+"Unspecified break type.",
+"A single whitespace.",
+"A wider whitespace.",
+"A hyphen that indicates that a token has been split across lines."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageTokenStyleInfo": {
+"description": "Font and other text style attributes.",
+"id": "GoogleCloudDocumentaiV1DocumentPageTokenStyleInfo",
+"properties": {
+"backgroundColor": {
+"$ref": "GoogleTypeColor",
+"description": "Color of the background."
+},
+"bold": {
+"description": "Whether the text is bold (equivalent to font_weight is at least `700`).",
+"type": "boolean"
+},
+"fontSize": {
+"description": "Font size in points (`1` point is `\u00b9\u2044\u2087\u2082` inches).",
+"format": "int32",
+"type": "integer"
+},
+"fontType": {
+"description": "Name or style of the font.",
+"type": "string"
+},
+"fontWeight": {
+"description": "TrueType weight on a scale `100` (thin) to `1000` (ultra-heavy). Normal is `400`, bold is `700`.",
+"format": "int32",
+"type": "integer"
+},
+"handwritten": {
+"description": "Whether the text is handwritten.",
+"type": "boolean"
+},
+"italic": {
+"description": "Whether the text is italic.",
+"type": "boolean"
+},
+"letterSpacing": {
+"description": "Letter spacing in points.",
+"format": "double",
+"type": "number"
+},
+"pixelFontSize": {
+"description": "Font size in pixels, equal to _unrounded font_size_ * _resolution_ \u00f7 `72.0`.",
+"format": "double",
+"type": "number"
+},
+"smallcaps": {
+"description": "Whether the text is in small caps. This feature is not supported yet.",
+"type": "boolean"
+},
+"strikeout": {
+"description": "Whether the text is strikethrough. This feature is not supported yet.",
+"type": "boolean"
+},
+"subscript": {
+"description": "Whether the text is a subscript. This feature is not supported yet.",
+"type": "boolean"
+},
+"superscript": {
+"description": "Whether the text is a superscript. This feature is not supported yet.",
+"type": "boolean"
+},
+"textColor": {
+"$ref": "GoogleTypeColor",
+"description": "Color of the text."
+},
+"underlined": {
+"description": "Whether the text is underlined.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentPageVisualElement": {
+"description": "Detected non-text visual elements e.g. checkbox, signature etc. on the page.",
+"id": "GoogleCloudDocumentaiV1DocumentPageVisualElement",
+"properties": {
+"detectedLanguages": {
+"description": "A list of detected languages together with confidence.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage"
+},
+"type": "array"
+},
+"layout": {
+"$ref": "GoogleCloudDocumentaiV1DocumentPageLayout",
+"description": "Layout for VisualElement."
+},
+"type": {
+"description": "Type of the VisualElement.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentProvenance": {
+"description": "Structure to identify provenance relationships between annotations in different revisions.",
+"id": "GoogleCloudDocumentaiV1DocumentProvenance",
+"properties": {
+"id": {
+"deprecated": true,
+"description": "The Id of this operation. Needs to be unique within the scope of the revision.",
+"format": "int32",
+"type": "integer"
+},
+"parents": {
+"description": "References to the original elements that are replaced.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenanceParent"
+},
+"type": "array"
+},
+"revision": {
+"deprecated": true,
+"description": "The index of the revision that produced this element.",
+"format": "int32",
+"type": "integer"
+},
+"type": {
+"description": "The type of provenance operation.",
+"enum": [
+"OPERATION_TYPE_UNSPECIFIED",
+"ADD",
+"REMOVE",
+"UPDATE",
+"REPLACE",
+"EVAL_REQUESTED",
+"EVAL_APPROVED",
+"EVAL_SKIPPED"
+],
+"enumDeprecated": [
+false,
+false,
+false,
+false,
+false,
+true,
+true,
+true
+],
+"enumDescriptions": [
+"Operation type unspecified. If no operation is specified a provenance entry is simply used to match against a `parent`.",
+"Add an element.",
+"Remove an element identified by `parent`.",
+"Updates any fields within the given provenance scope of the message. It overwrites the fields rather than replacing them. Use this when you want to update a field value of an entity without also updating all the child properties.",
+"Currently unused. Replace an element identified by `parent`.",
+"Deprecated. Request human review for the element identified by `parent`.",
+"Deprecated. Element is reviewed and approved at human review, confidence will be set to 1.0.",
+"Deprecated. Element is skipped in the validation process."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentProvenanceParent": {
+"description": "The parent element the current element is based on. Used for referencing/aligning, removal and replacement operations.",
+"id": "GoogleCloudDocumentaiV1DocumentProvenanceParent",
+"properties": {
+"id": {
+"deprecated": true,
+"description": "The id of the parent provenance.",
+"format": "int32",
+"type": "integer"
+},
+"index": {
+"description": "The index of the parent item in the corresponding item list (eg. list of entities, properties within entities, etc.) in the parent revision.",
+"format": "int32",
+"type": "integer"
+},
+"revision": {
+"description": "The index of the index into current revision's parent_ids list.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentRevision": {
+"description": "Contains past or forward revisions of this document.",
+"id": "GoogleCloudDocumentaiV1DocumentRevision",
+"properties": {
+"agent": {
+"description": "If the change was made by a person specify the name or id of that person.",
+"type": "string"
+},
+"createTime": {
+"description": "The time that the revision was created, internally generated by doc proto storage at the time of create.",
+"format": "google-datetime",
+"type": "string"
+},
+"humanReview": {
+"$ref": "GoogleCloudDocumentaiV1DocumentRevisionHumanReview",
+"description": "Human Review information of this revision."
+},
+"id": {
+"description": "Id of the revision, internally generated by doc proto storage. Unique within the context of the document.",
+"type": "string"
+},
+"parent": {
+"deprecated": true,
+"description": "The revisions that this revision is based on. This can include one or more parent (when documents are merged.) This field represents the index into the `revisions` field.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"parentIds": {
+"description": "The revisions that this revision is based on. Must include all the ids that have anything to do with this revision - eg. there are `provenance.parent.revision` fields that index into this field.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"processor": {
+"description": "If the annotation was made by processor identify the processor by its resource name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentRevisionHumanReview": {
+"description": "Human Review information of the document.",
+"id": "GoogleCloudDocumentaiV1DocumentRevisionHumanReview",
+"properties": {
+"state": {
+"description": "Human review state. e.g. `requested`, `succeeded`, `rejected`.",
+"type": "string"
+},
+"stateMessage": {
+"description": "A message providing more details about the current state of processing. For example, the rejection reason when the state is `rejected`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentShardInfo": {
+"description": "For a large document, sharding may be performed to produce several document shards. Each document shard contains this field to detail which shard it is.",
+"id": "GoogleCloudDocumentaiV1DocumentShardInfo",
+"properties": {
+"shardCount": {
+"description": "Total number of shards.",
+"format": "int64",
+"type": "string"
+},
+"shardIndex": {
+"description": "The 0-based index of this shard.",
+"format": "int64",
+"type": "string"
+},
+"textOffset": {
+"description": "The index of the first character in Document.text in the overall document global text.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentStyle": {
+"description": "Annotation for common text style attributes. This adheres to CSS conventions as much as possible.",
+"id": "GoogleCloudDocumentaiV1DocumentStyle",
+"properties": {
+"backgroundColor": {
+"$ref": "GoogleTypeColor",
+"description": "Text background color."
+},
+"color": {
+"$ref": "GoogleTypeColor",
+"description": "Text color."
+},
+"fontFamily": {
+"description": "Font family such as `Arial`, `Times New Roman`. https://www.w3schools.com/cssref/pr_font_font-family.asp",
+"type": "string"
+},
+"fontSize": {
+"$ref": "GoogleCloudDocumentaiV1DocumentStyleFontSize",
+"description": "Font size."
+},
+"fontWeight": {
+"description": "[Font weight](https://www.w3schools.com/cssref/pr_font_weight.asp). Possible values are `normal`, `bold`, `bolder`, and `lighter`.",
+"type": "string"
+},
+"textAnchor": {
+"$ref": "GoogleCloudDocumentaiV1DocumentTextAnchor",
+"description": "Text anchor indexing into the Document.text."
+},
+"textDecoration": {
+"description": "[Text decoration](https://www.w3schools.com/cssref/pr_text_text-decoration.asp). Follows CSS standard. ",
+"type": "string"
+},
+"textStyle": {
+"description": "[Text style](https://www.w3schools.com/cssref/pr_font_font-style.asp). Possible values are `normal`, `italic`, and `oblique`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentStyleFontSize": {
+"description": "Font size with unit.",
+"id": "GoogleCloudDocumentaiV1DocumentStyleFontSize",
+"properties": {
+"size": {
+"description": "Font size for the text.",
+"format": "float",
+"type": "number"
+},
+"unit": {
+"description": "Unit for the font size. Follows CSS naming (such as `in`, `px`, and `pt`).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentTextAnchor": {
+"description": "Text reference indexing into the Document.text.",
+"id": "GoogleCloudDocumentaiV1DocumentTextAnchor",
+"properties": {
+"content": {
+"description": "Contains the content of the text span so that users do not have to look it up in the text_segments. It is always populated for formFields.",
+"type": "string"
+},
+"textSegments": {
+"description": "The text segments from the Document.text.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment": {
+"description": "A text segment in the Document.text. The indices may be out of bounds which indicate that the text extends into another document shard for large sharded documents. See ShardInfo.text_offset",
+"id": "GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment",
+"properties": {
+"endIndex": {
+"description": "TextSegment half open end UTF-8 char index in the Document.text.",
+"format": "int64",
+"type": "string"
+},
+"startIndex": {
+"description": "TextSegment start UTF-8 char index in the Document.text.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1DocumentTextChange": {
+"description": "This message is used for text changes aka. OCR corrections.",
+"id": "GoogleCloudDocumentaiV1DocumentTextChange",
+"properties": {
+"changedText": {
+"description": "The text that replaces the text identified in the `text_anchor`.",
+"type": "string"
+},
+"provenance": {
+"deprecated": true,
+"description": "The history of this annotation.",
+"items": {
+"$ref": "GoogleCloudDocumentaiV1DocumentProvenance"
+},
+"type": "array"
+},
+"textAnchor": {
+"$ref": "GoogleCloudDocumentaiV1DocumentTextAnchor",
+"description": "Provenance of the correction. Text anchor indexing into the Document.text. There can only be a single `TextAnchor.text_segments` element. If the start and end index of the text segment are the same, the text change is inserted before that index."
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1NormalizedVertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
+"id": "GoogleCloudDocumentaiV1NormalizedVertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "float",
+"type": "number"
+},
+"y": {
+"description": "Y coordinate (starts from the top of the image).",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDocumentaiV1Vertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.",
+"id": "GoogleCloudDocumentaiV1Vertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "int32",
+"type": "integer"
+},
+"y": {
+"description": "Y coordinate (starts from the top of the image).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleIamV1AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "GoogleIamV1AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "GoogleIamV1AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "GoogleIamV1AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "GoogleIamV1Binding",
+"properties": {
+"condition": {
+"$ref": "GoogleTypeExpr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "GoogleIamV1Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "GoogleIamV1AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "GoogleIamV1Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningOperation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunningOperation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeColor": {
+"description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't have information about the absolute color space that should be used to interpret the RGB value\u2014for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
+"id": "GoogleTypeColor",
+"properties": {
+"alpha": {
+"description": "The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is rendered as a solid color (as if the alpha value had been explicitly given a value of 1.0).",
+"format": "float",
+"type": "number"
+},
+"blue": {
+"description": "The amount of blue in the color as a value in the interval [0, 1].",
+"format": "float",
+"type": "number"
+},
+"green": {
+"description": "The amount of green in the color as a value in the interval [0, 1].",
+"format": "float",
+"type": "number"
+},
+"red": {
+"description": "The amount of red in the color as a value in the interval [0, 1].",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleTypeDate": {
+"description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+"id": "GoogleTypeDate",
+"properties": {
+"day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"type": "integer"
+},
+"month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"type": "integer"
+},
+"year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleTypeDateTime": {
+"description": "Represents civil time (or occasionally physical time). This type can represent a civil time in one of a few possible ways: * When utc_offset is set and time_zone is unset: a civil time on a calendar day with a particular offset from UTC. * When time_zone is set and utc_offset is unset: a civil time on a calendar day in a particular time zone. * When neither time_zone nor utc_offset is set: a civil time on a calendar day in local time. The date is relative to the Proleptic Gregorian Calendar. If year, month, or day are 0, the DateTime is considered not to have a specific year, month, or day respectively. This type may also be used to represent a physical time if all the date and time fields are set and either case of the `time_offset` oneof is set. Consider using `Timestamp` message for physical time instead. If your use case also would like to store the user's timezone, that can be done in another field. This type is more flexible than some applications may want. Make sure to document and validate your application's limitations.",
+"id": "GoogleTypeDateTime",
+"properties": {
+"day": {
+"description": "Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day.",
+"format": "int32",
+"type": "integer"
+},
+"hours": {
+"description": "Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
+"format": "int32",
+"type": "integer"
+},
+"minutes": {
+"description": "Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0.",
+"format": "int32",
+"type": "integer"
+},
+"month": {
+"description": "Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month.",
+"format": "int32",
+"type": "integer"
+},
+"nanos": {
+"description": "Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0.",
+"format": "int32",
+"type": "integer"
+},
+"seconds": {
+"description": "Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds.",
+"format": "int32",
+"type": "integer"
+},
+"timeZone": {
+"$ref": "GoogleTypeTimeZone",
+"description": "Time zone."
+},
+"utcOffset": {
+"description": "UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.",
+"format": "google-duration",
+"type": "string"
+},
+"year": {
+"description": "Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleTypeExpr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "GoogleTypeExpr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeInterval": {
+"description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.",
+"id": "GoogleTypeInterval",
+"properties": {
+"endTime": {
+"description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeMoney": {
+"description": "Represents an amount of money with its currency type.",
+"id": "GoogleTypeMoney",
+"properties": {
+"currencyCode": {
+"description": "The three-letter currency code defined in ISO 4217.",
+"type": "string"
+},
+"nanos": {
+"description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+"format": "int32",
+"type": "integer"
+},
+"units": {
+"description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypePostalAddress": {
+"description": "Represents a postal address. For example for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created by user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, see: https://support.google.com/business/answer/6397478",
+"id": "GoogleTypePostalAddress",
+"properties": {
+"addressLines": {
+"description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (For example \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (For example Japan), address_language is used to make it explicit (For example \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"administrativeArea": {
+"description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (For example \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. For example in Switzerland this should be left unpopulated.",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\".",
+"type": "string"
+},
+"locality": {
+"description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.",
+"type": "string"
+},
+"organization": {
+"description": "Optional. The name of the organization at the address.",
+"type": "string"
+},
+"postalCode": {
+"description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (For example state/zip validation in the U.S.A.).",
+"type": "string"
+},
+"recipients": {
+"description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"regionCode": {
+"description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.",
+"type": "string"
+},
+"revision": {
+"description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.",
+"format": "int32",
+"type": "integer"
+},
+"sortingCode": {
+"description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (For example \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (For example C\u00f4te d'Ivoire).",
+"type": "string"
+},
+"sublocality": {
+"description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeTimeZone": {
+"description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).",
+"id": "GoogleTypeTimeZone",
+"properties": {
+"id": {
+"description": "IANA Time Zone Database time zone. For example \"America/New_York\".",
+"type": "string"
+},
+"version": {
+"description": "Optional. IANA Time Zone Database version number. For example \"2019a\".",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Document AI Warehouse API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/css.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/css.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..ae811c517803ce7828bfa8e50262ca55638b6461
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/css.v1.json
@@ -0,0 +1,1310 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/content": {
+"description": "Manage your product listings and accounts for Google Shopping"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://css.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Css",
+"description": "Programmatically manage your Comparison Shopping Service (CSS) account data at scale.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/comparison-shopping-services/api/overview",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "css:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://css.mtls.googleapis.com/",
+"name": "css",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"accounts": {
+"methods": {
+"get": {
+"description": "Retrieves a single CSS/MC account by ID.",
+"flatPath": "v1/accounts/{accountsId}",
+"httpMethod": "GET",
+"id": "css.accounts.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the managed CSS/MC account. Format: accounts/{account}",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+},
+"parent": {
+"description": "Optional. Only required when retrieving MC account information. The CSS domain that is the parent resource of the MC account. Format: accounts/{account}",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Account"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"listChildAccounts": {
+"description": "Lists all the accounts under the specified CSS account ID, and optionally filters by label ID and account name.",
+"flatPath": "v1/accounts/{accountsId}:listChildAccounts",
+"httpMethod": "GET",
+"id": "css.accounts.listChildAccounts",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"fullName": {
+"description": "If set, only the MC accounts with the given name (case sensitive) will be returned.",
+"location": "query",
+"type": "string"
+},
+"labelId": {
+"description": "If set, only the MC accounts with the given label ID will be returned.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of accounts to return. The service may return fewer than this value. If unspecified, at most 50 accounts will be returned. The maximum value is 100; values above 100 will be coerced to 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListChildAccounts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListChildAccounts` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent account. Must be a CSS group or domain. Format: accounts/{account}",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}:listChildAccounts",
+"response": {
+"$ref": "ListChildAccountsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"updateLabels": {
+"description": "Updates labels assigned to CSS/MC accounts by a CSS domain.",
+"flatPath": "v1/accounts/{accountsId}:updateLabels",
+"httpMethod": "POST",
+"id": "css.accounts.updateLabels",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The label resource name. Format: accounts/{account}",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:updateLabels",
+"request": {
+"$ref": "UpdateAccountLabelsRequest"
+},
+"response": {
+"$ref": "Account"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+}
+},
+"resources": {
+"cssProductInputs": {
+"methods": {
+"delete": {
+"description": "Deletes a CSS Product input from your CSS Center account. After a delete it may take several minutes until the input is no longer available.",
+"flatPath": "v1/accounts/{accountsId}/cssProductInputs/{cssProductInputsId}",
+"httpMethod": "DELETE",
+"id": "css.accounts.cssProductInputs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the CSS product input resource to delete. Format: accounts/{account}/cssProductInputs/{css_product_input}",
+"location": "path",
+"pattern": "^accounts/[^/]+/cssProductInputs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"supplementalFeedId": {
+"description": "The Content API Supplemental Feed ID. The field must not be set if the action applies to a primary feed. If the field is set, then product action applies to a supplemental feed instead of primary Content API feed.",
+"format": "int64",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"insert": {
+"description": "Uploads a CssProductInput to your CSS Center account. If an input with the same contentLanguage, identity, feedLabel and feedId already exists, this method replaces that entry. After inserting, updating, or deleting a CSS Product input, it may take several minutes before the processed CSS Product can be retrieved.",
+"flatPath": "v1/accounts/{accountsId}/cssProductInputs:insert",
+"httpMethod": "POST",
+"id": "css.accounts.cssProductInputs.insert",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"feedId": {
+"deprecated": true,
+"description": "Optional. DEPRECATED. Feed id is not required for CSS Products. The primary or supplemental feed id. If CSS Product already exists and feed id provided is different, then the CSS Product will be moved to a new feed. Note: For now, CSSs do not need to provide feed ids as we create feeds on the fly. We do not have supplemental feed support for CSS Products yet.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The account where this CSS Product will be inserted. Format: accounts/{account}",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/cssProductInputs:insert",
+"request": {
+"$ref": "CssProductInput"
+},
+"response": {
+"$ref": "CssProductInput"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"patch": {
+"description": "Updates the existing Css Product input in your CSS Center account. After inserting, updating, or deleting a CSS Product input, it may take several minutes before the processed Css Product can be retrieved.",
+"flatPath": "v1/accounts/{accountsId}/cssProductInputs/{cssProductInputsId}",
+"httpMethod": "PATCH",
+"id": "css.accounts.cssProductInputs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the CSS Product input. Format: `accounts/{account}/cssProductInputs/{css_product_input}`",
+"location": "path",
+"pattern": "^accounts/[^/]+/cssProductInputs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The list of CSS product attributes to be updated. If the update mask is omitted, then it is treated as implied field mask equivalent to all fields that are populated (have a non-empty value). Attributes specified in the update mask without a value specified in the body will be deleted from the CSS product. Update mask can only be specified for top level fields in attributes and custom attributes. To specify the update mask for custom attributes you need to add the `custom_attribute.` prefix. Providing special \"*\" value for full CSS product replacement is not supported.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "CssProductInput"
+},
+"response": {
+"$ref": "CssProductInput"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+}
+}
+},
+"cssProducts": {
+"methods": {
+"get": {
+"description": "Retrieves the processed CSS Product from your CSS Center account. After inserting, updating, or deleting a product input, it may take several minutes before the updated final product can be retrieved.",
+"flatPath": "v1/accounts/{accountsId}/cssProducts/{cssProductsId}",
+"httpMethod": "GET",
+"id": "css.accounts.cssProducts.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the CSS product to retrieve.",
+"location": "path",
+"pattern": "^accounts/[^/]+/cssProducts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "CssProduct"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"list": {
+"description": "Lists the processed CSS Products in your CSS Center account. The response might contain fewer items than specified by pageSize. Rely on pageToken to determine if there are more items to be requested. After inserting, updating, or deleting a CSS product input, it may take several minutes before the updated processed CSS product can be retrieved.",
+"flatPath": "v1/accounts/{accountsId}/cssProducts",
+"httpMethod": "GET",
+"id": "css.accounts.cssProducts.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of CSS Products to return. The service may return fewer than this value. The maximum value is 1000; values above 1000 will be coerced to 1000. If unspecified, the maximum number of CSS products will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListCssProducts` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListCssProducts` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The account/domain to list processed CSS Products for. Format: accounts/{account}",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/cssProducts",
+"response": {
+"$ref": "ListCssProductsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+}
+}
+},
+"labels": {
+"methods": {
+"create": {
+"description": "Creates a new label, not assigned to any account.",
+"flatPath": "v1/accounts/{accountsId}/labels",
+"httpMethod": "POST",
+"id": "css.accounts.labels.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent account. Format: accounts/{account}",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/labels",
+"request": {
+"$ref": "AccountLabel"
+},
+"response": {
+"$ref": "AccountLabel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"delete": {
+"description": "Deletes a label and removes it from all accounts to which it was assigned.",
+"flatPath": "v1/accounts/{accountsId}/labels/{labelsId}",
+"httpMethod": "DELETE",
+"id": "css.accounts.labels.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the label to delete. Format: accounts/{account}/labels/{label}",
+"location": "path",
+"pattern": "^accounts/[^/]+/labels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"list": {
+"description": "Lists the labels owned by an account.",
+"flatPath": "v1/accounts/{accountsId}/labels",
+"httpMethod": "GET",
+"id": "css.accounts.labels.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of labels to return. The service may return fewer than this value. If unspecified, at most 50 labels will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListAccountLabels` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListAccountLabels` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent account. Format: accounts/{account}",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/labels",
+"response": {
+"$ref": "ListAccountLabelsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"patch": {
+"description": "Updates a label.",
+"flatPath": "v1/accounts/{accountsId}/labels/{labelsId}",
+"httpMethod": "PATCH",
+"id": "css.accounts.labels.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the label. Format: accounts/{account}/labels/{label}",
+"location": "path",
+"pattern": "^accounts/[^/]+/labels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "AccountLabel"
+},
+"response": {
+"$ref": "AccountLabel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20250106",
+"rootUrl": "https://css.googleapis.com/",
+"schemas": {
+"Account": {
+"description": "Information about CSS/MC account.",
+"id": "Account",
+"properties": {
+"accountType": {
+"description": "Output only. The type of this account.",
+"enum": [
+"ACCOUNT_TYPE_UNSPECIFIED",
+"CSS_GROUP",
+"CSS_DOMAIN",
+"MC_PRIMARY_CSS_MCA",
+"MC_CSS_MCA",
+"MC_MARKETPLACE_MCA",
+"MC_OTHER_MCA",
+"MC_STANDALONE",
+"MC_MCA_SUBACCOUNT"
+],
+"enumDescriptions": [
+"Unknown account type.",
+"CSS group account.",
+"CSS domain account.",
+"MC Primary CSS MCA account.",
+"MC CSS MCA account.",
+"MC Marketplace MCA account.",
+"MC Other MCA account.",
+"MC Standalone account.",
+"MC MCA sub-account."
+],
+"readOnly": true,
+"type": "string"
+},
+"automaticLabelIds": {
+"description": "Automatically created label IDs assigned to the MC account by CSS Center.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"displayName": {
+"description": "The CSS/MC account's short display name.",
+"type": "string"
+},
+"fullName": {
+"description": "Output only. Immutable. The CSS/MC account's full name.",
+"readOnly": true,
+"type": "string"
+},
+"homepageUri": {
+"description": "Output only. Immutable. The CSS/MC account's homepage.",
+"readOnly": true,
+"type": "string"
+},
+"labelIds": {
+"description": "Manually created label IDs assigned to the CSS/MC account by a CSS parent account.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "The label resource name. Format: accounts/{account}",
+"type": "string"
+},
+"parent": {
+"description": "The CSS/MC account's parent resource. CSS group for CSS domains; CSS domain for MC accounts. Returned only if the user has access to the parent account.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountLabel": {
+"description": "Label assigned by CSS domain or CSS group to one of its sub-accounts.",
+"id": "AccountLabel",
+"properties": {
+"accountId": {
+"description": "Output only. The ID of account this label belongs to.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "The description of this label.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of this label.",
+"type": "string"
+},
+"labelId": {
+"description": "Output only. The ID of the label.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"labelType": {
+"description": "Output only. The type of this label.",
+"enum": [
+"LABEL_TYPE_UNSPECIFIED",
+"MANUAL",
+"AUTOMATIC"
+],
+"enumDescriptions": [
+"Unknown label type.",
+"Indicates that the label was created manually.",
+"Indicates that the label was created automatically by CSS Center."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "The resource name of the label. Format: accounts/{account}/labels/{label}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Attributes": {
+"description": "Attributes for CSS Product.",
+"id": "Attributes",
+"properties": {
+"additionalImageLinks": {
+"description": "Additional URL of images of the item.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"adult": {
+"description": "Set to true if the item is targeted towards adults.",
+"type": "boolean"
+},
+"ageGroup": {
+"description": "Target age group of the item.",
+"type": "string"
+},
+"brand": {
+"description": "Product Related Attributes.[14-36] Brand of the item.",
+"type": "string"
+},
+"certifications": {
+"description": "A list of certificates claimed by the CSS for the given product.",
+"items": {
+"$ref": "Certification"
+},
+"type": "array"
+},
+"color": {
+"description": "Color of the item.",
+"type": "string"
+},
+"cppAdsRedirect": {
+"description": "Allows advertisers to override the item URL when the product is shown within the context of Product Ads.",
+"type": "string"
+},
+"cppLink": {
+"description": "URL directly linking to your the Product Detail Page of the CSS.",
+"type": "string"
+},
+"cppMobileLink": {
+"description": "URL for the mobile-optimized version of the Product Detail Page of the CSS.",
+"type": "string"
+},
+"customLabel0": {
+"description": "Custom label 0 for custom grouping of items in a Shopping campaign.",
+"type": "string"
+},
+"customLabel1": {
+"description": "Custom label 1 for custom grouping of items in a Shopping campaign.",
+"type": "string"
+},
+"customLabel2": {
+"description": "Custom label 2 for custom grouping of items in a Shopping campaign.",
+"type": "string"
+},
+"customLabel3": {
+"description": "Custom label 3 for custom grouping of items in a Shopping campaign.",
+"type": "string"
+},
+"customLabel4": {
+"description": "Custom label 4 for custom grouping of items in a Shopping campaign.",
+"type": "string"
+},
+"description": {
+"description": "Description of the item.",
+"type": "string"
+},
+"excludedDestinations": {
+"description": "The list of destinations to exclude for this target (corresponds to unchecked check boxes in Merchant Center).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"expirationDate": {
+"description": "Date on which the item should expire, as specified upon insertion, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format. The actual expiration date is exposed in `productstatuses` as [googleExpirationDate](https://support.google.com/merchants/answer/6324499) and might be earlier if `expirationDate` is too far in the future. Note: It may take 2+ days from the expiration date for the item to actually get deleted.",
+"format": "google-datetime",
+"type": "string"
+},
+"gender": {
+"description": "Target gender of the item.",
+"type": "string"
+},
+"googleProductCategory": {
+"description": "Google's category of the item (see [Google product taxonomy](https://support.google.com/merchants/answer/1705911)). When querying products, this field will contain the user provided value. There is currently no way to get back the auto assigned google product categories through the API.",
+"type": "string"
+},
+"gtin": {
+"description": "Global Trade Item Number ([GTIN](https://support.google.com/merchants/answer/188494#gtin)) of the item.",
+"type": "string"
+},
+"headlineOfferCondition": {
+"description": "Condition of the headline offer.",
+"type": "string"
+},
+"headlineOfferInstallment": {
+"$ref": "HeadlineOfferInstallment",
+"description": "Number and amount of installments to pay for an item."
+},
+"headlineOfferLink": {
+"description": "Link to the headline offer.",
+"type": "string"
+},
+"headlineOfferMobileLink": {
+"description": "Mobile Link to the headline offer.",
+"type": "string"
+},
+"headlineOfferPrice": {
+"$ref": "Price",
+"description": "Headline Price of the CSS Product."
+},
+"headlineOfferShippingPrice": {
+"$ref": "Price",
+"description": "Headline Price of the CSS Product."
+},
+"headlineOfferSubscriptionCost": {
+"$ref": "HeadlineOfferSubscriptionCost",
+"description": "Number of periods (months or years) and amount of payment per period for an item with an associated subscription contract."
+},
+"highPrice": {
+"$ref": "Price",
+"description": "High Price of the CSS Product."
+},
+"imageLink": {
+"description": "URL of an image of the item.",
+"type": "string"
+},
+"includedDestinations": {
+"description": "The list of destinations to include for this target (corresponds to checked check boxes in Merchant Center). Default destinations are always included unless provided in `excludedDestinations`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"isBundle": {
+"description": "Whether the item is a merchant-defined bundle. A bundle is a custom grouping of different products sold by a merchant for a single price.",
+"type": "boolean"
+},
+"itemGroupId": {
+"description": "Shared identifier for all variants of the same product.",
+"type": "string"
+},
+"lowPrice": {
+"$ref": "Price",
+"description": "Low Price of the CSS Product."
+},
+"material": {
+"description": "The material of which the item is made.",
+"type": "string"
+},
+"mpn": {
+"description": "Manufacturer Part Number ([MPN](https://support.google.com/merchants/answer/188494#mpn)) of the item.",
+"type": "string"
+},
+"multipack": {
+"description": "The number of identical products in a merchant-defined multipack.",
+"format": "int64",
+"type": "string"
+},
+"numberOfOffers": {
+"description": "The number of CSS Products.",
+"format": "int64",
+"type": "string"
+},
+"pattern": {
+"description": "The item's pattern (e.g. polka dots).",
+"type": "string"
+},
+"pause": {
+"description": "Publication of this item will be temporarily paused.",
+"type": "string"
+},
+"productDetails": {
+"description": "Technical specification or additional product details.",
+"items": {
+"$ref": "ProductDetail"
+},
+"type": "array"
+},
+"productHeight": {
+"$ref": "ProductDimension",
+"description": "The height of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive)."
+},
+"productHighlights": {
+"description": "Bullet points describing the most relevant highlights of a product.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"productLength": {
+"$ref": "ProductDimension",
+"description": "The length of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive)."
+},
+"productTypes": {
+"description": "Categories of the item (formatted as in [products data specification](https://support.google.com/merchants/answer/6324406)).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"productWeight": {
+"$ref": "ProductWeight",
+"description": "The weight of the product in the units provided. The value must be between 0 (exclusive) and 2000 (inclusive)."
+},
+"productWidth": {
+"$ref": "ProductDimension",
+"description": "The width of the product in the units provided. The value must be between 0 (exclusive) and 3000 (inclusive)."
+},
+"size": {
+"description": "Size of the item. Only one value is allowed. For variants with different sizes, insert a separate product for each size with the same `itemGroupId` value (see [https://support.google.com/merchants/answer/6324492](size definition)).",
+"type": "string"
+},
+"sizeSystem": {
+"description": "System in which the size is specified. Recommended for apparel items.",
+"type": "string"
+},
+"sizeTypes": {
+"description": "The cut of the item. It can be used to represent combined size types for apparel items. Maximum two of size types can be provided (see [https://support.google.com/merchants/answer/6324497](size type)).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"title": {
+"description": "Title of the item.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Certification": {
+"description": "The certification for the product. Use the this attribute to describe certifications, such as energy efficiency ratings, associated with a product.",
+"id": "Certification",
+"properties": {
+"authority": {
+"description": "The authority or certification body responsible for issuing the certification. At this time, the most common value is \"EC\" or \u201cEuropean_Commission\u201d for energy labels in the EU.",
+"type": "string"
+},
+"code": {
+"description": "The code of the certification. For example, for the EPREL certificate with the link https://eprel.ec.europa.eu/screen/product/dishwashers2019/123456 the code is 123456. The code is required for European Energy Labels.",
+"type": "string"
+},
+"name": {
+"description": "The name of the certification. At this time, the most common value is \"EPREL\", which represents energy efficiency certifications in the EU European Registry for Energy Labeling (EPREL) database.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CssProduct": {
+"description": "The processed CSS Product.",
+"id": "CssProduct",
+"properties": {
+"attributes": {
+"$ref": "Attributes",
+"description": "Output only. A list of product attributes.",
+"readOnly": true
+},
+"contentLanguage": {
+"description": "Output only. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the product.",
+"readOnly": true,
+"type": "string"
+},
+"cssProductStatus": {
+"$ref": "CssProductStatus",
+"description": "Output only. The status of a product, data validation issues, that is, information about a product computed asynchronously.",
+"readOnly": true
+},
+"customAttributes": {
+"description": "Output only. A list of custom (CSS-provided) attributes. It can also be used to submit any attribute of the feed specification in its generic form (for example, `{ \"name\": \"size type\", \"value\": \"regular\" }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google.",
+"items": {
+"$ref": "CustomAttribute"
+},
+"readOnly": true,
+"type": "array"
+},
+"feedLabel": {
+"description": "Output only. The feed label for the product.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "The name of the CSS Product. Format: `\"accounts/{account}/cssProducts/{css_product}\"`",
+"type": "string"
+},
+"rawProvidedId": {
+"description": "Output only. Your unique raw identifier for the product.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CssProductInput": {
+"description": "This resource represents input data you submit for a CSS Product, not the processed CSS Product that you see in CSS Center, in Shopping Ads, or across Google surfaces.",
+"id": "CssProductInput",
+"properties": {
+"attributes": {
+"$ref": "Attributes",
+"description": "A list of CSS Product attributes."
+},
+"contentLanguage": {
+"description": "Required. The two-letter [ISO 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the CSS Product.",
+"type": "string"
+},
+"customAttributes": {
+"description": "A list of custom (CSS-provided) attributes. It can also be used for submitting any attribute of the feed specification in its generic form (for example: `{ \"name\": \"size type\", \"value\": \"regular\" }`). This is useful for submitting attributes not explicitly exposed by the API, such as additional attributes used for Buy on Google.",
+"items": {
+"$ref": "CustomAttribute"
+},
+"type": "array"
+},
+"feedLabel": {
+"description": "Required. The [feed label](https://developers.google.com/shopping-content/guides/products/feed-labels) for the CSS Product. Feed Label is synonymous to \"target country\" and hence should always be a valid region code. For example: 'DE' for Germany, 'FR' for France.",
+"type": "string"
+},
+"finalName": {
+"description": "Output only. The name of the processed CSS Product. Format: `accounts/{account}/cssProducts/{css_product}` \"",
+"readOnly": true,
+"type": "string"
+},
+"freshnessTime": {
+"deprecated": true,
+"description": "DEPRECATED. Use expiration_date instead. Represents the existing version (freshness) of the CSS Product, which can be used to preserve the right order when multiple updates are done at the same time. This field must not be set to the future time. If set, the update is prevented if a newer version of the item already exists in our system (that is the last update time of the existing CSS products is later than the freshness time set in the update). If the update happens, the last update time is then set to this freshness time. If not set, the update will not be prevented and the last update time will default to when this request was received by the CSS API. If the operation is prevented, the aborted exception will be thrown.",
+"format": "google-datetime",
+"type": "string"
+},
+"name": {
+"description": "The name of the CSS Product input. Format: `accounts/{account}/cssProductInputs/{css_product_input}`",
+"type": "string"
+},
+"rawProvidedId": {
+"description": "Required. Your unique identifier for the CSS Product. This is the same for the CSS Product input and processed CSS Product. We only allow ids with alphanumerics, underscores and dashes. See the [products feed specification](https://support.google.com/merchants/answer/188494#id) for details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CssProductStatus": {
+"description": "The status of the Css Product, data validation issues, that is, information about the Css Product computed asynchronously.",
+"id": "CssProductStatus",
+"properties": {
+"creationDate": {
+"description": "Date on which the item has been created, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
+"format": "google-datetime",
+"type": "string"
+},
+"destinationStatuses": {
+"description": "The intended destinations for the product.",
+"items": {
+"$ref": "DestinationStatus"
+},
+"type": "array"
+},
+"googleExpirationDate": {
+"description": "Date on which the item expires, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
+"format": "google-datetime",
+"type": "string"
+},
+"itemLevelIssues": {
+"description": "A list of all issues associated with the product.",
+"items": {
+"$ref": "ItemLevelIssue"
+},
+"type": "array"
+},
+"lastUpdateDate": {
+"description": "Date on which the item has been last updated, in [ISO 8601](http://en.wikipedia.org/wiki/ISO_8601) format.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CustomAttribute": {
+"description": "A message that represents custom attributes. Exactly one of `value` or `group_values` must not be empty.",
+"id": "CustomAttribute",
+"properties": {
+"groupValues": {
+"description": "Subattributes within this attribute group. If `group_values` is not empty, `value` must be empty.",
+"items": {
+"$ref": "CustomAttribute"
+},
+"type": "array"
+},
+"name": {
+"description": "The name of the attribute.",
+"type": "string"
+},
+"value": {
+"description": "The value of the attribute. If `value` is not empty, `group_values` must be empty.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DestinationStatus": {
+"description": "The destination status of the product status.",
+"id": "DestinationStatus",
+"properties": {
+"approvedCountries": {
+"description": "List of country codes (ISO 3166-1 alpha-2) where the CSS Product is approved.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"destination": {
+"description": "The name of the destination",
+"type": "string"
+},
+"disapprovedCountries": {
+"description": "List of country codes (ISO 3166-1 alpha-2) where the CSS Product is disapproved.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"pendingCountries": {
+"description": "List of country codes (ISO 3166-1 alpha-2) where the CSS Product is pending approval.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"HeadlineOfferInstallment": {
+"description": "A message that represents installment.",
+"id": "HeadlineOfferInstallment",
+"properties": {
+"amount": {
+"$ref": "Price",
+"description": "The amount the buyer has to pay per month."
+},
+"downpayment": {
+"$ref": "Price",
+"description": "The up-front down payment amount the buyer has to pay."
+},
+"months": {
+"description": "The number of installments the buyer has to pay.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HeadlineOfferSubscriptionCost": {
+"description": "The SubscriptionCost of the product.",
+"id": "HeadlineOfferSubscriptionCost",
+"properties": {
+"amount": {
+"$ref": "Price",
+"description": "The amount the buyer has to pay per subscription period."
+},
+"period": {
+"description": "The type of subscription period. Supported values are: * \"`month`\" * \"`year`\"",
+"enum": [
+"SUBSCRIPTION_PERIOD_UNSPECIFIED",
+"MONTH",
+"YEAR"
+],
+"enumDescriptions": [
+"Indicates that the subscription period is unspecified.",
+"Indicates that the subscription period is month.",
+"Indicates that the subscription period is year."
+],
+"type": "string"
+},
+"periodLength": {
+"description": "The number of subscription periods the buyer has to pay.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ItemLevelIssue": {
+"description": "The ItemLevelIssue of the product status.",
+"id": "ItemLevelIssue",
+"properties": {
+"applicableCountries": {
+"description": "List of country codes (ISO 3166-1 alpha-2) where issue applies to the CSS Product.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"attribute": {
+"description": "The attribute's name, if the issue is caused by a single attribute.",
+"type": "string"
+},
+"code": {
+"description": "The error code of the issue.",
+"type": "string"
+},
+"description": {
+"description": "A short issue description in English.",
+"type": "string"
+},
+"destination": {
+"description": "The destination the issue applies to.",
+"type": "string"
+},
+"detail": {
+"description": "A detailed issue description in English.",
+"type": "string"
+},
+"documentation": {
+"description": "The URL of a web page to help with resolving this issue.",
+"type": "string"
+},
+"resolution": {
+"description": "Whether the issue can be resolved by the merchant.",
+"type": "string"
+},
+"servability": {
+"description": "How this issue affects serving of the CSS Product.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListAccountLabelsResponse": {
+"description": "Response message for the `ListAccountLabels` method.",
+"id": "ListAccountLabelsResponse",
+"properties": {
+"accountLabels": {
+"description": "The labels from the specified account.",
+"items": {
+"$ref": "AccountLabel"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListChildAccountsResponse": {
+"description": "Response message for the `ListChildAccounts` method.",
+"id": "ListChildAccountsResponse",
+"properties": {
+"accounts": {
+"description": "The CSS/MC accounts returned for the specified CSS parent account.",
+"items": {
+"$ref": "Account"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListCssProductsResponse": {
+"description": "Response message for the ListCssProducts method.",
+"id": "ListCssProductsResponse",
+"properties": {
+"cssProducts": {
+"description": "The processed CSS products from the specified account. These are your processed CSS products after applying rules and supplemental feeds.",
+"items": {
+"$ref": "CssProduct"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Price": {
+"description": "The price represented as a number and currency.",
+"id": "Price",
+"properties": {
+"amountMicros": {
+"description": "The price represented as a number in micros (1 million micros is an equivalent to one's currency standard unit, for example, 1 USD = 1000000 micros).",
+"format": "int64",
+"type": "string"
+},
+"currencyCode": {
+"description": "The currency of the price using three-letter acronyms according to [ISO 4217](http://en.wikipedia.org/wiki/ISO_4217).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProductDetail": {
+"description": "The product details.",
+"id": "ProductDetail",
+"properties": {
+"attributeName": {
+"description": "The name of the product detail.",
+"type": "string"
+},
+"attributeValue": {
+"description": "The value of the product detail.",
+"type": "string"
+},
+"sectionName": {
+"description": "The section header used to group a set of product details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProductDimension": {
+"description": "The dimension of the product.",
+"id": "ProductDimension",
+"properties": {
+"unit": {
+"description": "Required. The dimension units. Acceptable values are: * \"`in`\" * \"`cm`\"",
+"type": "string"
+},
+"value": {
+"description": "Required. The dimension value represented as a number. The value can have a maximum precision of four decimal places.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"ProductWeight": {
+"description": "The weight of the product.",
+"id": "ProductWeight",
+"properties": {
+"unit": {
+"description": "Required. The weight unit. Acceptable values are: * \"`g`\" * \"`kg`\" * \"`oz`\" * \"`lb`\"",
+"type": "string"
+},
+"value": {
+"description": "Required. The weight represented as a number. The weight can have a maximum precision of four decimal places.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"UpdateAccountLabelsRequest": {
+"description": "The request message for the `UpdateLabels` method.",
+"id": "UpdateAccountLabelsRequest",
+"properties": {
+"labelIds": {
+"description": "The list of label IDs to overwrite the existing account label IDs. If the list is empty, all currently assigned label IDs will be deleted.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"parent": {
+"description": "Optional. Only required when updating MC account labels. The CSS domain that is the parent resource of the MC account. Format: accounts/{account}",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "CSS API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/customsearch.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/customsearch.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..632a76202fc1885005763d58ffdd635ffeb33ee3
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/customsearch.v1.json
@@ -0,0 +1,1480 @@
+{
+"basePath": "",
+"baseUrl": "https://customsearch.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "CustomSearch API",
+"description": "Searches over a website or collection of websites",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/custom-search/v1/introduction",
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "customsearch:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://customsearch.mtls.googleapis.com/",
+"name": "customsearch",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"cse": {
+"methods": {
+"list": {
+"description": "Returns metadata about the search performed, metadata about the engine used for the search, and the search results.",
+"flatPath": "customsearch/v1",
+"httpMethod": "GET",
+"id": "search.cse.list",
+"parameterOrder": [],
+"parameters": {
+"c2coff": {
+"description": "Enables or disables [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch). The default value for this parameter is 0 (zero), meaning that the feature is enabled. Supported values are: * `1`: Disabled * `0`: Enabled (default)",
+"location": "query",
+"type": "string"
+},
+"cr": {
+"description": "Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/json_api_reference#booleanOperators) in the cr parameter's value. Google Search determines the country of a document by analyzing: * the top-level domain (TLD) of the document's URL * the geographic location of the Web server's IP address See the [Country Parameter Values](https://developers.google.com/custom-search/docs/json_api_reference#countryCollections) page for a list of valid values for this parameter.",
+"location": "query",
+"type": "string"
+},
+"cx": {
+"description": "The Programmable Search Engine ID to use for this request.",
+"location": "query",
+"type": "string"
+},
+"dateRestrict": {
+"description": "Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.",
+"location": "query",
+"type": "string"
+},
+"enableAlternateSearchHandler": {
+"description": "Optional. Enables routing of Programmable Search Engine requests to an alternate search handler.",
+"location": "query",
+"type": "boolean"
+},
+"exactTerms": {
+"description": "Identifies a phrase that all documents in the search results must contain.",
+"location": "query",
+"type": "string"
+},
+"excludeTerms": {
+"description": "Identifies a word or phrase that should not appear in any documents in the search results.",
+"location": "query",
+"type": "string"
+},
+"fileType": {
+"description": "Restricts results to files of a specified extension. A list of file types indexable by Google can be found in Search Console [Help Center](https://support.google.com/webmasters/answer/35287).",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Controls turning on or off the duplicate content filter. * See [Automatic Filtering](https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering) for more information about Google's search results filters. Note that host crowding filtering applies only to multi-site searches. * By default, Google applies filtering to all search results to improve the quality of those results. Acceptable values are: * `0`: Turns off duplicate content filter. * `1`: Turns on duplicate content filter.",
+"location": "query",
+"type": "string"
+},
+"gl": {
+"description": "Geolocation of end user. * The `gl` parameter value is a two-letter country code. The `gl` parameter boosts search results whose country of origin matches the parameter value. See the [Country Codes](https://developers.google.com/custom-search/docs/json_api_reference#countryCodes) page for a list of valid values. * Specifying a `gl` parameter value should lead to more relevant results. This is particularly true for international customers and, even more specifically, for customers in English- speaking countries other than the United States.",
+"location": "query",
+"type": "string"
+},
+"googlehost": {
+"description": "**Deprecated**. Use the `gl` parameter for a similar effect. The local Google domain (for example, google.com, google.de, or google.fr) to use to perform the search.",
+"location": "query",
+"type": "string"
+},
+"highRange": {
+"description": "Specifies the ending value for a search range. * Use `lowRange` and `highRange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"location": "query",
+"type": "string"
+},
+"hl": {
+"description": "Sets the user interface language. * Explicitly setting this parameter improves the performance and the quality of your search results. * See the [Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages) for a list of supported languages.",
+"location": "query",
+"type": "string"
+},
+"hq": {
+"description": "Appends the specified query terms to the query, as if they were combined with a logical AND operator.",
+"location": "query",
+"type": "string"
+},
+"imgColorType": {
+"description": "Returns black and white, grayscale, transparent, or color images. Acceptable values are: * `\"color\"` * `\"gray\"` * `\"mono\"`: black and white * `\"trans\"`: transparent background",
+"enum": [
+"imgColorTypeUndefined",
+"mono",
+"gray",
+"color",
+"trans"
+],
+"enumDescriptions": [
+"No image color type specified.",
+"Black and white images only.",
+"Grayscale images only.",
+"Color images only.",
+"Images with transparent background"
+],
+"location": "query",
+"type": "string"
+},
+"imgDominantColor": {
+"description": "Returns images of a specific dominant color. Acceptable values are: * `\"black\"` * `\"blue\"` * `\"brown\"` * `\"gray\"` * `\"green\"` * `\"orange\"` * `\"pink\"` * `\"purple\"` * `\"red\"` * `\"teal\"` * `\"white\"` * `\"yellow\"`",
+"enum": [
+"imgDominantColorUndefined",
+"black",
+"blue",
+"brown",
+"gray",
+"green",
+"orange",
+"pink",
+"purple",
+"red",
+"teal",
+"white",
+"yellow"
+],
+"enumDescriptions": [
+"No dominant color specified.",
+"Predominantly black images only.",
+"Predominantly blue images only.",
+"Predominantly brown images only.",
+"Predominantly gray images only.",
+"Predominantly green images only.",
+"Predominantly orange images only.",
+"Predominantly pink images only.",
+"Predominantly purple images only.",
+"Predominantly red images only.",
+"Predominantly teal images only.",
+"Predominantly white images only.",
+"Predominantly yellow images only."
+],
+"location": "query",
+"type": "string"
+},
+"imgSize": {
+"description": "Returns images of a specified size. Acceptable values are: * `\"huge\"` * `\"icon\"` * `\"large\"` * `\"medium\"` * `\"small\"` * `\"xlarge\"` * `\"xxlarge\"`",
+"enum": [
+"imgSizeUndefined",
+"HUGE",
+"ICON",
+"LARGE",
+"MEDIUM",
+"SMALL",
+"XLARGE",
+"XXLARGE"
+],
+"enumDescriptions": [
+"No image size specified.",
+"Only the largest possible images.",
+"Only very small icon-sized images.",
+"Only large images.",
+"Only medium images.",
+"Only small images.",
+"Only very large images.",
+"Only extremely large images."
+],
+"location": "query",
+"type": "string"
+},
+"imgType": {
+"description": "Returns images of a type. Acceptable values are: * `\"clipart\"` * `\"face\"` * `\"lineart\"` * `\"stock\"` * `\"photo\"` * `\"animated\"`",
+"enum": [
+"imgTypeUndefined",
+"clipart",
+"face",
+"lineart",
+"stock",
+"photo",
+"animated"
+],
+"enumDescriptions": [
+"No image type specified.",
+"Clipart-style images only.",
+"Images of faces only.",
+"Line art images only.",
+"Stock images only.",
+"Photo images only.",
+"Animated images only."
+],
+"location": "query",
+"type": "string"
+},
+"linkSite": {
+"description": "Specifies that all search results should contain a link to a particular URL.",
+"location": "query",
+"type": "string"
+},
+"lowRange": {
+"description": "Specifies the starting value for a search range. Use `lowRange` and `highRange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"location": "query",
+"type": "string"
+},
+"lr": {
+"description": "Restricts the search to documents written in a particular language (e.g., `lr=lang_ja`). Acceptable values are: * `\"lang_ar\"`: Arabic * `\"lang_bg\"`: Bulgarian * `\"lang_ca\"`: Catalan * `\"lang_cs\"`: Czech * `\"lang_da\"`: Danish * `\"lang_de\"`: German * `\"lang_el\"`: Greek * `\"lang_en\"`: English * `\"lang_es\"`: Spanish * `\"lang_et\"`: Estonian * `\"lang_fi\"`: Finnish * `\"lang_fr\"`: French * `\"lang_hr\"`: Croatian * `\"lang_hu\"`: Hungarian * `\"lang_id\"`: Indonesian * `\"lang_is\"`: Icelandic * `\"lang_it\"`: Italian * `\"lang_iw\"`: Hebrew * `\"lang_ja\"`: Japanese * `\"lang_ko\"`: Korean * `\"lang_lt\"`: Lithuanian * `\"lang_lv\"`: Latvian * `\"lang_nl\"`: Dutch * `\"lang_no\"`: Norwegian * `\"lang_pl\"`: Polish * `\"lang_pt\"`: Portuguese * `\"lang_ro\"`: Romanian * `\"lang_ru\"`: Russian * `\"lang_sk\"`: Slovak * `\"lang_sl\"`: Slovenian * `\"lang_sr\"`: Serbian * `\"lang_sv\"`: Swedish * `\"lang_tr\"`: Turkish * `\"lang_zh-CN\"`: Chinese (Simplified) * `\"lang_zh-TW\"`: Chinese (Traditional)",
+"location": "query",
+"type": "string"
+},
+"num": {
+"description": "Number of search results to return. * Valid values are integers between 1 and 10, inclusive.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"orTerms": {
+"description": "Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms.",
+"location": "query",
+"type": "string"
+},
+"q": {
+"description": "Query",
+"location": "query",
+"type": "string"
+},
+"relatedSite": {
+"deprecated": true,
+"description": "Deprecated.",
+"location": "query",
+"type": "string"
+},
+"rights": {
+"description": "Filters based on licensing. Supported values include: `cc_publicdomain`, `cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived` and combinations of these. See [typical combinations](https://wiki.creativecommons.org/wiki/CC_Search_integration).",
+"location": "query",
+"type": "string"
+},
+"safe": {
+"description": "Search safety level. Acceptable values are: * `\"active\"`: Enables SafeSearch filtering. * `\"off\"`: Disables SafeSearch filtering. (default)",
+"enum": [
+"safeUndefined",
+"active",
+"high",
+"medium",
+"off"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+true,
+false
+],
+"enumDescriptions": [
+"SafeSearch mode unspecified. (Falls back to engine's configuration.)",
+"Turn SafeSearch on.",
+"Deprecated, equivalent to \"active\".",
+"Deprecated, equivalent to \"active\".",
+"Turn SafeSearch off."
+],
+"location": "query",
+"type": "string"
+},
+"searchType": {
+"description": "Specifies the search type: `image`. If unspecified, results are limited to webpages. Acceptable values are: * `\"image\"`: custom image search.",
+"enum": [
+"searchTypeUndefined",
+"image"
+],
+"enumDescriptions": [
+"Search type unspecified (defaults to web search).",
+"Image search."
+],
+"location": "query",
+"type": "string"
+},
+"siteSearch": {
+"description": "Specifies a given site which should always be included or excluded from results (see `siteSearchFilter` parameter, below).",
+"location": "query",
+"type": "string"
+},
+"siteSearchFilter": {
+"description": "Controls whether to include or exclude results from the site named in the `siteSearch` parameter. Acceptable values are: * `\"e\"`: exclude * `\"i\"`: include",
+"enum": [
+"siteSearchFilterUndefined",
+"e",
+"i"
+],
+"enumDescriptions": [
+"Filter mode unspecified.",
+"Exclude results from the listed sites.",
+"Include only results from the listed sites."
+],
+"location": "query",
+"type": "string"
+},
+"snippetLength": {
+"description": "Optional. Maximum length of snippet text, in characters, to be returned with results. Note: this feature is limited to specific engines. * Valid values are integers between 161 and 1000, inclusive.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"sort": {
+"description": "The sort expression to apply to the results. The sort parameter specifies that the results be sorted according to the specified expression i.e. sort by date. [Example: sort=date](https://developers.google.com/custom-search/docs/structured_search#sort-by-attribute).",
+"location": "query",
+"type": "string"
+},
+"start": {
+"description": "The index of the first result to return. The default number of results per page is 10, so `&start=11` would start at the top of the second page of results. **Note**: The JSON API will never return more than 100 results, even if more than 100 documents match the query, so setting the sum of `start + num` to a number greater than 100 will produce an error. Also note that the maximum value for `num` is 10.",
+"format": "uint32",
+"location": "query",
+"type": "integer"
+}
+},
+"path": "customsearch/v1",
+"response": {
+"$ref": "Search"
+}
+}
+},
+"resources": {
+"siterestrict": {
+"methods": {
+"list": {
+"description": "Returns metadata about the search performed, metadata about the engine used for the search, and the search results. Uses a small set of url patterns.",
+"flatPath": "customsearch/v1/siterestrict",
+"httpMethod": "GET",
+"id": "search.cse.siterestrict.list",
+"parameterOrder": [],
+"parameters": {
+"c2coff": {
+"description": "Enables or disables [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch). The default value for this parameter is 0 (zero), meaning that the feature is enabled. Supported values are: * `1`: Disabled * `0`: Enabled (default)",
+"location": "query",
+"type": "string"
+},
+"cr": {
+"description": "Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/json_api_reference#booleanOperators) in the cr parameter's value. Google Search determines the country of a document by analyzing: * the top-level domain (TLD) of the document's URL * the geographic location of the Web server's IP address See the [Country Parameter Values](https://developers.google.com/custom-search/docs/json_api_reference#countryCollections) page for a list of valid values for this parameter.",
+"location": "query",
+"type": "string"
+},
+"cx": {
+"description": "The Programmable Search Engine ID to use for this request.",
+"location": "query",
+"type": "string"
+},
+"dateRestrict": {
+"description": "Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.",
+"location": "query",
+"type": "string"
+},
+"enableAlternateSearchHandler": {
+"description": "Optional. Enables routing of Programmable Search Engine requests to an alternate search handler.",
+"location": "query",
+"type": "boolean"
+},
+"exactTerms": {
+"description": "Identifies a phrase that all documents in the search results must contain.",
+"location": "query",
+"type": "string"
+},
+"excludeTerms": {
+"description": "Identifies a word or phrase that should not appear in any documents in the search results.",
+"location": "query",
+"type": "string"
+},
+"fileType": {
+"description": "Restricts results to files of a specified extension. A list of file types indexable by Google can be found in Search Console [Help Center](https://support.google.com/webmasters/answer/35287).",
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Controls turning on or off the duplicate content filter. * See [Automatic Filtering](https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering) for more information about Google's search results filters. Note that host crowding filtering applies only to multi-site searches. * By default, Google applies filtering to all search results to improve the quality of those results. Acceptable values are: * `0`: Turns off duplicate content filter. * `1`: Turns on duplicate content filter.",
+"location": "query",
+"type": "string"
+},
+"gl": {
+"description": "Geolocation of end user. * The `gl` parameter value is a two-letter country code. The `gl` parameter boosts search results whose country of origin matches the parameter value. See the [Country Codes](https://developers.google.com/custom-search/docs/json_api_reference#countryCodes) page for a list of valid values. * Specifying a `gl` parameter value should lead to more relevant results. This is particularly true for international customers and, even more specifically, for customers in English- speaking countries other than the United States.",
+"location": "query",
+"type": "string"
+},
+"googlehost": {
+"description": "**Deprecated**. Use the `gl` parameter for a similar effect. The local Google domain (for example, google.com, google.de, or google.fr) to use to perform the search.",
+"location": "query",
+"type": "string"
+},
+"highRange": {
+"description": "Specifies the ending value for a search range. * Use `lowRange` and `highRange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"location": "query",
+"type": "string"
+},
+"hl": {
+"description": "Sets the user interface language. * Explicitly setting this parameter improves the performance and the quality of your search results. * See the [Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages) for a list of supported languages.",
+"location": "query",
+"type": "string"
+},
+"hq": {
+"description": "Appends the specified query terms to the query, as if they were combined with a logical AND operator.",
+"location": "query",
+"type": "string"
+},
+"imgColorType": {
+"description": "Returns black and white, grayscale, transparent, or color images. Acceptable values are: * `\"color\"` * `\"gray\"` * `\"mono\"`: black and white * `\"trans\"`: transparent background",
+"enum": [
+"imgColorTypeUndefined",
+"mono",
+"gray",
+"color",
+"trans"
+],
+"enumDescriptions": [
+"No image color type specified.",
+"Black and white images only.",
+"Grayscale images only.",
+"Color images only.",
+"Images with transparent background"
+],
+"location": "query",
+"type": "string"
+},
+"imgDominantColor": {
+"description": "Returns images of a specific dominant color. Acceptable values are: * `\"black\"` * `\"blue\"` * `\"brown\"` * `\"gray\"` * `\"green\"` * `\"orange\"` * `\"pink\"` * `\"purple\"` * `\"red\"` * `\"teal\"` * `\"white\"` * `\"yellow\"`",
+"enum": [
+"imgDominantColorUndefined",
+"black",
+"blue",
+"brown",
+"gray",
+"green",
+"orange",
+"pink",
+"purple",
+"red",
+"teal",
+"white",
+"yellow"
+],
+"enumDescriptions": [
+"No dominant color specified.",
+"Predominantly black images only.",
+"Predominantly blue images only.",
+"Predominantly brown images only.",
+"Predominantly gray images only.",
+"Predominantly green images only.",
+"Predominantly orange images only.",
+"Predominantly pink images only.",
+"Predominantly purple images only.",
+"Predominantly red images only.",
+"Predominantly teal images only.",
+"Predominantly white images only.",
+"Predominantly yellow images only."
+],
+"location": "query",
+"type": "string"
+},
+"imgSize": {
+"description": "Returns images of a specified size. Acceptable values are: * `\"huge\"` * `\"icon\"` * `\"large\"` * `\"medium\"` * `\"small\"` * `\"xlarge\"` * `\"xxlarge\"`",
+"enum": [
+"imgSizeUndefined",
+"HUGE",
+"ICON",
+"LARGE",
+"MEDIUM",
+"SMALL",
+"XLARGE",
+"XXLARGE"
+],
+"enumDescriptions": [
+"No image size specified.",
+"Only the largest possible images.",
+"Only very small icon-sized images.",
+"Only large images.",
+"Only medium images.",
+"Only small images.",
+"Only very large images.",
+"Only extremely large images."
+],
+"location": "query",
+"type": "string"
+},
+"imgType": {
+"description": "Returns images of a type. Acceptable values are: * `\"clipart\"` * `\"face\"` * `\"lineart\"` * `\"stock\"` * `\"photo\"` * `\"animated\"`",
+"enum": [
+"imgTypeUndefined",
+"clipart",
+"face",
+"lineart",
+"stock",
+"photo",
+"animated"
+],
+"enumDescriptions": [
+"No image type specified.",
+"Clipart-style images only.",
+"Images of faces only.",
+"Line art images only.",
+"Stock images only.",
+"Photo images only.",
+"Animated images only."
+],
+"location": "query",
+"type": "string"
+},
+"linkSite": {
+"description": "Specifies that all search results should contain a link to a particular URL.",
+"location": "query",
+"type": "string"
+},
+"lowRange": {
+"description": "Specifies the starting value for a search range. Use `lowRange` and `highRange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"location": "query",
+"type": "string"
+},
+"lr": {
+"description": "Restricts the search to documents written in a particular language (e.g., `lr=lang_ja`). Acceptable values are: * `\"lang_ar\"`: Arabic * `\"lang_bg\"`: Bulgarian * `\"lang_ca\"`: Catalan * `\"lang_cs\"`: Czech * `\"lang_da\"`: Danish * `\"lang_de\"`: German * `\"lang_el\"`: Greek * `\"lang_en\"`: English * `\"lang_es\"`: Spanish * `\"lang_et\"`: Estonian * `\"lang_fi\"`: Finnish * `\"lang_fr\"`: French * `\"lang_hr\"`: Croatian * `\"lang_hu\"`: Hungarian * `\"lang_id\"`: Indonesian * `\"lang_is\"`: Icelandic * `\"lang_it\"`: Italian * `\"lang_iw\"`: Hebrew * `\"lang_ja\"`: Japanese * `\"lang_ko\"`: Korean * `\"lang_lt\"`: Lithuanian * `\"lang_lv\"`: Latvian * `\"lang_nl\"`: Dutch * `\"lang_no\"`: Norwegian * `\"lang_pl\"`: Polish * `\"lang_pt\"`: Portuguese * `\"lang_ro\"`: Romanian * `\"lang_ru\"`: Russian * `\"lang_sk\"`: Slovak * `\"lang_sl\"`: Slovenian * `\"lang_sr\"`: Serbian * `\"lang_sv\"`: Swedish * `\"lang_tr\"`: Turkish * `\"lang_zh-CN\"`: Chinese (Simplified) * `\"lang_zh-TW\"`: Chinese (Traditional)",
+"location": "query",
+"type": "string"
+},
+"num": {
+"description": "Number of search results to return. * Valid values are integers between 1 and 10, inclusive.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"orTerms": {
+"description": "Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms.",
+"location": "query",
+"type": "string"
+},
+"q": {
+"description": "Query",
+"location": "query",
+"type": "string"
+},
+"relatedSite": {
+"deprecated": true,
+"description": "Deprecated.",
+"location": "query",
+"type": "string"
+},
+"rights": {
+"description": "Filters based on licensing. Supported values include: `cc_publicdomain`, `cc_attribute`, `cc_sharealike`, `cc_noncommercial`, `cc_nonderived` and combinations of these. See [typical combinations](https://wiki.creativecommons.org/wiki/CC_Search_integration).",
+"location": "query",
+"type": "string"
+},
+"safe": {
+"description": "Search safety level. Acceptable values are: * `\"active\"`: Enables SafeSearch filtering. * `\"off\"`: Disables SafeSearch filtering. (default)",
+"enum": [
+"safeUndefined",
+"active",
+"high",
+"medium",
+"off"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+true,
+false
+],
+"enumDescriptions": [
+"SafeSearch mode unspecified. (Falls back to engine's configuration.)",
+"Turn SafeSearch on.",
+"Deprecated, equivalent to \"active\".",
+"Deprecated, equivalent to \"active\".",
+"Turn SafeSearch off."
+],
+"location": "query",
+"type": "string"
+},
+"searchType": {
+"description": "Specifies the search type: `image`. If unspecified, results are limited to webpages. Acceptable values are: * `\"image\"`: custom image search.",
+"enum": [
+"searchTypeUndefined",
+"image"
+],
+"enumDescriptions": [
+"Search type unspecified (defaults to web search).",
+"Image search."
+],
+"location": "query",
+"type": "string"
+},
+"siteSearch": {
+"description": "Specifies a given site which should always be included or excluded from results (see `siteSearchFilter` parameter, below).",
+"location": "query",
+"type": "string"
+},
+"siteSearchFilter": {
+"description": "Controls whether to include or exclude results from the site named in the `siteSearch` parameter. Acceptable values are: * `\"e\"`: exclude * `\"i\"`: include",
+"enum": [
+"siteSearchFilterUndefined",
+"e",
+"i"
+],
+"enumDescriptions": [
+"Filter mode unspecified.",
+"Exclude results from the listed sites.",
+"Include only results from the listed sites."
+],
+"location": "query",
+"type": "string"
+},
+"snippetLength": {
+"description": "Optional. Maximum length of snippet text, in characters, to be returned with results. Note: this feature is limited to specific engines. * Valid values are integers between 161 and 1000, inclusive.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"sort": {
+"description": "The sort expression to apply to the results. The sort parameter specifies that the results be sorted according to the specified expression i.e. sort by date. [Example: sort=date](https://developers.google.com/custom-search/docs/structured_search#sort-by-attribute).",
+"location": "query",
+"type": "string"
+},
+"start": {
+"description": "The index of the first result to return. The default number of results per page is 10, so `&start=11` would start at the top of the second page of results. **Note**: The JSON API will never return more than 100 results, even if more than 100 documents match the query, so setting the sum of `start + num` to a number greater than 100 will produce an error. Also note that the maximum value for `num` is 10.",
+"format": "uint32",
+"location": "query",
+"type": "integer"
+}
+},
+"path": "customsearch/v1/siterestrict",
+"response": {
+"$ref": "Search"
+}
+}
+}
+}
+}
+}
+},
+"revision": "20240821",
+"rootUrl": "https://customsearch.googleapis.com/",
+"schemas": {
+"Promotion": {
+"description": "Promotion result.",
+"id": "Promotion",
+"properties": {
+"bodyLines": {
+"description": "An array of block objects for this promotion.",
+"items": {
+"description": "Block object belonging to a promotion.",
+"properties": {
+"htmlTitle": {
+"description": "The block object's text in HTML, if it has text.",
+"type": "string"
+},
+"link": {
+"description": "The anchor text of the block object's link, if it has a link.",
+"type": "string"
+},
+"title": {
+"description": "The block object's text, if it has text.",
+"type": "string"
+},
+"url": {
+"description": "The URL of the block object's link, if it has one.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"type": "array"
+},
+"displayLink": {
+"description": "An abridged version of this search's result URL, e.g. www.example.com.",
+"type": "string"
+},
+"htmlTitle": {
+"description": "The title of the promotion, in HTML.",
+"type": "string"
+},
+"image": {
+"description": "Image belonging to a promotion.",
+"properties": {
+"height": {
+"description": "Image height in pixels.",
+"format": "int32",
+"type": "integer"
+},
+"source": {
+"description": "URL of the image for this promotion link.",
+"type": "string"
+},
+"width": {
+"description": "Image width in pixels.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"link": {
+"description": "The URL of the promotion.",
+"type": "string"
+},
+"title": {
+"description": "The title of the promotion.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Result": {
+"description": "A custom search result.",
+"id": "Result",
+"properties": {
+"cacheId": {
+"description": "Indicates the ID of Google's cached version of the search result.",
+"type": "string"
+},
+"displayLink": {
+"description": "An abridged version of this search result\u2019s URL, e.g. www.example.com.",
+"type": "string"
+},
+"fileFormat": {
+"description": "The file format of the search result.",
+"type": "string"
+},
+"formattedUrl": {
+"description": "The URL displayed after the snippet for each search result.",
+"type": "string"
+},
+"htmlFormattedUrl": {
+"description": "The HTML-formatted URL displayed after the snippet for each search result.",
+"type": "string"
+},
+"htmlSnippet": {
+"description": "The snippet of the search result, in HTML.",
+"type": "string"
+},
+"htmlTitle": {
+"description": "The title of the search result, in HTML.",
+"type": "string"
+},
+"image": {
+"description": "Image belonging to a custom search result.",
+"properties": {
+"byteSize": {
+"description": "The size of the image, in bytes.",
+"format": "int32",
+"type": "integer"
+},
+"contextLink": {
+"description": "A URL pointing to the webpage hosting the image.",
+"type": "string"
+},
+"height": {
+"description": "The height of the image, in pixels.",
+"format": "int32",
+"type": "integer"
+},
+"thumbnailHeight": {
+"description": "The height of the thumbnail image, in pixels.",
+"format": "int32",
+"type": "integer"
+},
+"thumbnailLink": {
+"description": "A URL to the thumbnail image.",
+"type": "string"
+},
+"thumbnailWidth": {
+"description": "The width of the thumbnail image, in pixels.",
+"format": "int32",
+"type": "integer"
+},
+"width": {
+"description": "The width of the image, in pixels.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"kind": {
+"description": "A unique identifier for the type of current object. For this API, it is `customsearch#result.`",
+"type": "string"
+},
+"labels": {
+"description": "Encapsulates all information about refinement labels.",
+"items": {
+"description": "Refinement label associated with a custom search result.",
+"properties": {
+"displayName": {
+"description": "The display name of a refinement label. This is the name you should display in your user interface.",
+"type": "string"
+},
+"label_with_op": {
+"description": "Refinement label and the associated refinement operation.",
+"type": "string"
+},
+"name": {
+"description": "The name of a refinement label, which you can use to refine searches. Don't display this in your user interface; instead, use displayName.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"type": "array"
+},
+"link": {
+"description": "The full URL to which the search result is pointing, e.g. http://www.example.com/foo/bar.",
+"type": "string"
+},
+"mime": {
+"description": "The MIME type of the search result.",
+"type": "string"
+},
+"pagemap": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Contains [PageMap](https://developers.google.com/custom-search/docs/structured_data#pagemaps) information for this search result.",
+"type": "object"
+},
+"snippet": {
+"description": "The snippet of the search result, in plain text.",
+"type": "string"
+},
+"title": {
+"description": "The title of the search result, in plain text.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Search": {
+"description": "Response to a custom search request.",
+"id": "Search",
+"properties": {
+"context": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Metadata and refinements associated with the given search engine, including: * The name of the search engine that was used for the query. * A set of [facet objects](https://developers.google.com/custom-search/docs/refinements#create) (refinements) you can use for refining a search.",
+"type": "object"
+},
+"items": {
+"description": "The current set of custom search results.",
+"items": {
+"$ref": "Result"
+},
+"type": "array"
+},
+"kind": {
+"description": "Unique identifier for the type of current object. For this API, it is customsearch#search.",
+"type": "string"
+},
+"promotions": {
+"description": "The set of [promotions](https://developers.google.com/custom-search/docs/promotions). Present only if the custom search engine's configuration files define any promotions for the given query.",
+"items": {
+"$ref": "Promotion"
+},
+"type": "array"
+},
+"queries": {
+"description": "Query metadata for the previous, current, and next pages of results.",
+"properties": {
+"nextPage": {
+"description": "Metadata representing the next page of results, if applicable.",
+"items": {
+"description": "Custom search request metadata.",
+"properties": {
+"count": {
+"description": "Number of search results returned in this set.",
+"format": "int32",
+"type": "integer"
+},
+"cr": {
+"description": "Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch) in the `cr` parameter's value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document's URL. * The geographic location of the web server's IP address. See [Country (cr) Parameter Values](https://developers.google.com/custom-search/docs/json_api_reference#countryCollections) for a list of valid values for this parameter.",
+"type": "string"
+},
+"cx": {
+"description": "The identifier of an engine created using the Programmable Search Engine [Control Panel](https://programmablesearchengine.google.com/). This is a custom property not defined in the OpenSearch spec. This parameter is **required**.",
+"type": "string"
+},
+"dateRestrict": {
+"description": "Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.",
+"type": "string"
+},
+"disableCnTwTranslation": {
+"description": "Enables or disables the [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch) feature. Supported values are: * `0`: enabled (default) * `1`: disabled",
+"type": "string"
+},
+"exactTerms": {
+"description": "Identifies a phrase that all documents in the search results must contain.",
+"type": "string"
+},
+"excludeTerms": {
+"description": "Identifies a word or phrase that should not appear in any documents in the search results.",
+"type": "string"
+},
+"fileType": {
+"description": "Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (`pdf`) * Adobe PostScript (`ps`) * Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`) * Lotus WordPro (`lwp`) * Macwrite (`mw`) * Microsoft Excel (`xls`) * Microsoft PowerPoint (`ppt`) * Microsoft Word (`doc`) * Microsoft Works (`wks`, `wps`, `wdb`) * Microsoft Write (`wri`) * Rich Text Format (`rtf`) * Shockwave Flash (`swf`) * Text (`ans`, `txt`). Additional filetypes may be added in the future. An up-to-date list can always be found in Google's [file type FAQ](https://support.google.com/webmasters/answer/35287).",
+"type": "string"
+},
+"filter": {
+"description": "Activates or deactivates the automatic filtering of Google search results. See [Automatic Filtering](https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering) for more information about Google's search results filters. Valid values for this parameter are: * `0`: Disabled * `1`: Enabled (default) **Note**: By default, Google applies filtering to all search results to improve the quality of those results.",
+"type": "string"
+},
+"gl": {
+"description": "Boosts search results whose country of origin matches the parameter value. See [Country Codes](https://developers.google.com/custom-search/docs/json_api_reference#countryCodes) for a list of valid values. Specifying a `gl` parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.",
+"type": "string"
+},
+"googleHost": {
+"description": "Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.",
+"type": "string"
+},
+"highRange": {
+"description": "Specifies the ending value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"type": "string"
+},
+"hl": {
+"description": "Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the [Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages) for a list of supported languages.",
+"type": "string"
+},
+"hq": {
+"description": "Appends the specified query terms to the query, as if they were combined with a logical `AND` operator.",
+"type": "string"
+},
+"imgColorType": {
+"description": "Restricts results to images of a specified color type. Supported values are: * `mono` (black and white) * `gray` (grayscale) * `color` (color)",
+"type": "string"
+},
+"imgDominantColor": {
+"description": "Restricts results to images with a specific dominant color. Supported values are: * `red` * `orange` * `yellow` * `green` * `teal` * `blue` * `purple` * `pink` * `white` * `gray` * `black` * `brown`",
+"type": "string"
+},
+"imgSize": {
+"description": "Restricts results to images of a specified size. Supported values are: * `icon` (small) * `small | medium | large | xlarge` (medium) * `xxlarge` (large) * `huge` (extra-large)",
+"type": "string"
+},
+"imgType": {
+"description": "Restricts results to images of a specified type. Supported values are: * `clipart` (Clip art) * `face` (Face) * `lineart` (Line drawing) * `photo` (Photo) * `animated` (Animated) * `stock` (Stock)",
+"type": "string"
+},
+"inputEncoding": {
+"description": "The character encoding supported for search requests.",
+"type": "string"
+},
+"language": {
+"description": "The language of the search results.",
+"type": "string"
+},
+"linkSite": {
+"description": "Specifies that all results should contain a link to a specific URL.",
+"type": "string"
+},
+"lowRange": {
+"description": "Specifies the starting value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"type": "string"
+},
+"orTerms": {
+"description": "Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the [Boolean OR](https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch) query term for this type of query.",
+"type": "string"
+},
+"outputEncoding": {
+"description": "The character encoding supported for search results.",
+"type": "string"
+},
+"relatedSite": {
+"description": "Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.",
+"type": "string"
+},
+"rights": {
+"description": "Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`",
+"type": "string"
+},
+"safe": {
+"description": "Specifies the [SafeSearch level](https://developers.google.com/custom-search/docs/json_api_reference#safeSearchLevels) used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * `\"off\"`: Disable SafeSearch * `\"active\"`: Enable SafeSearch",
+"type": "string"
+},
+"searchTerms": {
+"description": "The search terms entered by the user.",
+"type": "string"
+},
+"searchType": {
+"description": "Allowed values are `web` or `image`. If unspecified, results are limited to webpages.",
+"type": "string"
+},
+"siteSearch": {
+"description": "Restricts results to URLs from a specified site.",
+"type": "string"
+},
+"siteSearchFilter": {
+"description": "Specifies whether to include or exclude results from the site named in the `sitesearch` parameter. Supported values are: * `i`: include content from site * `e`: exclude content from site",
+"type": "string"
+},
+"sort": {
+"description": "Specifies that results should be sorted according to the specified expression. For example, sort by date.",
+"type": "string"
+},
+"startIndex": {
+"description": "The index of the current set of search results into the total set of results, where the index of the first result is 1.",
+"format": "int32",
+"type": "integer"
+},
+"startPage": {
+"description": "The page number of this set of results, where the page length is set by the `count` property.",
+"format": "int32",
+"type": "integer"
+},
+"title": {
+"description": "A description of the query.",
+"type": "string"
+},
+"totalResults": {
+"description": "Estimated number of total search results. May not be accurate.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"type": "array"
+},
+"previousPage": {
+"description": "Metadata representing the previous page of results, if applicable.",
+"items": {
+"description": "Custom search request metadata.",
+"properties": {
+"count": {
+"description": "Number of search results returned in this set.",
+"format": "int32",
+"type": "integer"
+},
+"cr": {
+"description": "Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch) in the `cr` parameter's value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document's URL. * The geographic location of the web server's IP address. See [Country (cr) Parameter Values](https://developers.google.com/custom-search/docs/json_api_reference#countryCollections) for a list of valid values for this parameter.",
+"type": "string"
+},
+"cx": {
+"description": "The identifier of an engine created using the Programmable Search Engine [Control Panel](https://programmablesearchengine.google.com/). This is a custom property not defined in the OpenSearch spec. This parameter is **required**.",
+"type": "string"
+},
+"dateRestrict": {
+"description": "Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.",
+"type": "string"
+},
+"disableCnTwTranslation": {
+"description": "Enables or disables the [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch) feature. Supported values are: * `0`: enabled (default) * `1`: disabled",
+"type": "string"
+},
+"exactTerms": {
+"description": "Identifies a phrase that all documents in the search results must contain.",
+"type": "string"
+},
+"excludeTerms": {
+"description": "Identifies a word or phrase that should not appear in any documents in the search results.",
+"type": "string"
+},
+"fileType": {
+"description": "Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (`pdf`) * Adobe PostScript (`ps`) * Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`) * Lotus WordPro (`lwp`) * Macwrite (`mw`) * Microsoft Excel (`xls`) * Microsoft PowerPoint (`ppt`) * Microsoft Word (`doc`) * Microsoft Works (`wks`, `wps`, `wdb`) * Microsoft Write (`wri`) * Rich Text Format (`rtf`) * Shockwave Flash (`swf`) * Text (`ans`, `txt`). Additional filetypes may be added in the future. An up-to-date list can always be found in Google's [file type FAQ](https://support.google.com/webmasters/answer/35287).",
+"type": "string"
+},
+"filter": {
+"description": "Activates or deactivates the automatic filtering of Google search results. See [Automatic Filtering](https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering) for more information about Google's search results filters. Valid values for this parameter are: * `0`: Disabled * `1`: Enabled (default) **Note**: By default, Google applies filtering to all search results to improve the quality of those results.",
+"type": "string"
+},
+"gl": {
+"description": "Boosts search results whose country of origin matches the parameter value. See [Country Codes](https://developers.google.com/custom-search/docs/json_api_reference#countryCodes) for a list of valid values. Specifying a `gl` parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.",
+"type": "string"
+},
+"googleHost": {
+"description": "Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.",
+"type": "string"
+},
+"highRange": {
+"description": "Specifies the ending value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"type": "string"
+},
+"hl": {
+"description": "Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the [Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages) for a list of supported languages.",
+"type": "string"
+},
+"hq": {
+"description": "Appends the specified query terms to the query, as if they were combined with a logical `AND` operator.",
+"type": "string"
+},
+"imgColorType": {
+"description": "Restricts results to images of a specified color type. Supported values are: * `mono` (black and white) * `gray` (grayscale) * `color` (color)",
+"type": "string"
+},
+"imgDominantColor": {
+"description": "Restricts results to images with a specific dominant color. Supported values are: * `red` * `orange` * `yellow` * `green` * `teal` * `blue` * `purple` * `pink` * `white` * `gray` * `black` * `brown`",
+"type": "string"
+},
+"imgSize": {
+"description": "Restricts results to images of a specified size. Supported values are: * `icon` (small) * `small | medium | large | xlarge` (medium) * `xxlarge` (large) * `huge` (extra-large)",
+"type": "string"
+},
+"imgType": {
+"description": "Restricts results to images of a specified type. Supported values are: * `clipart` (Clip art) * `face` (Face) * `lineart` (Line drawing) * `photo` (Photo) * `animated` (Animated) * `stock` (Stock)",
+"type": "string"
+},
+"inputEncoding": {
+"description": "The character encoding supported for search requests.",
+"type": "string"
+},
+"language": {
+"description": "The language of the search results.",
+"type": "string"
+},
+"linkSite": {
+"description": "Specifies that all results should contain a link to a specific URL.",
+"type": "string"
+},
+"lowRange": {
+"description": "Specifies the starting value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"type": "string"
+},
+"orTerms": {
+"description": "Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the [Boolean OR](https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch) query term for this type of query.",
+"type": "string"
+},
+"outputEncoding": {
+"description": "The character encoding supported for search results.",
+"type": "string"
+},
+"relatedSite": {
+"description": "Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.",
+"type": "string"
+},
+"rights": {
+"description": "Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`",
+"type": "string"
+},
+"safe": {
+"description": "Specifies the [SafeSearch level](https://developers.google.com/custom-search/docs/json_api_reference#safeSearchLevels) used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * `\"off\"`: Disable SafeSearch * `\"active\"`: Enable SafeSearch",
+"type": "string"
+},
+"searchTerms": {
+"description": "The search terms entered by the user.",
+"type": "string"
+},
+"searchType": {
+"description": "Allowed values are `web` or `image`. If unspecified, results are limited to webpages.",
+"type": "string"
+},
+"siteSearch": {
+"description": "Restricts results to URLs from a specified site.",
+"type": "string"
+},
+"siteSearchFilter": {
+"description": "Specifies whether to include or exclude results from the site named in the `sitesearch` parameter. Supported values are: * `i`: include content from site * `e`: exclude content from site",
+"type": "string"
+},
+"sort": {
+"description": "Specifies that results should be sorted according to the specified expression. For example, sort by date.",
+"type": "string"
+},
+"startIndex": {
+"description": "The index of the current set of search results into the total set of results, where the index of the first result is 1.",
+"format": "int32",
+"type": "integer"
+},
+"startPage": {
+"description": "The page number of this set of results, where the page length is set by the `count` property.",
+"format": "int32",
+"type": "integer"
+},
+"title": {
+"description": "A description of the query.",
+"type": "string"
+},
+"totalResults": {
+"description": "Estimated number of total search results. May not be accurate.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"type": "array"
+},
+"request": {
+"description": "Metadata representing the current request.",
+"items": {
+"description": "Custom search request metadata.",
+"properties": {
+"count": {
+"description": "Number of search results returned in this set.",
+"format": "int32",
+"type": "integer"
+},
+"cr": {
+"description": "Restricts search results to documents originating in a particular country. You may use [Boolean operators](https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch) in the `cr` parameter's value. Google WebSearch determines the country of a document by analyzing the following: * The top-level domain (TLD) of the document's URL. * The geographic location of the web server's IP address. See [Country (cr) Parameter Values](https://developers.google.com/custom-search/docs/json_api_reference#countryCollections) for a list of valid values for this parameter.",
+"type": "string"
+},
+"cx": {
+"description": "The identifier of an engine created using the Programmable Search Engine [Control Panel](https://programmablesearchengine.google.com/). This is a custom property not defined in the OpenSearch spec. This parameter is **required**.",
+"type": "string"
+},
+"dateRestrict": {
+"description": "Restricts results to URLs based on date. Supported values include: * `d[number]`: requests results from the specified number of past days. * `w[number]`: requests results from the specified number of past weeks. * `m[number]`: requests results from the specified number of past months. * `y[number]`: requests results from the specified number of past years.",
+"type": "string"
+},
+"disableCnTwTranslation": {
+"description": "Enables or disables the [Simplified and Traditional Chinese Search](https://developers.google.com/custom-search/docs/json_api_reference#chineseSearch) feature. Supported values are: * `0`: enabled (default) * `1`: disabled",
+"type": "string"
+},
+"exactTerms": {
+"description": "Identifies a phrase that all documents in the search results must contain.",
+"type": "string"
+},
+"excludeTerms": {
+"description": "Identifies a word or phrase that should not appear in any documents in the search results.",
+"type": "string"
+},
+"fileType": {
+"description": "Restricts results to files of a specified extension. Filetypes supported by Google include: * Adobe Portable Document Format (`pdf`) * Adobe PostScript (`ps`) * Lotus 1-2-3 (`wk1`, `wk2`, `wk3`, `wk4`, `wk5`, `wki`, `wks`, `wku`) * Lotus WordPro (`lwp`) * Macwrite (`mw`) * Microsoft Excel (`xls`) * Microsoft PowerPoint (`ppt`) * Microsoft Word (`doc`) * Microsoft Works (`wks`, `wps`, `wdb`) * Microsoft Write (`wri`) * Rich Text Format (`rtf`) * Shockwave Flash (`swf`) * Text (`ans`, `txt`). Additional filetypes may be added in the future. An up-to-date list can always be found in Google's [file type FAQ](https://support.google.com/webmasters/answer/35287).",
+"type": "string"
+},
+"filter": {
+"description": "Activates or deactivates the automatic filtering of Google search results. See [Automatic Filtering](https://developers.google.com/custom-search/docs/json_api_reference#automaticFiltering) for more information about Google's search results filters. Valid values for this parameter are: * `0`: Disabled * `1`: Enabled (default) **Note**: By default, Google applies filtering to all search results to improve the quality of those results.",
+"type": "string"
+},
+"gl": {
+"description": "Boosts search results whose country of origin matches the parameter value. See [Country Codes](https://developers.google.com/custom-search/docs/json_api_reference#countryCodes) for a list of valid values. Specifying a `gl` parameter value in WebSearch requests should improve the relevance of results. This is particularly true for international customers and, even more specifically, for customers in English-speaking countries other than the United States.",
+"type": "string"
+},
+"googleHost": {
+"description": "Specifies the Google domain (for example, google.com, google.de, or google.fr) to which the search should be limited.",
+"type": "string"
+},
+"highRange": {
+"description": "Specifies the ending value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"type": "string"
+},
+"hl": {
+"description": "Specifies the interface language (host language) of your user interface. Explicitly setting this parameter improves the performance and the quality of your search results. See the [Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#wsInterfaceLanguages) section of [Internationalizing Queries and Results Presentation](https://developers.google.com/custom-search/docs/json_api_reference#wsInternationalizing) for more information, and [Supported Interface Languages](https://developers.google.com/custom-search/docs/json_api_reference#interfaceLanguages) for a list of supported languages.",
+"type": "string"
+},
+"hq": {
+"description": "Appends the specified query terms to the query, as if they were combined with a logical `AND` operator.",
+"type": "string"
+},
+"imgColorType": {
+"description": "Restricts results to images of a specified color type. Supported values are: * `mono` (black and white) * `gray` (grayscale) * `color` (color)",
+"type": "string"
+},
+"imgDominantColor": {
+"description": "Restricts results to images with a specific dominant color. Supported values are: * `red` * `orange` * `yellow` * `green` * `teal` * `blue` * `purple` * `pink` * `white` * `gray` * `black` * `brown`",
+"type": "string"
+},
+"imgSize": {
+"description": "Restricts results to images of a specified size. Supported values are: * `icon` (small) * `small | medium | large | xlarge` (medium) * `xxlarge` (large) * `huge` (extra-large)",
+"type": "string"
+},
+"imgType": {
+"description": "Restricts results to images of a specified type. Supported values are: * `clipart` (Clip art) * `face` (Face) * `lineart` (Line drawing) * `photo` (Photo) * `animated` (Animated) * `stock` (Stock)",
+"type": "string"
+},
+"inputEncoding": {
+"description": "The character encoding supported for search requests.",
+"type": "string"
+},
+"language": {
+"description": "The language of the search results.",
+"type": "string"
+},
+"linkSite": {
+"description": "Specifies that all results should contain a link to a specific URL.",
+"type": "string"
+},
+"lowRange": {
+"description": "Specifies the starting value for a search range. Use `cse:lowRange` and `cse:highrange` to append an inclusive search range of `lowRange...highRange` to the query.",
+"type": "string"
+},
+"orTerms": {
+"description": "Provides additional search terms to check for in a document, where each document in the search results must contain at least one of the additional search terms. You can also use the [Boolean OR](https://developers.google.com/custom-search/docs/json_api_reference#BooleanOrSearch) query term for this type of query.",
+"type": "string"
+},
+"outputEncoding": {
+"description": "The character encoding supported for search results.",
+"type": "string"
+},
+"relatedSite": {
+"description": "Specifies that all search results should be pages that are related to the specified URL. The parameter value should be a URL.",
+"type": "string"
+},
+"rights": {
+"description": "Filters based on licensing. Supported values include: * `cc_publicdomain` * `cc_attribute` * `cc_sharealike` * `cc_noncommercial` * `cc_nonderived`",
+"type": "string"
+},
+"safe": {
+"description": "Specifies the [SafeSearch level](https://developers.google.com/custom-search/docs/json_api_reference#safeSearchLevels) used for filtering out adult results. This is a custom property not defined in the OpenSearch spec. Valid parameter values are: * `\"off\"`: Disable SafeSearch * `\"active\"`: Enable SafeSearch",
+"type": "string"
+},
+"searchTerms": {
+"description": "The search terms entered by the user.",
+"type": "string"
+},
+"searchType": {
+"description": "Allowed values are `web` or `image`. If unspecified, results are limited to webpages.",
+"type": "string"
+},
+"siteSearch": {
+"description": "Restricts results to URLs from a specified site.",
+"type": "string"
+},
+"siteSearchFilter": {
+"description": "Specifies whether to include or exclude results from the site named in the `sitesearch` parameter. Supported values are: * `i`: include content from site * `e`: exclude content from site",
+"type": "string"
+},
+"sort": {
+"description": "Specifies that results should be sorted according to the specified expression. For example, sort by date.",
+"type": "string"
+},
+"startIndex": {
+"description": "The index of the current set of search results into the total set of results, where the index of the first result is 1.",
+"format": "int32",
+"type": "integer"
+},
+"startPage": {
+"description": "The page number of this set of results, where the page length is set by the `count` property.",
+"format": "int32",
+"type": "integer"
+},
+"title": {
+"description": "A description of the query.",
+"type": "string"
+},
+"totalResults": {
+"description": "Estimated number of total search results. May not be accurate.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"searchInformation": {
+"description": "Metadata about a search operation.",
+"properties": {
+"formattedSearchTime": {
+"description": "The time taken for the server to return search results, formatted according to locale style.",
+"type": "string"
+},
+"formattedTotalResults": {
+"description": "The total number of search results, formatted according to locale style.",
+"type": "string"
+},
+"searchTime": {
+"description": "The time taken for the server to return search results.",
+"format": "double",
+"type": "number"
+},
+"totalResults": {
+"description": "The total number of search results returned by the query.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"spelling": {
+"description": "Spell correction information for a query.",
+"properties": {
+"correctedQuery": {
+"description": "The corrected query.",
+"type": "string"
+},
+"htmlCorrectedQuery": {
+"description": "The corrected query, formatted in HTML.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"url": {
+"description": "OpenSearch template and URL.",
+"properties": {
+"template": {
+"description": "The actual [OpenSearch template](http://www.opensearch.org/specifications/opensearch/1.1#opensearch_url_template_syntax) for this API.",
+"type": "string"
+},
+"type": {
+"description": "The MIME type of the OpenSearch URL template for the Custom Search JSON API.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Custom Search API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/datacatalog.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/datacatalog.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..01519cc5b8a5dea6fe911cdea66e3f42edf74328
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/datacatalog.v1.json
@@ -0,0 +1,4972 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://datacatalog.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Data Catalog",
+"description": "A fully managed and highly scalable data discovery and metadata management service. ",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/data-catalog/docs/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "datacatalog:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://datacatalog.mtls.googleapis.com/",
+"name": "datacatalog",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"catalog": {
+"methods": {
+"search": {
+"description": "Searches Data Catalog for multiple resources like entries and tags that match a query. This is a [Custom Method] (https://cloud.google.com/apis/design/custom_methods) that doesn't return all information on a resource, only its ID and high level fields. To get more information, you can subsequently call specific get methods. Note: Data Catalog search queries don't guarantee full recall. Results that match your query might not be returned, even in subsequent result pages. Additionally, returned (and not returned) results can vary if you repeat search queries. For more information, see [Data Catalog search syntax] (https://cloud.google.com/data-catalog/docs/how-to/search-reference).",
+"flatPath": "v1/catalog:search",
+"httpMethod": "POST",
+"id": "datacatalog.catalog.search",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1/catalog:search",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1SearchCatalogRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1SearchCatalogResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"entries": {
+"methods": {
+"lookup": {
+"description": "Gets an entry by its target resource name. The resource name comes from the source Google Cloud Platform service.",
+"flatPath": "v1/entries:lookup",
+"httpMethod": "GET",
+"id": "datacatalog.entries.lookup",
+"parameterOrder": [],
+"parameters": {
+"fullyQualifiedName": {
+"description": "[Fully Qualified Name (FQN)](https://cloud.google.com//data-catalog/docs/fully-qualified-names) of the resource. FQNs take two forms: * For non-regionalized resources: `{SYSTEM}:{PROJECT}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}` * For regionalized resources: `{SYSTEM}:{PROJECT}.{LOCATION_ID}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}` Example for a DPMS table: `dataproc_metastore:{PROJECT_ID}.{LOCATION_ID}.{INSTANCE_ID}.{DATABASE_ID}.{TABLE_ID}`",
+"location": "query",
+"type": "string"
+},
+"linkedResource": {
+"description": "The full name of the Google Cloud Platform resource the Data Catalog entry represents. For more information, see [Full Resource Name] (https://cloud.google.com/apis/design/resource_names#full_resource_name). Full names are case-sensitive. For example: * `//bigquery.googleapis.com/projects/{PROJECT_ID}/datasets/{DATASET_ID}/tables/{TABLE_ID}` * `//pubsub.googleapis.com/projects/{PROJECT_ID}/topics/{TOPIC_ID}`",
+"location": "query",
+"type": "string"
+},
+"location": {
+"description": "Location where the lookup should be performed. Required to lookup entry that is not a part of `DPMS` or `DATAPLEX` `integrated_system` using its `fully_qualified_name`. Ignored in other cases.",
+"location": "query",
+"type": "string"
+},
+"project": {
+"description": "Project where the lookup should be performed. Required to lookup entry that is not a part of `DPMS` or `DATAPLEX` `integrated_system` using its `fully_qualified_name`. Ignored in other cases.",
+"location": "query",
+"type": "string"
+},
+"sqlResource": {
+"description": "The SQL name of the entry. SQL names are case-sensitive. Examples: * `pubsub.topic.{PROJECT_ID}.{TOPIC_ID}` * `pubsub.topic.{PROJECT_ID}.`\\``{TOPIC.ID.SEPARATED.WITH.DOTS}`\\` * `bigquery.table.{PROJECT_ID}.{DATASET_ID}.{TABLE_ID}` * `bigquery.dataset.{PROJECT_ID}.{DATASET_ID}` * `datacatalog.entry.{PROJECT_ID}.{LOCATION_ID}.{ENTRY_GROUP_ID}.{ENTRY_ID}` Identifiers (`*_ID`) should comply with the [Lexical structure in Standard SQL] (https://cloud.google.com/bigquery/docs/reference/standard-sql/lexical).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/entries:lookup",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Entry"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"organizations": {
+"resources": {
+"locations": {
+"methods": {
+"retrieveConfig": {
+"description": "Retrieves the configuration related to the migration from Data Catalog to Dataplex for a specific organization, including all the projects under it which have a separate configuration set.",
+"flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}:retrieveConfig",
+"httpMethod": "GET",
+"id": "datacatalog.organizations.locations.retrieveConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The organization whose config is being retrieved.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:retrieveConfig",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1OrganizationConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"retrieveEffectiveConfig": {
+"description": "Retrieves the effective configuration related to the migration from Data Catalog to Dataplex for a specific organization or project. If there is no specific configuration set for the resource, the setting is checked hierarchicahlly through the ancestors of the resource, starting from the resource itself.",
+"flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}:retrieveEffectiveConfig",
+"httpMethod": "GET",
+"id": "datacatalog.organizations.locations.retrieveEffectiveConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource whose effective config is being retrieved.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:retrieveEffectiveConfig",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1MigrationConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setConfig": {
+"description": "Sets the configuration related to the migration to Dataplex for an organization or project.",
+"flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}:setConfig",
+"httpMethod": "POST",
+"id": "datacatalog.organizations.locations.setConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The organization or project whose config is being specified.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:setConfig",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1SetConfigRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1MigrationConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"retrieveEffectiveConfig": {
+"description": "Retrieves the effective configuration related to the migration from Data Catalog to Dataplex for a specific organization or project. If there is no specific configuration set for the resource, the setting is checked hierarchicahlly through the ancestors of the resource, starting from the resource itself.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}:retrieveEffectiveConfig",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.retrieveEffectiveConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource whose effective config is being retrieved.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:retrieveEffectiveConfig",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1MigrationConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setConfig": {
+"description": "Sets the configuration related to the migration to Dataplex for an organization or project.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}:setConfig",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.setConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The organization or project whose config is being specified.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:setConfig",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1SetConfigRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1MigrationConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"entryGroups": {
+"methods": {
+"create": {
+"description": "Creates an entry group. An entry group contains logically related entries together with [Cloud Identity and Access Management](/data-catalog/docs/concepts/iam) policies. These policies specify users who can create, edit, and view entries within entry groups. Data Catalog automatically creates entry groups with names that start with the `@` symbol for the following resources: * BigQuery entries (`@bigquery`) * Pub/Sub topics (`@pubsub`) * Dataproc Metastore services (`@dataproc_metastore_{SERVICE_NAME_HASH}`) You can create your own entry groups for Cloud Storage fileset entries and custom entries together with the corresponding IAM policies. User-created entry groups can't contain the `@` symbol, it is reserved for automatically created groups. Entry groups, like entries, can be searched. A maximum of 10,000 entry groups may be created per organization across all locations. You must enable the Data Catalog API in the project identified by the `parent` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"entryGroupId": {
+"description": "Required. The ID of the entry group to create. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and must start with a letter or underscore. The maximum size is 64 bytes when encoded in UTF-8.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The names of the project and location that the new entry group belongs to. Note: The entry group itself and its child resources might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/entryGroups",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1EntryGroup"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1EntryGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an entry group. You must enable the Data Catalog API in the project identified by the `name` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.entryGroups.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Optional. If true, deletes all entries in the entry group.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The name of the entry group to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an entry group.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.entryGroups.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entry group to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"readMask": {
+"description": "The fields to return. If empty or omitted, all fields are returned.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1EntryGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. May return: * A`NOT_FOUND` error if the resource doesn't exist or you don't have the permission to view it. * An empty policy if the resource exists but doesn't have a set policy. Supported resources are: - Tag templates - Entry groups Note: This method doesn't get policies from Google Cloud Platform resources ingested into Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag templates. - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists entry groups.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.entryGroups.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return. Default is 10. Maximum limit is 1000. Throws an invalid argument if `page_size` is greater than 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. Pagination token that specifies the next page to return. If empty, returns the first page.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the location that contains the entry groups to list. Can be provided as a URL.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/entryGroups",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1ListEntryGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an entry group. You must enable the Data Catalog API in the project identified by the `entry_group.name` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}",
+"httpMethod": "PATCH",
+"id": "datacatalog.projects.locations.entryGroups.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the entry group in URL format. Note: The entry group itself and its child resources might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Names of fields whose values to overwrite on an entry group. If this parameter is absent or empty, all modifiable fields are overwritten. If such fields are non-required and omitted in the request body, their values are emptied.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1EntryGroup"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1EntryGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets an access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates - Entry groups Note: This method sets policies only within Data Catalog and can't be used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources synced with the Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Gets your permissions on a resource. Returns an empty set of permissions if the resource doesn't exist. Supported resources are: - Tag templates - Entry groups Note: This method gets policies only within Data Catalog and can't be used to get policies from BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources ingested into Data Catalog. No Google IAM permissions are required to call this method.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"entries": {
+"methods": {
+"create": {
+"description": "Creates an entry. You can create entries only with 'FILESET', 'CLUSTER', 'DATA_STREAM', or custom types. Data Catalog automatically creates entries with other types during metadata ingestion from integrated systems. You must enable the Data Catalog API in the project identified by the `parent` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project). An entry group can have a maximum of 100,000 entries.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"entryId": {
+"description": "Required. The ID of the entry to create. The ID must contain only letters (a-z, A-Z), numbers (0-9), and underscores (_). The maximum size is 64 bytes when encoded in UTF-8.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the entry group this entry belongs to. Note: The entry itself and its child resources might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/entries",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1Entry"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Entry"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an existing entry. You can delete only the entries created by the CreateEntry method. You must enable the Data Catalog API in the project identified by the `name` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.entryGroups.entries.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entry to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an entry.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.entryGroups.entries.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entry to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Entry"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. May return: * A`NOT_FOUND` error if the resource doesn't exist or you don't have the permission to view it. * An empty policy if the resource exists but doesn't have a set policy. Supported resources are: - Tag templates - Entry groups Note: This method doesn't get policies from Google Cloud Platform resources ingested into Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag templates. - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"import": {
+"description": "Imports entries from a source, such as data previously dumped into a Cloud Storage bucket, into Data Catalog. Import of entries is a sync operation that reconciles the state of the third-party system with the Data Catalog. `ImportEntries` accepts source data snapshots of a third-party system. Snapshot should be delivered as a .wire or base65-encoded .txt file containing a sequence of Protocol Buffer messages of DumpItem type. `ImportEntries` returns a long-running operation resource that can be queried with Operations.GetOperation to return ImportEntriesMetadata and an ImportEntriesResponse message.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries:import",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.import",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Target entry group for ingested entries.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/entries:import",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1ImportEntriesRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists entries. Note: Currently, this method can list only custom entries. To get a list of both custom and automatically created entries, use SearchCatalog.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.entryGroups.entries.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return. Default is 10. Maximum limit is 1000. Throws an invalid argument if `page_size` is more than 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Pagination token that specifies the next page to return. If empty, the first page is returned.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the entry group that contains the entries to list. Can be provided in URL format.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"readMask": {
+"description": "The fields to return for each entry. If empty or omitted, all fields are returned. For example, to return a list of entries with only the `name` field, set `read_mask` to only one path with the `name` value.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/entries",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1ListEntriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"modifyEntryContacts": {
+"description": "Modifies contacts, part of the business context of an Entry. To call this method, you must have the `datacatalog.entries.updateContacts` IAM permission on the corresponding project.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}:modifyEntryContacts",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.modifyEntryContacts",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The full resource name of the entry.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:modifyEntryContacts",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1ModifyEntryContactsRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Contacts"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"modifyEntryOverview": {
+"description": "Modifies entry overview, part of the business context of an Entry. To call this method, you must have the `datacatalog.entries.updateOverview` IAM permission on the corresponding project.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}:modifyEntryOverview",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.modifyEntryOverview",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The full resource name of the entry.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:modifyEntryOverview",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1ModifyEntryOverviewRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1EntryOverview"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an existing entry. You must enable the Data Catalog API in the project identified by the `entry.name` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}",
+"httpMethod": "PATCH",
+"id": "datacatalog.projects.locations.entryGroups.entries.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Identifier. The resource name of an entry in URL format. Note: The entry itself and its child resources might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Names of fields whose values to overwrite on an entry. If this parameter is absent or empty, all modifiable fields are overwritten. If such fields are non-required and omitted in the request body, their values are emptied. You can modify only the fields listed below. For entries with type `DATA_STREAM`: * `schema` For entries with type `FILESET`: * `schema` * `display_name` * `description` * `gcs_fileset_spec` * `gcs_fileset_spec.file_patterns` For entries with `user_specified_type`: * `schema` * `display_name` * `description` * `user_specified_type` * `user_specified_system` * `linked_resource` * `source_system_timestamps`",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1Entry"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Entry"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"star": {
+"description": "Marks an Entry as starred by the current user. Starring information is private to each user.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}:star",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.star",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entry to mark as starred.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:star",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1StarEntryRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1StarEntryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Gets your permissions on a resource. Returns an empty set of permissions if the resource doesn't exist. Supported resources are: - Tag templates - Entry groups Note: This method gets policies only within Data Catalog and can't be used to get policies from BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources ingested into Data Catalog. No Google IAM permissions are required to call this method.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"unstar": {
+"description": "Marks an Entry as NOT starred by the current user. Starring information is private to each user.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}:unstar",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.unstar",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entry to mark as **not** starred.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:unstar",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1UnstarEntryRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1UnstarEntryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"tags": {
+"methods": {
+"create": {
+"description": "Creates a tag and assigns it to: * An Entry if the method name is `projects.locations.entryGroups.entries.tags.create`. * Or EntryGroupif the method name is `projects.locations.entryGroups.tags.create`. Note: The project identified by the `parent` parameter for the [tag] (https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.entries.tags/create#path-parameters) and the [tag template] (https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.tagTemplates/create#path-parameters) used to create the tag must be in the same organization.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}/tags",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.tags.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the resource to attach this tag to. Tags can be attached to entries or entry groups. An entry can have up to 1000 attached tags. Note: The tag and its child resources might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tags",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a tag.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}/tags/{tagsId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.entryGroups.entries.tags.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the tag to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+/tags/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists tags assigned to an Entry. The columns in the response are lowercased.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}/tags",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.entryGroups.entries.tags.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of tags to return. Default is 10. Maximum limit is 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Pagination token that specifies the next page to return. If empty, the first page is returned.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the Data Catalog resource to list the tags of. The resource can be an Entry or an EntryGroup (without `/entries/{entries}` at the end).",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tags",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1ListTagsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an existing tag.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}/tags/{tagsId}",
+"httpMethod": "PATCH",
+"id": "datacatalog.projects.locations.entryGroups.entries.tags.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the tag in URL format where tag ID is a system-generated identifier. Note: The tag itself might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+/tags/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Names of fields whose values to overwrite on a tag. Currently, a tag has the only modifiable field with the name `fields`. In general, if this parameter is absent or empty, all modifiable fields are overwritten. If such fields are non-required and omitted in the request body, their values are emptied.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"reconcile": {
+"description": "`ReconcileTags` creates or updates a list of tags on the entry. If the ReconcileTagsRequest.force_delete_missing parameter is set, the operation deletes tags not included in the input tag list. `ReconcileTags` returns a long-running operation resource that can be queried with Operations.GetOperation to return ReconcileTagsMetadata and a ReconcileTagsResponse message.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/entries/{entriesId}/tags:reconcile",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.entries.tags.reconcile",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Name of Entry to be tagged.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tags:reconcile",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1ReconcileTagsRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"tags": {
+"methods": {
+"create": {
+"description": "Creates a tag and assigns it to: * An Entry if the method name is `projects.locations.entryGroups.entries.tags.create`. * Or EntryGroupif the method name is `projects.locations.entryGroups.tags.create`. Note: The project identified by the `parent` parameter for the [tag] (https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.entries.tags/create#path-parameters) and the [tag template] (https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.tagTemplates/create#path-parameters) used to create the tag must be in the same organization.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/tags",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.entryGroups.tags.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the resource to attach this tag to. Tags can be attached to entries or entry groups. An entry can have up to 1000 attached tags. Note: The tag and its child resources might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tags",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a tag.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/tags/{tagsId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.entryGroups.tags.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the tag to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/tags/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists tags assigned to an Entry. The columns in the response are lowercased.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/tags",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.entryGroups.tags.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of tags to return. Default is 10. Maximum limit is 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Pagination token that specifies the next page to return. If empty, the first page is returned.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the Data Catalog resource to list the tags of. The resource can be an Entry or an EntryGroup (without `/entries/{entries}` at the end).",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tags",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1ListTagsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an existing tag.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/entryGroups/{entryGroupsId}/tags/{tagsId}",
+"httpMethod": "PATCH",
+"id": "datacatalog.projects.locations.entryGroups.tags.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the tag in URL format where tag ID is a system-generated identifier. Note: The tag itself might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/entryGroups/[^/]+/tags/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Names of fields whose values to overwrite on a tag. Currently, a tag has the only modifiable field with the name `fields`. In general, if this parameter is absent or empty, all modifiable fields are overwritten. If such fields are non-required and omitted in the request body, their values are emptied.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"tagTemplates": {
+"methods": {
+"create": {
+"description": "Creates a tag template. You must enable the Data Catalog API in the project identified by the `parent` parameter. For more information, see [Data Catalog resource project] (https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.tagTemplates.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project and the template location [region](https://cloud.google.com/data-catalog/docs/concepts/regions).",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"tagTemplateId": {
+"description": "Required. The ID of the tag template to create. The ID must contain only lowercase letters (a-z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum size is 64 bytes when encoded in UTF-8.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tagTemplates",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplate"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplate"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a tag template and all tags that use it. You must enable the Data Catalog API in the project identified by the `name` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.tagTemplates.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Required. If true, deletes all tags that use this template. Currently, `true` is the only supported value.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The name of the tag template to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a tag template.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.tagTemplates.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the tag template to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplate"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. May return: * A`NOT_FOUND` error if the resource doesn't exist or you don't have the permission to view it. * An empty policy if the resource exists but doesn't have a set policy. Supported resources are: - Tag templates - Entry groups Note: This method doesn't get policies from Google Cloud Platform resources ingested into Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag templates. - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.tagTemplates.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a tag template. You can't update template fields with this method. These fields are separate resources with their own create, update, and delete methods. You must enable the Data Catalog API in the project identified by the `tag_template.name` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}",
+"httpMethod": "PATCH",
+"id": "datacatalog.projects.locations.tagTemplates.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the tag template in URL format. Note: The tag template itself and its child resources might not be stored in the location specified in its name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Names of fields whose values to overwrite on a tag template. Currently, only `display_name` and `is_publicly_readable` can be overwritten. If this parameter is absent or empty, all modifiable fields are overwritten. If such fields are non-required and omitted in the request body, their values are emptied. Note: Updating the `is_publicly_readable` field may require up to 12 hours to take effect in search results.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplate"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplate"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets an access control policy for a resource. Replaces any existing policy. Supported resources are: - Tag templates - Entry groups Note: This method sets policies only within Data Catalog and can't be used to manage policies in BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources synced with the Data Catalog. To call this method, you must have the following Google IAM permissions: - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag templates. - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.tagTemplates.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Gets your permissions on a resource. Returns an empty set of permissions if the resource doesn't exist. Supported resources are: - Tag templates - Entry groups Note: This method gets policies only within Data Catalog and can't be used to get policies from BigQuery, Pub/Sub, Dataproc Metastore, and any external Google Cloud Platform resources ingested into Data Catalog. No Google IAM permissions are required to call this method.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.tagTemplates.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"fields": {
+"methods": {
+"create": {
+"description": "Creates a field in a tag template. You must enable the Data Catalog API in the project identified by the `parent` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}/fields",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.tagTemplates.fields.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the project and the template location [region](https://cloud.google.com/data-catalog/docs/concepts/regions).",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+$",
+"required": true,
+"type": "string"
+},
+"tagTemplateFieldId": {
+"description": "Required. The ID of the tag template field to create. Note: Adding a required field to an existing template is *not* allowed. Field IDs can contain letters (both uppercase and lowercase), numbers (0-9), underscores (_) and dashes (-). Field IDs must be at least 1 character long and at most 128 characters long. Field IDs must also be unique within their template.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/fields",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplateField"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplateField"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a field in a tag template and all uses of this field from the tags based on this template. You must enable the Data Catalog API in the project identified by the `name` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}/fields/{fieldsId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.tagTemplates.fields.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Required. If true, deletes this field from any tags that use it. Currently, `true` is the only supported value.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The name of the tag template field to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+/fields/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a field in a tag template. You can't update the field type with this method. You must enable the Data Catalog API in the project identified by the `name` parameter. For more information, see [Data Catalog resource project](https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}/fields/{fieldsId}",
+"httpMethod": "PATCH",
+"id": "datacatalog.projects.locations.tagTemplates.fields.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the tag template field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+/fields/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Names of fields whose values to overwrite on an individual field of a tag template. The following fields are modifiable: * `display_name` * `type.enum_type` * `is_required` If this parameter is absent or empty, all modifiable fields are overwritten. If such fields are non-required and omitted in the request body, their values are emptied with one exception: when updating an enum type, the provided values are merged with the existing values. Therefore, enum values can only be added, existing enum values cannot be deleted or renamed. Additionally, updating a template field from optional to required is *not* allowed.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplateField"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplateField"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"rename": {
+"description": "Renames a field in a tag template. You must enable the Data Catalog API in the project identified by the `name` parameter. For more information, see [Data Catalog resource project] (https://cloud.google.com/data-catalog/docs/concepts/resource-project).",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}/fields/{fieldsId}:rename",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.tagTemplates.fields.rename",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the tag template field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+/fields/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:rename",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1RenameTagTemplateFieldRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplateField"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"enumValues": {
+"methods": {
+"rename": {
+"description": "Renames an enum value in a tag template. Within a single enum field, enum values must be unique.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tagTemplates/{tagTemplatesId}/fields/{fieldsId}/enumValues/{enumValuesId}:rename",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.tagTemplates.fields.enumValues.rename",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the enum field value.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tagTemplates/[^/]+/fields/[^/]+/enumValues/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:rename",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1RenameTagTemplateFieldEnumValueRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplateField"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+},
+"taxonomies": {
+"methods": {
+"create": {
+"description": "Creates a taxonomy in a specified project. The taxonomy is initially empty, that is, it doesn't contain policy tags.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource name of the project that the taxonomy will belong to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/taxonomies",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1Taxonomy"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Taxonomy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a taxonomy, including all policy tags in this taxonomy, their associated policies, and the policy tags references from BigQuery columns.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.taxonomies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the taxonomy to delete. Note: All policy tags in this taxonomy are also deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"export": {
+"description": "Exports taxonomies in the requested type and returns them, including their policy tags. The requested taxonomies must belong to the same project. This method generates `SerializedTaxonomy` protocol buffers with nested policy tags that can be used as input for `ImportTaxonomies` calls.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies:export",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.taxonomies.export",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource name of the project that the exported taxonomies belong to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"serializedTaxonomies": {
+"description": "Serialized export taxonomies that contain all the policy tags as nested protocol buffers.",
+"location": "query",
+"type": "boolean"
+},
+"taxonomies": {
+"description": "Required. Resource names of the taxonomies to export.",
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/taxonomies:export",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1ExportTaxonomiesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.taxonomies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the taxonomy to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Taxonomy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the IAM policy for a policy tag or a taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"import": {
+"description": "Creates new taxonomies (including their policy tags) in a given project by importing from inlined or cross-regional sources. For a cross-regional source, new taxonomies are created by copying from a source in another region. For an inlined source, taxonomies and policy tags are created in bulk using nested protocol buffer structures.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies:import",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.import",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource name of project that the imported taxonomies will belong to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/taxonomies:import",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1ImportTaxonomiesRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1ImportTaxonomiesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all taxonomies in a project in a particular location that you have a permission to view.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.taxonomies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Supported field for filter is 'service' and value is 'dataplex'. Eg: service=dataplex.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return. Must be a value between 1 and 1000 inclusively. If not set, defaults to 50.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The pagination token of the next results page. If not set, the first page is returned. The token is returned in the response to a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource name of the project to list the taxonomies of.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/taxonomies",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1ListTaxonomiesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a taxonomy, including its display name, description, and activated policy types.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}",
+"httpMethod": "PATCH",
+"id": "datacatalog.projects.locations.taxonomies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Resource name of this taxonomy in URL format. Note: Policy tag manager generates unique taxonomy IDs.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Specifies fields to update. If not set, defaults to all fields you can update. For more information, see [FieldMask] (https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask).",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1Taxonomy"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Taxonomy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"replace": {
+"description": "Replaces (updates) a taxonomy and all its policy tags. The taxonomy and its entire hierarchy of policy tags must be represented literally by `SerializedTaxonomy` and the nested `SerializedPolicyTag` messages. This operation automatically does the following: - Deletes the existing policy tags that are missing from the `SerializedPolicyTag`. - Creates policy tags that don't have resource names. They are considered new. - Updates policy tags with valid resources names accordingly.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}:replace",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.replace",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the taxonomy to update.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:replace",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1ReplaceTaxonomyRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1Taxonomy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the IAM policy for a policy tag or a taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns your permissions on a specified policy tag or taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"policyTags": {
+"methods": {
+"create": {
+"description": "Creates a policy tag in a taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}/policyTags",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.policyTags.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource name of the taxonomy that the policy tag will belong to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/policyTags",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1PolicyTag"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1PolicyTag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a policy tag together with the following: * All of its descendant policy tags, if any * Policies associated with the policy tag and its descendants * References from BigQuery table schema of the policy tag and its descendants",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}/policyTags/{policyTagsId}",
+"httpMethod": "DELETE",
+"id": "datacatalog.projects.locations.taxonomies.policyTags.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the policy tag to delete. Note: All of its descendant policy tags are also deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+/policyTags/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a policy tag.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}/policyTags/{policyTagsId}",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.taxonomies.policyTags.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the policy tag.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+/policyTags/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1PolicyTag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the IAM policy for a policy tag or a taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}/policyTags/{policyTagsId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.policyTags.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+/policyTags/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all policy tags in a taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}/policyTags",
+"httpMethod": "GET",
+"id": "datacatalog.projects.locations.taxonomies.policyTags.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return. Must be a value between 1 and 1000 inclusively. If not set, defaults to 50.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The pagination token of the next results page. If not set, returns the first page. The token is returned in the response to a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource name of the taxonomy to list the policy tags of.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/policyTags",
+"response": {
+"$ref": "GoogleCloudDatacatalogV1ListPolicyTagsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a policy tag, including its display name, description, and parent policy tag.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}/policyTags/{policyTagsId}",
+"httpMethod": "PATCH",
+"id": "datacatalog.projects.locations.taxonomies.policyTags.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Resource name of this policy tag in the URL format. The policy tag manager generates unique taxonomy IDs and policy tag IDs.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+/policyTags/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Specifies the fields to update. You can update only display name, description, and parent policy tag. If not set, defaults to all updatable fields. For more information, see [FieldMask] (https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask).",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatacatalogV1PolicyTag"
+},
+"response": {
+"$ref": "GoogleCloudDatacatalogV1PolicyTag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the IAM policy for a policy tag or a taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}/policyTags/{policyTagsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.policyTags.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+/policyTags/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns your permissions on a specified policy tag or taxonomy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/taxonomies/{taxonomiesId}/policyTags/{policyTagsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "datacatalog.projects.locations.taxonomies.policyTags.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/taxonomies/[^/]+/policyTags/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241202",
+"rootUrl": "https://datacatalog.googleapis.com/",
+"schemas": {
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetIamPolicyRequest": {
+"description": "Request message for `GetIamPolicy` method.",
+"id": "GetIamPolicyRequest",
+"properties": {
+"options": {
+"$ref": "GetPolicyOptions",
+"description": "OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`."
+}
+},
+"type": "object"
+},
+"GetPolicyOptions": {
+"description": "Encapsulates settings provided to GetIamPolicy.",
+"id": "GetPolicyOptions",
+"properties": {
+"requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1BigQueryConnectionSpec": {
+"description": "Specification for the BigQuery connection.",
+"id": "GoogleCloudDatacatalogV1BigQueryConnectionSpec",
+"properties": {
+"cloudSql": {
+"$ref": "GoogleCloudDatacatalogV1CloudSqlBigQueryConnectionSpec",
+"description": "Specification for the BigQuery connection to a Cloud SQL instance."
+},
+"connectionType": {
+"description": "The type of the BigQuery connection.",
+"enum": [
+"CONNECTION_TYPE_UNSPECIFIED",
+"CLOUD_SQL"
+],
+"enumDescriptions": [
+"Unspecified type.",
+"Cloud SQL connection."
+],
+"type": "string"
+},
+"hasCredential": {
+"description": "True if there are credentials attached to the BigQuery connection; false otherwise.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1BigQueryDateShardedSpec": {
+"description": "Specification for a group of BigQuery tables with the `[prefix]YYYYMMDD` name pattern. For more information, see [Introduction to partitioned tables] (https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding).",
+"id": "GoogleCloudDatacatalogV1BigQueryDateShardedSpec",
+"properties": {
+"dataset": {
+"description": "Output only. The Data Catalog resource name of the dataset entry the current table belongs to. For example: `projects/{PROJECT_ID}/locations/{LOCATION}/entrygroups/{ENTRY_GROUP_ID}/entries/{ENTRY_ID}`.",
+"readOnly": true,
+"type": "string"
+},
+"latestShardResource": {
+"description": "Output only. BigQuery resource name of the latest shard.",
+"readOnly": true,
+"type": "string"
+},
+"shardCount": {
+"description": "Output only. Total number of shards.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"tablePrefix": {
+"description": "Output only. The table name prefix of the shards. The name of any given shard is `[table_prefix]YYYYMMDD`. For example, for the `MyTable20180101` shard, the `table_prefix` is `MyTable`.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1BigQueryRoutineSpec": {
+"description": "Fields specific for BigQuery routines.",
+"id": "GoogleCloudDatacatalogV1BigQueryRoutineSpec",
+"properties": {
+"importedLibraries": {
+"description": "Paths of the imported libraries.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1BigQueryTableSpec": {
+"description": "Describes a BigQuery table.",
+"id": "GoogleCloudDatacatalogV1BigQueryTableSpec",
+"properties": {
+"tableSourceType": {
+"description": "Output only. The table source type.",
+"enum": [
+"TABLE_SOURCE_TYPE_UNSPECIFIED",
+"BIGQUERY_VIEW",
+"BIGQUERY_TABLE",
+"BIGQUERY_MATERIALIZED_VIEW"
+],
+"enumDescriptions": [
+"Default unknown type.",
+"Table view.",
+"BigQuery native table.",
+"BigQuery materialized view."
+],
+"readOnly": true,
+"type": "string"
+},
+"tableSpec": {
+"$ref": "GoogleCloudDatacatalogV1TableSpec",
+"description": "Specification of a BigQuery table. Populated only if the `table_source_type` is `BIGQUERY_TABLE`."
+},
+"viewSpec": {
+"$ref": "GoogleCloudDatacatalogV1ViewSpec",
+"description": "Table view specification. Populated only if the `table_source_type` is `BIGQUERY_VIEW`."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1BusinessContext": {
+"description": "Business Context of the entry.",
+"id": "GoogleCloudDatacatalogV1BusinessContext",
+"properties": {
+"contacts": {
+"$ref": "GoogleCloudDatacatalogV1Contacts",
+"description": "Contact people for the entry."
+},
+"entryOverview": {
+"$ref": "GoogleCloudDatacatalogV1EntryOverview",
+"description": "Entry overview fields for rich text descriptions of entries."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1CloudBigtableInstanceSpec": {
+"description": "Specification that applies to Instance entries that are part of `CLOUD_BIGTABLE` system. (user_specified_type)",
+"id": "GoogleCloudDatacatalogV1CloudBigtableInstanceSpec",
+"properties": {
+"cloudBigtableClusterSpecs": {
+"description": "The list of clusters for the Instance.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1CloudBigtableInstanceSpecCloudBigtableClusterSpec"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1CloudBigtableInstanceSpecCloudBigtableClusterSpec": {
+"description": "Spec that applies to clusters of an Instance of Cloud Bigtable.",
+"id": "GoogleCloudDatacatalogV1CloudBigtableInstanceSpecCloudBigtableClusterSpec",
+"properties": {
+"displayName": {
+"description": "Name of the cluster.",
+"type": "string"
+},
+"linkedResource": {
+"description": "A link back to the parent resource, in this case Instance.",
+"type": "string"
+},
+"location": {
+"description": "Location of the cluster, typically a Cloud zone.",
+"type": "string"
+},
+"type": {
+"description": "Type of the resource. For a cluster this would be \"CLUSTER\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1CloudBigtableSystemSpec": {
+"description": "Specification that applies to all entries that are part of `CLOUD_BIGTABLE` system (user_specified_type)",
+"id": "GoogleCloudDatacatalogV1CloudBigtableSystemSpec",
+"properties": {
+"instanceDisplayName": {
+"description": "Display name of the Instance. This is user specified and different from the resource name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1CloudSqlBigQueryConnectionSpec": {
+"description": "Specification for the BigQuery connection to a Cloud SQL instance.",
+"id": "GoogleCloudDatacatalogV1CloudSqlBigQueryConnectionSpec",
+"properties": {
+"database": {
+"description": "Database name.",
+"type": "string"
+},
+"instanceId": {
+"description": "Cloud SQL instance ID in the format of `project:location:instance`.",
+"type": "string"
+},
+"type": {
+"description": "Type of the Cloud SQL database.",
+"enum": [
+"DATABASE_TYPE_UNSPECIFIED",
+"POSTGRES",
+"MYSQL"
+],
+"enumDescriptions": [
+"Unspecified database type.",
+"Cloud SQL for PostgreSQL.",
+"Cloud SQL for MySQL."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ColumnSchema": {
+"description": "A column within a schema. Columns can be nested inside other columns.",
+"id": "GoogleCloudDatacatalogV1ColumnSchema",
+"properties": {
+"column": {
+"description": "Required. Name of the column. Must be a UTF-8 string without dots (.). The maximum size is 64 bytes.",
+"type": "string"
+},
+"defaultValue": {
+"description": "Optional. Default value for the column.",
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of the column. Default value is an empty string. The description must be a UTF-8 string with the maximum size of 2000 bytes.",
+"type": "string"
+},
+"gcRule": {
+"description": "Optional. Garbage collection policy for the column or column family. Applies to systems like Cloud Bigtable.",
+"type": "string"
+},
+"highestIndexingType": {
+"description": "Optional. Most important inclusion of this column.",
+"enum": [
+"INDEXING_TYPE_UNSPECIFIED",
+"INDEXING_TYPE_NONE",
+"INDEXING_TYPE_NON_UNIQUE",
+"INDEXING_TYPE_UNIQUE",
+"INDEXING_TYPE_PRIMARY_KEY"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Column not a part of an index.",
+"Column Part of non unique index.",
+"Column part of unique index.",
+"Column part of the primary key."
+],
+"type": "string"
+},
+"lookerColumnSpec": {
+"$ref": "GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpec",
+"description": "Looker specific column info of this column."
+},
+"mode": {
+"description": "Optional. A column's mode indicates whether values in this column are required, nullable, or repeated. Only `NULLABLE`, `REQUIRED`, and `REPEATED` values are supported. Default mode is `NULLABLE`.",
+"type": "string"
+},
+"ordinalPosition": {
+"description": "Optional. Ordinal position",
+"format": "int32",
+"type": "integer"
+},
+"rangeElementType": {
+"$ref": "GoogleCloudDatacatalogV1ColumnSchemaFieldElementType",
+"description": "Optional. The subtype of the RANGE, if the type of this field is RANGE. If the type is RANGE, this field is required. Possible values for the field element type of a RANGE include: * DATE * DATETIME * TIMESTAMP"
+},
+"subcolumns": {
+"description": "Optional. Schema of sub-columns. A column can have zero or more sub-columns.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1ColumnSchema"
+},
+"type": "array"
+},
+"type": {
+"description": "Required. Type of the column. Must be a UTF-8 string with the maximum size of 128 bytes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ColumnSchemaFieldElementType": {
+"description": "Represents the type of a field element.",
+"id": "GoogleCloudDatacatalogV1ColumnSchemaFieldElementType",
+"properties": {
+"type": {
+"description": "Required. The type of a field element. See ColumnSchema.type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpec": {
+"description": "Column info specific to Looker System.",
+"id": "GoogleCloudDatacatalogV1ColumnSchemaLookerColumnSpec",
+"properties": {
+"type": {
+"description": "Looker specific column type of this column.",
+"enum": [
+"LOOKER_COLUMN_TYPE_UNSPECIFIED",
+"DIMENSION",
+"DIMENSION_GROUP",
+"FILTER",
+"MEASURE",
+"PARAMETER"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Dimension.",
+"Dimension group - parent for Dimension.",
+"Filter.",
+"Measure.",
+"Parameter."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1CommonUsageStats": {
+"description": "Common statistics on the entry's usage. They can be set on any system.",
+"id": "GoogleCloudDatacatalogV1CommonUsageStats",
+"properties": {
+"viewCount": {
+"description": "View count in source system.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1Contacts": {
+"description": "Contact people for the entry.",
+"id": "GoogleCloudDatacatalogV1Contacts",
+"properties": {
+"people": {
+"description": "The list of contact people for the entry.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1ContactsPerson"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ContactsPerson": {
+"description": "A contact person for the entry.",
+"id": "GoogleCloudDatacatalogV1ContactsPerson",
+"properties": {
+"designation": {
+"description": "Designation of the person, for example, Data Steward.",
+"type": "string"
+},
+"email": {
+"description": "Email of the person in the format of `john.doe@xyz`, ``, or `John Doe`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1CrossRegionalSource": {
+"description": "Cross-regional source used to import an existing taxonomy into a different region.",
+"id": "GoogleCloudDatacatalogV1CrossRegionalSource",
+"properties": {
+"taxonomy": {
+"description": "Required. The resource name of the source taxonomy to import.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DataSource": {
+"description": "Physical location of an entry.",
+"id": "GoogleCloudDatacatalogV1DataSource",
+"properties": {
+"resource": {
+"description": "Full name of a resource as defined by the service. For example: `//bigquery.googleapis.com/projects/{PROJECT_ID}/locations/{LOCATION}/datasets/{DATASET_ID}/tables/{TABLE_ID}`",
+"type": "string"
+},
+"service": {
+"description": "Service that physically stores the data.",
+"enum": [
+"SERVICE_UNSPECIFIED",
+"CLOUD_STORAGE",
+"BIGQUERY"
+],
+"enumDescriptions": [
+"Default unknown service.",
+"Google Cloud Storage service.",
+"BigQuery service."
+],
+"type": "string"
+},
+"sourceEntry": {
+"description": "Output only. Data Catalog entry name, if applicable.",
+"readOnly": true,
+"type": "string"
+},
+"storageProperties": {
+"$ref": "GoogleCloudDatacatalogV1StorageProperties",
+"description": "Detailed properties of the underlying storage."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DataSourceConnectionSpec": {
+"description": "Specification that applies to a data source connection. Valid only for entries with the `DATA_SOURCE_CONNECTION` type. Only one of internal specs can be set at the time, and cannot be changed later.",
+"id": "GoogleCloudDatacatalogV1DataSourceConnectionSpec",
+"properties": {
+"bigqueryConnectionSpec": {
+"$ref": "GoogleCloudDatacatalogV1BigQueryConnectionSpec",
+"description": "Output only. Fields specific to BigQuery connections."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DatabaseTableSpec": {
+"description": "Specification that applies to a table resource. Valid only for entries with the `TABLE` type.",
+"id": "GoogleCloudDatacatalogV1DatabaseTableSpec",
+"properties": {
+"databaseViewSpec": {
+"$ref": "GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpec",
+"description": "Spec what aplies to tables that are actually views. Not set for \"real\" tables."
+},
+"dataplexTable": {
+"$ref": "GoogleCloudDatacatalogV1DataplexTableSpec",
+"description": "Output only. Fields specific to a Dataplex table and present only in the Dataplex table entries.",
+"readOnly": true
+},
+"type": {
+"description": "Type of this table.",
+"enum": [
+"TABLE_TYPE_UNSPECIFIED",
+"NATIVE",
+"EXTERNAL"
+],
+"enumDescriptions": [
+"Default unknown table type.",
+"Native table.",
+"External table."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpec": {
+"description": "Specification that applies to database view.",
+"id": "GoogleCloudDatacatalogV1DatabaseTableSpecDatabaseViewSpec",
+"properties": {
+"baseTable": {
+"description": "Name of a singular table this view reflects one to one.",
+"type": "string"
+},
+"sqlQuery": {
+"description": "SQL query used to generate this view.",
+"type": "string"
+},
+"viewType": {
+"description": "Type of this view.",
+"enum": [
+"VIEW_TYPE_UNSPECIFIED",
+"STANDARD_VIEW",
+"MATERIALIZED_VIEW"
+],
+"enumDescriptions": [
+"Default unknown view type.",
+"Standard view.",
+"Materialized view."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DataplexExternalTable": {
+"description": "External table registered by Dataplex. Dataplex publishes data discovered from an asset into multiple other systems (BigQuery, DPMS) in form of tables. We call them \"external tables\". External tables are also synced into the Data Catalog. This message contains pointers to those external tables (fully qualified name, resource name et cetera) within the Data Catalog.",
+"id": "GoogleCloudDatacatalogV1DataplexExternalTable",
+"properties": {
+"dataCatalogEntry": {
+"description": "Name of the Data Catalog entry representing the external table.",
+"type": "string"
+},
+"fullyQualifiedName": {
+"description": "Fully qualified name (FQN) of the external table.",
+"type": "string"
+},
+"googleCloudResource": {
+"description": "Google Cloud resource name of the external table.",
+"type": "string"
+},
+"system": {
+"description": "Service in which the external table is registered.",
+"enum": [
+"INTEGRATED_SYSTEM_UNSPECIFIED",
+"BIGQUERY",
+"CLOUD_PUBSUB",
+"DATAPROC_METASTORE",
+"DATAPLEX",
+"CLOUD_SPANNER",
+"CLOUD_BIGTABLE",
+"CLOUD_SQL",
+"LOOKER",
+"VERTEX_AI"
+],
+"enumDescriptions": [
+"Default unknown system.",
+"BigQuery.",
+"Cloud Pub/Sub.",
+"Dataproc Metastore.",
+"Dataplex.",
+"Cloud Spanner",
+"Cloud Bigtable",
+"Cloud Sql",
+"Looker",
+"Vertex AI"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DataplexFilesetSpec": {
+"description": "Entry specyfication for a Dataplex fileset.",
+"id": "GoogleCloudDatacatalogV1DataplexFilesetSpec",
+"properties": {
+"dataplexSpec": {
+"$ref": "GoogleCloudDatacatalogV1DataplexSpec",
+"description": "Common Dataplex fields."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DataplexSpec": {
+"description": "Common Dataplex fields.",
+"id": "GoogleCloudDatacatalogV1DataplexSpec",
+"properties": {
+"asset": {
+"description": "Fully qualified resource name of an asset in Dataplex, to which the underlying data source (Cloud Storage bucket or BigQuery dataset) of the entity is attached.",
+"type": "string"
+},
+"compressionFormat": {
+"description": "Compression format of the data, e.g., zip, gzip etc.",
+"type": "string"
+},
+"dataFormat": {
+"$ref": "GoogleCloudDatacatalogV1PhysicalSchema",
+"description": "Format of the data."
+},
+"projectId": {
+"description": "Project ID of the underlying Cloud Storage or BigQuery data. Note that this may not be the same project as the correspondingly Dataplex lake / zone / asset.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DataplexTableSpec": {
+"description": "Entry specification for a Dataplex table.",
+"id": "GoogleCloudDatacatalogV1DataplexTableSpec",
+"properties": {
+"dataplexSpec": {
+"$ref": "GoogleCloudDatacatalogV1DataplexSpec",
+"description": "Common Dataplex fields."
+},
+"externalTables": {
+"description": "List of external tables registered by Dataplex in other systems based on the same underlying data. External tables allow to query this data in those systems.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1DataplexExternalTable"
+},
+"type": "array"
+},
+"userManaged": {
+"description": "Indicates if the table schema is managed by the user or not.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DatasetSpec": {
+"description": "Specification that applies to a dataset. Valid only for entries with the `DATASET` type.",
+"id": "GoogleCloudDatacatalogV1DatasetSpec",
+"properties": {
+"vertexDatasetSpec": {
+"$ref": "GoogleCloudDatacatalogV1VertexDatasetSpec",
+"description": "Vertex AI Dataset specific fields"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1DumpItem": {
+"description": "Wrapper for any item that can be contained in the dump.",
+"id": "GoogleCloudDatacatalogV1DumpItem",
+"properties": {
+"taggedEntry": {
+"$ref": "GoogleCloudDatacatalogV1TaggedEntry",
+"description": "Entry and its tags."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1Entry": {
+"description": "Entry metadata. A Data Catalog entry represents another resource in Google Cloud Platform (such as a BigQuery dataset or a Pub/Sub topic) or outside of it. You can use the `linked_resource` field in the entry resource to refer to the original resource ID of the source system. An entry resource contains resource details, for example, its schema. Additionally, you can attach flexible metadata to an entry in the form of a Tag.",
+"id": "GoogleCloudDatacatalogV1Entry",
+"properties": {
+"bigqueryDateShardedSpec": {
+"$ref": "GoogleCloudDatacatalogV1BigQueryDateShardedSpec",
+"description": "Output only. Specification for a group of BigQuery tables with the `[prefix]YYYYMMDD` name pattern. For more information, see [Introduction to partitioned tables] (https://cloud.google.com/bigquery/docs/partitioned-tables#partitioning_versus_sharding).",
+"readOnly": true
+},
+"bigqueryTableSpec": {
+"$ref": "GoogleCloudDatacatalogV1BigQueryTableSpec",
+"description": "Output only. Specification that applies to a BigQuery table. Valid only for entries with the `TABLE` type.",
+"readOnly": true
+},
+"businessContext": {
+"$ref": "GoogleCloudDatacatalogV1BusinessContext",
+"description": "Business Context of the entry. Not supported for BigQuery datasets"
+},
+"cloudBigtableSystemSpec": {
+"$ref": "GoogleCloudDatacatalogV1CloudBigtableSystemSpec",
+"description": "Specification that applies to Cloud Bigtable system. Only settable when `integrated_system` is equal to `CLOUD_BIGTABLE`"
+},
+"dataSource": {
+"$ref": "GoogleCloudDatacatalogV1DataSource",
+"description": "Output only. Physical location of the entry.",
+"readOnly": true
+},
+"dataSourceConnectionSpec": {
+"$ref": "GoogleCloudDatacatalogV1DataSourceConnectionSpec",
+"description": "Specification that applies to a data source connection. Valid only for entries with the `DATA_SOURCE_CONNECTION` type."
+},
+"databaseTableSpec": {
+"$ref": "GoogleCloudDatacatalogV1DatabaseTableSpec",
+"description": "Specification that applies to a table resource. Valid only for entries with the `TABLE` or `EXPLORE` type."
+},
+"datasetSpec": {
+"$ref": "GoogleCloudDatacatalogV1DatasetSpec",
+"description": "Specification that applies to a dataset."
+},
+"description": {
+"description": "Entry description that can consist of several sentences or paragraphs that describe entry contents. The description must not contain Unicode non-characters as well as C0 and C1 control codes except tabs (HT), new lines (LF), carriage returns (CR), and page breaks (FF). The maximum size is 2000 bytes when encoded in UTF-8. Default value is an empty string.",
+"type": "string"
+},
+"displayName": {
+"description": "Display name of an entry. The maximum size is 500 bytes when encoded in UTF-8. Default value is an empty string.",
+"type": "string"
+},
+"featureOnlineStoreSpec": {
+"$ref": "GoogleCloudDatacatalogV1FeatureOnlineStoreSpec",
+"description": "FeatureonlineStore spec for Vertex AI Feature Store."
+},
+"filesetSpec": {
+"$ref": "GoogleCloudDatacatalogV1FilesetSpec",
+"description": "Specification that applies to a fileset resource. Valid only for entries with the `FILESET` type."
+},
+"fullyQualifiedName": {
+"description": "[Fully Qualified Name (FQN)](https://cloud.google.com//data-catalog/docs/fully-qualified-names) of the resource. Set automatically for entries representing resources from synced systems. Settable only during creation, and read-only later. Can be used for search and lookup of the entries. ",
+"type": "string"
+},
+"gcsFilesetSpec": {
+"$ref": "GoogleCloudDatacatalogV1GcsFilesetSpec",
+"description": "Specification that applies to a Cloud Storage fileset. Valid only for entries with the `FILESET` type."
+},
+"integratedSystem": {
+"description": "Output only. Indicates the entry's source system that Data Catalog integrates with, such as BigQuery, Pub/Sub, or Dataproc Metastore.",
+"enum": [
+"INTEGRATED_SYSTEM_UNSPECIFIED",
+"BIGQUERY",
+"CLOUD_PUBSUB",
+"DATAPROC_METASTORE",
+"DATAPLEX",
+"CLOUD_SPANNER",
+"CLOUD_BIGTABLE",
+"CLOUD_SQL",
+"LOOKER",
+"VERTEX_AI"
+],
+"enumDescriptions": [
+"Default unknown system.",
+"BigQuery.",
+"Cloud Pub/Sub.",
+"Dataproc Metastore.",
+"Dataplex.",
+"Cloud Spanner",
+"Cloud Bigtable",
+"Cloud Sql",
+"Looker",
+"Vertex AI"
+],
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cloud labels attached to the entry. In Data Catalog, you can create and modify labels attached only to custom entries. Synced entries have unmodifiable labels that come from the source system.",
+"type": "object"
+},
+"linkedResource": {
+"description": "The resource this metadata entry refers to. For Google Cloud Platform resources, `linked_resource` is the [Full Resource Name] (https://cloud.google.com/apis/design/resource_names#full_resource_name). For example, the `linked_resource` for a table resource from BigQuery is: `//bigquery.googleapis.com/projects/{PROJECT_ID}/datasets/{DATASET_ID}/tables/{TABLE_ID}` Output only when the entry is one of the types in the `EntryType` enum. For entries with a `user_specified_type`, this field is optional and defaults to an empty string. The resource string must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), periods (.), colons (:), slashes (/), dashes (-), and hashes (#). The maximum size is 200 bytes when encoded in UTF-8.",
+"type": "string"
+},
+"lookerSystemSpec": {
+"$ref": "GoogleCloudDatacatalogV1LookerSystemSpec",
+"description": "Specification that applies to Looker sysstem. Only settable when `user_specified_system` is equal to `LOOKER`"
+},
+"modelSpec": {
+"$ref": "GoogleCloudDatacatalogV1ModelSpec",
+"description": "Model specification."
+},
+"name": {
+"description": "Output only. Identifier. The resource name of an entry in URL format. Note: The entry itself and its child resources might not be stored in the location specified in its name.",
+"readOnly": true,
+"type": "string"
+},
+"personalDetails": {
+"$ref": "GoogleCloudDatacatalogV1PersonalDetails",
+"description": "Output only. Additional information related to the entry. Private to the current user.",
+"readOnly": true
+},
+"routineSpec": {
+"$ref": "GoogleCloudDatacatalogV1RoutineSpec",
+"description": "Specification that applies to a user-defined function or procedure. Valid only for entries with the `ROUTINE` type."
+},
+"schema": {
+"$ref": "GoogleCloudDatacatalogV1Schema",
+"description": "Schema of the entry. An entry might not have any schema attached to it."
+},
+"serviceSpec": {
+"$ref": "GoogleCloudDatacatalogV1ServiceSpec",
+"description": "Specification that applies to a Service resource."
+},
+"sourceSystemTimestamps": {
+"$ref": "GoogleCloudDatacatalogV1SystemTimestamps",
+"description": "Timestamps from the underlying resource, not from the Data Catalog entry. Output only when the entry has a system listed in the `IntegratedSystem` enum. For entries with `user_specified_system`, this field is optional and defaults to an empty timestamp."
+},
+"sqlDatabaseSystemSpec": {
+"$ref": "GoogleCloudDatacatalogV1SqlDatabaseSystemSpec",
+"description": "Specification that applies to a relational database system. Only settable when `user_specified_system` is equal to `SQL_DATABASE`"
+},
+"type": {
+"description": "The type of the entry. For details, see [`EntryType`](#entrytype).",
+"enum": [
+"ENTRY_TYPE_UNSPECIFIED",
+"TABLE",
+"MODEL",
+"DATA_STREAM",
+"FILESET",
+"CLUSTER",
+"DATABASE",
+"DATA_SOURCE_CONNECTION",
+"ROUTINE",
+"LAKE",
+"ZONE",
+"SERVICE",
+"DATABASE_SCHEMA",
+"DASHBOARD",
+"EXPLORE",
+"LOOK",
+"FEATURE_ONLINE_STORE",
+"FEATURE_VIEW",
+"FEATURE_GROUP"
+],
+"enumDescriptions": [
+"Default unknown type.",
+"The entry type that has a GoogleSQL schema, including logical views.",
+"The type of models. For more information, see [Supported models in BigQuery ML](/bigquery/docs/bqml-introduction#supported_models).",
+"An entry type for streaming entries. For example, a Pub/Sub topic.",
+"An entry type for a set of files or objects. For example, a Cloud Storage fileset.",
+"A group of servers that work together. For example, a Kafka cluster.",
+"A database.",
+"Connection to a data source. For example, a BigQuery connection.",
+"Routine, for example, a BigQuery routine.",
+"A Dataplex lake.",
+"A Dataplex zone.",
+"A service, for example, a Dataproc Metastore service.",
+"Schema within a relational database.",
+"A Dashboard, for example from Looker.",
+"A Looker Explore. For more information, see [Looker Explore API] (https://developers.looker.com/api/explorer/4.0/methods/LookmlModel/lookml_model_explore).",
+"A Looker Look. For more information, see [Looker Look API] (https://developers.looker.com/api/explorer/4.0/methods/Look).",
+"Feature Online Store resource in Vertex AI Feature Store.",
+"Feature View resource in Vertex AI Feature Store.",
+"Feature Group resource in Vertex AI Feature Store."
+],
+"type": "string"
+},
+"usageSignal": {
+"$ref": "GoogleCloudDatacatalogV1UsageSignal",
+"description": "Resource usage statistics."
+},
+"userSpecifiedSystem": {
+"description": "Indicates the entry's source system that Data Catalog doesn't automatically integrate with. The `user_specified_system` string has the following limitations: * Is case insensitive. * Must begin with a letter or underscore. * Can only contain letters, numbers, and underscores. * Must be at least 1 character and at most 64 characters long.",
+"type": "string"
+},
+"userSpecifiedType": {
+"description": "Custom entry type that doesn't match any of the values allowed for input and listed in the `EntryType` enum. When creating an entry, first check the type values in the enum. If there are no appropriate types for the new entry, provide a custom value, for example, `my_special_type`. The `user_specified_type` string has the following limitations: * Is case insensitive. * Must begin with a letter or underscore. * Can only contain letters, numbers, and underscores. * Must be at least 1 character and at most 64 characters long.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1EntryGroup": {
+"description": "Entry group metadata. An `EntryGroup` resource represents a logical grouping of zero or more Data Catalog Entry resources.",
+"id": "GoogleCloudDatacatalogV1EntryGroup",
+"properties": {
+"dataCatalogTimestamps": {
+"$ref": "GoogleCloudDatacatalogV1SystemTimestamps",
+"description": "Output only. Timestamps of the entry group. Default value is empty.",
+"readOnly": true
+},
+"description": {
+"description": "Entry group description. Can consist of several sentences or paragraphs that describe the entry group contents. Default value is an empty string.",
+"type": "string"
+},
+"displayName": {
+"description": "A short name to identify the entry group, for example, \"analytics data - jan 2011\". Default value is an empty string.",
+"type": "string"
+},
+"name": {
+"description": "Identifier. The resource name of the entry group in URL format. Note: The entry group itself and its child resources might not be stored in the location specified in its name.",
+"type": "string"
+},
+"transferredToDataplex": {
+"description": "Optional. When set to [true], it means DataCatalog EntryGroup was transferred to Dataplex Catalog Service. It makes EntryGroup and its Entries to be read-only in DataCatalog. However, new Tags on EntryGroup and its Entries can be created. After setting the flag to [true] it cannot be unset.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1EntryOverview": {
+"description": "Entry overview fields for rich text descriptions of entries.",
+"id": "GoogleCloudDatacatalogV1EntryOverview",
+"properties": {
+"overview": {
+"description": "Entry overview with support for rich text. The overview must only contain Unicode characters, and should be formatted using HTML. The maximum length is 10 MiB as this value holds HTML descriptions including encoded images. The maximum length of the text without images is 100 KiB.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ExportTaxonomiesResponse": {
+"description": "Response message for ExportTaxonomies.",
+"id": "GoogleCloudDatacatalogV1ExportTaxonomiesResponse",
+"properties": {
+"taxonomies": {
+"description": "List of taxonomies and policy tags as nested protocol buffers.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1SerializedTaxonomy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1FeatureOnlineStoreSpec": {
+"description": "Detail description of the source information of a Vertex Feature Online Store.",
+"id": "GoogleCloudDatacatalogV1FeatureOnlineStoreSpec",
+"properties": {
+"storageType": {
+"description": "Output only. Type of underelaying storage for the FeatureOnlineStore.",
+"enum": [
+"STORAGE_TYPE_UNSPECIFIED",
+"BIGTABLE",
+"OPTIMIZED"
+],
+"enumDescriptions": [
+"Should not be used.",
+"Underlsying storgae is Bigtable.",
+"Underlaying is optimized online server (Lightning)."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1FieldType": {
+"id": "GoogleCloudDatacatalogV1FieldType",
+"properties": {
+"enumType": {
+"$ref": "GoogleCloudDatacatalogV1FieldTypeEnumType",
+"description": "An enum type."
+},
+"primitiveType": {
+"description": "Primitive types, such as string, boolean, etc.",
+"enum": [
+"PRIMITIVE_TYPE_UNSPECIFIED",
+"DOUBLE",
+"STRING",
+"BOOL",
+"TIMESTAMP",
+"RICHTEXT"
+],
+"enumDescriptions": [
+"The default invalid value for a type.",
+"A double precision number.",
+"An UTF-8 string.",
+"A boolean value.",
+"A timestamp.",
+"A Richtext description."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1FieldTypeEnumType": {
+"id": "GoogleCloudDatacatalogV1FieldTypeEnumType",
+"properties": {
+"allowedValues": {
+"description": "The set of allowed values for this enum. This set must not be empty and can include up to 100 allowed values. The display names of the values in this set must not be empty and must be case-insensitively unique within this set. The order of items in this set is preserved. This field can be used to create, remove, and reorder enum values. To rename enum values, use the `RenameTagTemplateFieldEnumValue` method.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue": {
+"id": "GoogleCloudDatacatalogV1FieldTypeEnumTypeEnumValue",
+"properties": {
+"displayName": {
+"description": "Required. The display name of the enum value. Must not be an empty string. The name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), and can't start or end with spaces. The maximum length is 200 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1FilesetSpec": {
+"description": "Specification that applies to a fileset. Valid only for entries with the 'FILESET' type.",
+"id": "GoogleCloudDatacatalogV1FilesetSpec",
+"properties": {
+"dataplexFileset": {
+"$ref": "GoogleCloudDatacatalogV1DataplexFilesetSpec",
+"description": "Fields specific to a Dataplex fileset and present only in the Dataplex fileset entries."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1GcsFileSpec": {
+"description": "Specification of a single file in Cloud Storage.",
+"id": "GoogleCloudDatacatalogV1GcsFileSpec",
+"properties": {
+"filePath": {
+"description": "Required. Full file path. Example: `gs://bucket_name/a/b.txt`.",
+"type": "string"
+},
+"gcsTimestamps": {
+"$ref": "GoogleCloudDatacatalogV1SystemTimestamps",
+"description": "Output only. Creation, modification, and expiration timestamps of a Cloud Storage file.",
+"readOnly": true
+},
+"sizeBytes": {
+"description": "Output only. File size in bytes.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1GcsFilesetSpec": {
+"description": "Describes a Cloud Storage fileset entry.",
+"id": "GoogleCloudDatacatalogV1GcsFilesetSpec",
+"properties": {
+"filePatterns": {
+"description": "Required. Patterns to identify a set of files in Google Cloud Storage. For more information, see [Wildcard Names] (https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames). Note: Currently, bucket wildcards are not supported. Examples of valid `file_patterns`: * `gs://bucket_name/dir/*`: matches all files in `bucket_name/dir` directory * `gs://bucket_name/dir/**`: matches all files in `bucket_name/dir` and all subdirectories * `gs://bucket_name/file*`: matches files prefixed by `file` in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two characters followed by `.txt` in `bucket_name` * `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel character followed by `.txt` in `bucket_name` * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match the `a/*/b` pattern, such as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt` You can combine wildcards to match complex sets of files, for example: `gs://bucket_name/[a-m]??.j*g`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sampleGcsFileSpecs": {
+"description": "Output only. Sample files contained in this fileset, not all files contained in this fileset are represented here.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1GcsFileSpec"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ImportEntriesMetadata": {
+"description": "Metadata message for long-running operation returned by the ImportEntries.",
+"id": "GoogleCloudDatacatalogV1ImportEntriesMetadata",
+"properties": {
+"errors": {
+"description": "Partial errors that are encountered during the ImportEntries operation. There is no guarantee that all the encountered errors are reported. However, if no errors are reported, it means that no errors were encountered.",
+"items": {
+"$ref": "Status"
+},
+"type": "array"
+},
+"state": {
+"description": "State of the import operation.",
+"enum": [
+"IMPORT_STATE_UNSPECIFIED",
+"IMPORT_QUEUED",
+"IMPORT_IN_PROGRESS",
+"IMPORT_DONE",
+"IMPORT_OBSOLETE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The dump with entries has been queued for import.",
+"The import of entries is in progress.",
+"The import of entries has been finished.",
+"The import of entries has been abandoned in favor of a newer request."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ImportEntriesRequest": {
+"description": "Request message for ImportEntries method.",
+"id": "GoogleCloudDatacatalogV1ImportEntriesRequest",
+"properties": {
+"gcsBucketPath": {
+"description": "Path to a Cloud Storage bucket that contains a dump ready for ingestion.",
+"type": "string"
+},
+"jobId": {
+"description": "Optional. (Optional) Dataplex task job id, if specified will be used as part of ImportEntries LRO ID",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ImportEntriesResponse": {
+"description": "Response message for long-running operation returned by the ImportEntries.",
+"id": "GoogleCloudDatacatalogV1ImportEntriesResponse",
+"properties": {
+"deletedEntriesCount": {
+"description": "Number of entries deleted as a result of import operation.",
+"format": "int64",
+"type": "string"
+},
+"upsertedEntriesCount": {
+"description": "Cumulative number of entries created and entries updated as a result of import operation.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ImportTaxonomiesRequest": {
+"description": "Request message for ImportTaxonomies.",
+"id": "GoogleCloudDatacatalogV1ImportTaxonomiesRequest",
+"properties": {
+"crossRegionalSource": {
+"$ref": "GoogleCloudDatacatalogV1CrossRegionalSource",
+"description": "Cross-regional source taxonomy to import."
+},
+"inlineSource": {
+"$ref": "GoogleCloudDatacatalogV1InlineSource",
+"description": "Inline source taxonomy to import."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ImportTaxonomiesResponse": {
+"description": "Response message for ImportTaxonomies.",
+"id": "GoogleCloudDatacatalogV1ImportTaxonomiesResponse",
+"properties": {
+"taxonomies": {
+"description": "Imported taxonomies.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1Taxonomy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1InlineSource": {
+"description": "Inline source containing taxonomies to import.",
+"id": "GoogleCloudDatacatalogV1InlineSource",
+"properties": {
+"taxonomies": {
+"description": "Required. Taxonomies to import.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1SerializedTaxonomy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ListEntriesResponse": {
+"description": "Response message for ListEntries.",
+"id": "GoogleCloudDatacatalogV1ListEntriesResponse",
+"properties": {
+"entries": {
+"description": "Entry details.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1Entry"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Pagination token of the next results page. Empty if there are no more items in results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ListEntryGroupsResponse": {
+"description": "Response message for ListEntryGroups.",
+"id": "GoogleCloudDatacatalogV1ListEntryGroupsResponse",
+"properties": {
+"entryGroups": {
+"description": "Entry group details.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1EntryGroup"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Pagination token to specify in the next call to retrieve the next page of results. Empty if there are no more items.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ListPolicyTagsResponse": {
+"description": "Response message for ListPolicyTags.",
+"id": "GoogleCloudDatacatalogV1ListPolicyTagsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Pagination token of the next results page. Empty if there are no more results in the list.",
+"type": "string"
+},
+"policyTags": {
+"description": "The policy tags that belong to the taxonomy.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1PolicyTag"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ListTagsResponse": {
+"description": "Response message for ListTags.",
+"id": "GoogleCloudDatacatalogV1ListTagsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Pagination token of the next results page. Empty if there are no more items in results.",
+"type": "string"
+},
+"tags": {
+"description": "Tag details.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ListTaxonomiesResponse": {
+"description": "Response message for ListTaxonomies.",
+"id": "GoogleCloudDatacatalogV1ListTaxonomiesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Pagination token of the next results page. Empty if there are no more results in the list.",
+"type": "string"
+},
+"taxonomies": {
+"description": "Taxonomies that the project contains.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1Taxonomy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1LookerSystemSpec": {
+"description": "Specification that applies to entries that are part `LOOKER` system (user_specified_type)",
+"id": "GoogleCloudDatacatalogV1LookerSystemSpec",
+"properties": {
+"parentInstanceDisplayName": {
+"description": "Name of the parent Looker Instance. Empty if it does not exist.",
+"type": "string"
+},
+"parentInstanceId": {
+"description": "ID of the parent Looker Instance. Empty if it does not exist. Example value: `someinstance.looker.com`",
+"type": "string"
+},
+"parentModelDisplayName": {
+"description": "Name of the parent Model. Empty if it does not exist.",
+"type": "string"
+},
+"parentModelId": {
+"description": "ID of the parent Model. Empty if it does not exist.",
+"type": "string"
+},
+"parentViewDisplayName": {
+"description": "Name of the parent View. Empty if it does not exist.",
+"type": "string"
+},
+"parentViewId": {
+"description": "ID of the parent View. Empty if it does not exist.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1MigrationConfig": {
+"description": "The configuration related to the migration to Dataplex applied to an organization or project. It is the response message for SetConfig and RetrieveEffectiveConfig.",
+"id": "GoogleCloudDatacatalogV1MigrationConfig",
+"properties": {
+"catalogUiExperience": {
+"description": "Opt-in status for the UI switch to Dataplex.",
+"enum": [
+"CATALOG_UI_EXPERIENCE_UNSPECIFIED",
+"CATALOG_UI_EXPERIENCE_ENABLED",
+"CATALOG_UI_EXPERIENCE_DISABLED"
+],
+"enumDescriptions": [
+"Default value. The default UI is Dataplex.",
+"The UI is Dataplex.",
+"The UI is Data Catalog."
+],
+"type": "string"
+},
+"tagTemplateMigration": {
+"description": "Opt-in status for the migration of Tag Templates to Dataplex.",
+"enum": [
+"TAG_TEMPLATE_MIGRATION_UNSPECIFIED",
+"TAG_TEMPLATE_MIGRATION_ENABLED",
+"TAG_TEMPLATE_MIGRATION_DISABLED"
+],
+"enumDescriptions": [
+"Default value. Migration of Tag Templates from Data Catalog to Dataplex is not performed.",
+"Migration of Tag Templates from Data Catalog to Dataplex is enabled.",
+"Migration of Tag Templates from Data Catalog to Dataplex is disabled."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ModelSpec": {
+"description": "Specification that applies to a model. Valid only for entries with the `MODEL` type.",
+"id": "GoogleCloudDatacatalogV1ModelSpec",
+"properties": {
+"vertexModelSpec": {
+"$ref": "GoogleCloudDatacatalogV1VertexModelSpec",
+"description": "Specification for vertex model resources."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ModifyEntryContactsRequest": {
+"description": "Request message for ModifyEntryContacts.",
+"id": "GoogleCloudDatacatalogV1ModifyEntryContactsRequest",
+"properties": {
+"contacts": {
+"$ref": "GoogleCloudDatacatalogV1Contacts",
+"description": "Required. The new value for the Contacts."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ModifyEntryOverviewRequest": {
+"description": "Request message for ModifyEntryOverview.",
+"id": "GoogleCloudDatacatalogV1ModifyEntryOverviewRequest",
+"properties": {
+"entryOverview": {
+"$ref": "GoogleCloudDatacatalogV1EntryOverview",
+"description": "Required. The new value for the Entry Overview."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1OrganizationConfig": {
+"description": "The configuration related to the migration from Data Catalog to Dataplex that has been applied to an organization and any projects under it. It is the response message for RetrieveConfig.",
+"id": "GoogleCloudDatacatalogV1OrganizationConfig",
+"properties": {
+"config": {
+"additionalProperties": {
+"$ref": "GoogleCloudDatacatalogV1MigrationConfig"
+},
+"description": "Map of organizations and project resource names and their configuration. The format for the map keys is `organizations/{organizationId}` or `projects/{projectId}`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PersonalDetails": {
+"description": "Entry metadata relevant only to the user and private to them.",
+"id": "GoogleCloudDatacatalogV1PersonalDetails",
+"properties": {
+"starTime": {
+"description": "Set if the entry is starred; unset otherwise.",
+"format": "google-datetime",
+"type": "string"
+},
+"starred": {
+"description": "True if the entry is starred by the user; false otherwise.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PhysicalSchema": {
+"description": "Native schema used by a resource represented as an entry. Used by query engines for deserializing and parsing source data.",
+"id": "GoogleCloudDatacatalogV1PhysicalSchema",
+"properties": {
+"avro": {
+"$ref": "GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema",
+"description": "Schema in Avro JSON format."
+},
+"csv": {
+"$ref": "GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema",
+"description": "Marks a CSV-encoded data source."
+},
+"orc": {
+"$ref": "GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema",
+"description": "Marks an ORC-encoded data source."
+},
+"parquet": {
+"$ref": "GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema",
+"description": "Marks a Parquet-encoded data source."
+},
+"protobuf": {
+"$ref": "GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema",
+"description": "Schema in protocol buffer format."
+},
+"thrift": {
+"$ref": "GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema",
+"description": "Schema in Thrift format."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema": {
+"description": "Schema in Avro JSON format.",
+"id": "GoogleCloudDatacatalogV1PhysicalSchemaAvroSchema",
+"properties": {
+"text": {
+"description": "JSON source of the Avro schema.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema": {
+"description": "Marks a CSV-encoded data source.",
+"id": "GoogleCloudDatacatalogV1PhysicalSchemaCsvSchema",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema": {
+"description": "Marks an ORC-encoded data source.",
+"id": "GoogleCloudDatacatalogV1PhysicalSchemaOrcSchema",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema": {
+"description": "Marks a Parquet-encoded data source.",
+"id": "GoogleCloudDatacatalogV1PhysicalSchemaParquetSchema",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema": {
+"description": "Schema in protocol buffer format.",
+"id": "GoogleCloudDatacatalogV1PhysicalSchemaProtobufSchema",
+"properties": {
+"text": {
+"description": "Protocol buffer source of the schema.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema": {
+"description": "Schema in Thrift format.",
+"id": "GoogleCloudDatacatalogV1PhysicalSchemaThriftSchema",
+"properties": {
+"text": {
+"description": "Thrift IDL source of the schema.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1PolicyTag": {
+"description": "Denotes one policy tag in a taxonomy, for example, SSN. Policy tags can be defined in a hierarchy. For example: ``` + Geolocation + LatLong + City + ZipCode ``` Where the \"Geolocation\" policy tag contains three children.",
+"id": "GoogleCloudDatacatalogV1PolicyTag",
+"properties": {
+"childPolicyTags": {
+"description": "Output only. Resource names of child policy tags of this policy tag.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"description": {
+"description": "Description of this policy tag. If not set, defaults to empty. The description must contain only Unicode characters, tabs, newlines, carriage returns and page breaks, and be at most 2000 bytes long when encoded in UTF-8.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. User-defined name of this policy tag. The name can't start or end with spaces and must be unique within the parent taxonomy, contain only Unicode letters, numbers, underscores, dashes and spaces, and be at most 200 bytes long when encoded in UTF-8.",
+"type": "string"
+},
+"name": {
+"description": "Identifier. Resource name of this policy tag in the URL format. The policy tag manager generates unique taxonomy IDs and policy tag IDs.",
+"type": "string"
+},
+"parentPolicyTag": {
+"description": "Resource name of this policy tag's parent policy tag. If empty, this is a top level tag. If not set, defaults to an empty string. For example, for the \"LatLong\" policy tag in the example above, this field contains the resource name of the \"Geolocation\" policy tag, and, for \"Geolocation\", this field is empty.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ReconcileTagsMetadata": {
+"description": "Long-running operation metadata message returned by the ReconcileTags.",
+"id": "GoogleCloudDatacatalogV1ReconcileTagsMetadata",
+"properties": {
+"errors": {
+"additionalProperties": {
+"$ref": "Status"
+},
+"description": "Maps the name of each tagged column (or empty string for a sole entry) to tagging operation status.",
+"type": "object"
+},
+"state": {
+"description": "State of the reconciliation operation.",
+"enum": [
+"RECONCILIATION_STATE_UNSPECIFIED",
+"RECONCILIATION_QUEUED",
+"RECONCILIATION_IN_PROGRESS",
+"RECONCILIATION_DONE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The reconciliation has been queued and awaits for execution.",
+"The reconciliation is in progress.",
+"The reconciliation has been finished."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ReconcileTagsRequest": {
+"description": "Request message for ReconcileTags.",
+"id": "GoogleCloudDatacatalogV1ReconcileTagsRequest",
+"properties": {
+"forceDeleteMissing": {
+"description": "If set to `true`, deletes entry tags related to a tag template not listed in the tags source from an entry. If set to `false`, unlisted tags are retained.",
+"type": "boolean"
+},
+"tagTemplate": {
+"description": "Required. The name of the tag template, which is used for reconciliation.",
+"type": "string"
+},
+"tags": {
+"description": "A list of tags to apply to an entry. A tag can specify a tag template, which must be the template specified in the `ReconcileTagsRequest`. The sole entry and each of its columns must be mentioned at most once.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ReconcileTagsResponse": {
+"description": "Long-running operation response message returned by ReconcileTags.",
+"id": "GoogleCloudDatacatalogV1ReconcileTagsResponse",
+"properties": {
+"createdTagsCount": {
+"description": "Number of tags created in the request.",
+"format": "int64",
+"type": "string"
+},
+"deletedTagsCount": {
+"description": "Number of tags deleted in the request.",
+"format": "int64",
+"type": "string"
+},
+"updatedTagsCount": {
+"description": "Number of tags updated in the request.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1RenameTagTemplateFieldEnumValueRequest": {
+"description": "Request message for RenameTagTemplateFieldEnumValue.",
+"id": "GoogleCloudDatacatalogV1RenameTagTemplateFieldEnumValueRequest",
+"properties": {
+"newEnumValueDisplayName": {
+"description": "Required. The new display name of the enum value. For example, `my_new_enum_value`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1RenameTagTemplateFieldRequest": {
+"description": "Request message for RenameTagTemplateField.",
+"id": "GoogleCloudDatacatalogV1RenameTagTemplateFieldRequest",
+"properties": {
+"newTagTemplateFieldId": {
+"description": "Required. The new ID of this tag template field. For example, `my_new_field`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ReplaceTaxonomyRequest": {
+"description": "Request message for ReplaceTaxonomy.",
+"id": "GoogleCloudDatacatalogV1ReplaceTaxonomyRequest",
+"properties": {
+"serializedTaxonomy": {
+"$ref": "GoogleCloudDatacatalogV1SerializedTaxonomy",
+"description": "Required. Taxonomy to update along with its child policy tags."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1RoutineSpec": {
+"description": "Specification that applies to a routine. Valid only for entries with the `ROUTINE` type.",
+"id": "GoogleCloudDatacatalogV1RoutineSpec",
+"properties": {
+"bigqueryRoutineSpec": {
+"$ref": "GoogleCloudDatacatalogV1BigQueryRoutineSpec",
+"description": "Fields specific for BigQuery routines."
+},
+"definitionBody": {
+"description": "The body of the routine.",
+"type": "string"
+},
+"language": {
+"description": "The language the routine is written in. The exact value depends on the source system. For BigQuery routines, possible values are: * `SQL` * `JAVASCRIPT`",
+"type": "string"
+},
+"returnType": {
+"description": "Return type of the argument. The exact value depends on the source system and the language.",
+"type": "string"
+},
+"routineArguments": {
+"description": "Arguments of the routine.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1RoutineSpecArgument"
+},
+"type": "array"
+},
+"routineType": {
+"description": "The type of the routine.",
+"enum": [
+"ROUTINE_TYPE_UNSPECIFIED",
+"SCALAR_FUNCTION",
+"PROCEDURE"
+],
+"enumDescriptions": [
+"Unspecified type.",
+"Non-builtin permanent scalar function.",
+"Stored procedure."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1RoutineSpecArgument": {
+"description": "Input or output argument of a function or stored procedure.",
+"id": "GoogleCloudDatacatalogV1RoutineSpecArgument",
+"properties": {
+"mode": {
+"description": "Specifies whether the argument is input or output.",
+"enum": [
+"MODE_UNSPECIFIED",
+"IN",
+"OUT",
+"INOUT"
+],
+"enumDescriptions": [
+"Unspecified mode.",
+"The argument is input-only.",
+"The argument is output-only.",
+"The argument is both an input and an output."
+],
+"type": "string"
+},
+"name": {
+"description": "The name of the argument. A return argument of a function might not have a name.",
+"type": "string"
+},
+"type": {
+"description": "Type of the argument. The exact value depends on the source system and the language.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1Schema": {
+"description": "Represents a schema, for example, a BigQuery, GoogleSQL, or Avro schema.",
+"id": "GoogleCloudDatacatalogV1Schema",
+"properties": {
+"columns": {
+"description": "The unified GoogleSQL-like schema of columns. The overall maximum number of columns and nested columns is 10,000. The maximum nested depth is 15 levels.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1ColumnSchema"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SearchCatalogRequest": {
+"description": "Request message for SearchCatalog.",
+"id": "GoogleCloudDatacatalogV1SearchCatalogRequest",
+"properties": {
+"adminSearch": {
+"description": "Optional. If set, use searchAll permission granted on organizations from `include_org_ids` and projects from `include_project_ids` instead of the fine grained per resource permissions when filtering the search results. The only allowed `order_by` criteria for admin_search mode is `default`. Using this flags guarantees a full recall of the search results.",
+"type": "boolean"
+},
+"orderBy": {
+"description": "Specifies the order of results. Currently supported case-sensitive values are: * `relevance` that can only be descending * `last_modified_timestamp [asc|desc]` with descending (`desc`) as default * `default` that can only be descending Search queries don't guarantee full recall. Results that match your query might not be returned, even in subsequent result pages. Additionally, returned (and not returned) results can vary if you repeat search queries. If you are experiencing recall issues and you don't have to fetch the results in any specific order, consider setting this parameter to `default`. If this parameter is omitted, it defaults to the descending `relevance`.",
+"type": "string"
+},
+"pageSize": {
+"description": "Upper bound on the number of results you can get in a single response. Can't be negative or 0, defaults to 10 in this case. The maximum number is 1000. If exceeded, throws an \"invalid argument\" exception.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. Pagination token that, if specified, returns the next page of search results. If empty, returns the first page. This token is returned in the SearchCatalogResponse.next_page_token field of the response to a previous SearchCatalogRequest call.",
+"type": "string"
+},
+"query": {
+"description": "Optional. The query string with a minimum of 3 characters and specific syntax. For more information, see [Data Catalog search syntax](https://cloud.google.com/data-catalog/docs/how-to/search-reference). An empty query string returns all data assets (in the specified scope) that you have access to. A query string can be a simple `xyz` or qualified by predicates: * `name:x` * `column:y` * `description:z`",
+"type": "string"
+},
+"scope": {
+"$ref": "GoogleCloudDatacatalogV1SearchCatalogRequestScope",
+"description": "Required. The scope of this search request. The `scope` is invalid if `include_org_ids`, `include_project_ids` are empty AND `include_gcp_public_datasets` is set to `false`. In this case, the request returns an error."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SearchCatalogRequestScope": {
+"description": "The criteria that select the subspace used for query matching.",
+"id": "GoogleCloudDatacatalogV1SearchCatalogRequestScope",
+"properties": {
+"includeGcpPublicDatasets": {
+"description": "If `true`, include Google Cloud public datasets in search results. By default, they are excluded. See [Google Cloud Public Datasets](/public-datasets) for more information.",
+"type": "boolean"
+},
+"includeOrgIds": {
+"description": "The list of organization IDs to search within. To find your organization ID, follow the steps from [Creating and managing organizations] (/resource-manager/docs/creating-managing-organization).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"includeProjectIds": {
+"description": "The list of project IDs to search within. For more information on the distinction between project names, IDs, and numbers, see [Projects](/docs/overview/#projects).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"includePublicTagTemplates": {
+"deprecated": true,
+"description": "Optional. This field is deprecated. The search mechanism for public and private tag templates is the same.",
+"type": "boolean"
+},
+"restrictedLocations": {
+"description": "Optional. The list of locations to search within. If empty, all locations are searched. Returns an error if any location in the list isn't one of the [Supported regions](https://cloud.google.com/data-catalog/docs/concepts/regions#supported_regions). If a location is unreachable, its name is returned in the `SearchCatalogResponse.unreachable` field. To get additional information on the error, repeat the search request and set the location name as the value of this parameter.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"starredOnly": {
+"description": "Optional. If `true`, search only among starred entries. By default, all results are returned, starred or not.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SearchCatalogResponse": {
+"description": "Response message for SearchCatalog.",
+"id": "GoogleCloudDatacatalogV1SearchCatalogResponse",
+"properties": {
+"nextPageToken": {
+"description": "Pagination token that can be used in subsequent calls to retrieve the next page of results.",
+"type": "string"
+},
+"results": {
+"description": "Search results.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1SearchCatalogResult"
+},
+"type": "array"
+},
+"totalSize": {
+"description": "The approximate total number of entries matched by the query.",
+"format": "int32",
+"type": "integer"
+},
+"unreachable": {
+"description": "Unreachable locations. Search results don't include data from those locations. To get additional information on an error, repeat the search request and restrict it to specific locations by setting the `SearchCatalogRequest.scope.restricted_locations` parameter.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SearchCatalogResult": {
+"description": "Result in the response to a search request. Each result captures details of one entry that matches the search.",
+"id": "GoogleCloudDatacatalogV1SearchCatalogResult",
+"properties": {
+"description": {
+"description": "Entry description that can consist of several sentences or paragraphs that describe entry contents.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the result.",
+"type": "string"
+},
+"fullyQualifiedName": {
+"description": "Fully qualified name (FQN) of the resource. FQNs take two forms: * For non-regionalized resources: `{SYSTEM}:{PROJECT}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}` * For regionalized resources: `{SYSTEM}:{PROJECT}.{LOCATION_ID}.{PATH_TO_RESOURCE_SEPARATED_WITH_DOTS}` Example for a DPMS table: `dataproc_metastore:PROJECT_ID.LOCATION_ID.INSTANCE_ID.DATABASE_ID.TABLE_ID`",
+"type": "string"
+},
+"integratedSystem": {
+"description": "Output only. The source system that Data Catalog automatically integrates with, such as BigQuery, Cloud Pub/Sub, or Dataproc Metastore.",
+"enum": [
+"INTEGRATED_SYSTEM_UNSPECIFIED",
+"BIGQUERY",
+"CLOUD_PUBSUB",
+"DATAPROC_METASTORE",
+"DATAPLEX",
+"CLOUD_SPANNER",
+"CLOUD_BIGTABLE",
+"CLOUD_SQL",
+"LOOKER",
+"VERTEX_AI"
+],
+"enumDescriptions": [
+"Default unknown system.",
+"BigQuery.",
+"Cloud Pub/Sub.",
+"Dataproc Metastore.",
+"Dataplex.",
+"Cloud Spanner",
+"Cloud Bigtable",
+"Cloud Sql",
+"Looker",
+"Vertex AI"
+],
+"readOnly": true,
+"type": "string"
+},
+"linkedResource": {
+"description": "The full name of the Google Cloud resource the entry belongs to. For more information, see [Full Resource Name] (/apis/design/resource_names#full_resource_name). Example: `//bigquery.googleapis.com/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID`",
+"type": "string"
+},
+"modifyTime": {
+"description": "The last modification timestamp of the entry in the source system.",
+"format": "google-datetime",
+"type": "string"
+},
+"relativeResourceName": {
+"description": "The relative name of the resource in URL format. Examples: * `projects/{PROJECT_ID}/locations/{LOCATION_ID}/entryGroups/{ENTRY_GROUP_ID}/entries/{ENTRY_ID}` * `projects/{PROJECT_ID}/tagTemplates/{TAG_TEMPLATE_ID}`",
+"type": "string"
+},
+"searchResultSubtype": {
+"description": "Sub-type of the search result. A dot-delimited full type of the resource. The same type you specify in the `type` search predicate. Examples: `entry.table`, `entry.dataStream`, `tagTemplate`.",
+"type": "string"
+},
+"searchResultType": {
+"description": "Type of the search result. You can use this field to determine which get method to call to fetch the full resource.",
+"enum": [
+"SEARCH_RESULT_TYPE_UNSPECIFIED",
+"ENTRY",
+"TAG_TEMPLATE",
+"ENTRY_GROUP"
+],
+"enumDescriptions": [
+"Default unknown type.",
+"An Entry.",
+"A TagTemplate.",
+"An EntryGroup."
+],
+"type": "string"
+},
+"userSpecifiedSystem": {
+"description": "Custom source system that you can manually integrate Data Catalog with.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SerializedPolicyTag": {
+"description": "A nested protocol buffer that represents a policy tag and all its descendants.",
+"id": "GoogleCloudDatacatalogV1SerializedPolicyTag",
+"properties": {
+"childPolicyTags": {
+"description": "Children of the policy tag, if any.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1SerializedPolicyTag"
+},
+"type": "array"
+},
+"description": {
+"description": "Description of the serialized policy tag. At most 2000 bytes when encoded in UTF-8. If not set, defaults to an empty description.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. Display name of the policy tag. At most 200 bytes when encoded in UTF-8.",
+"type": "string"
+},
+"policyTag": {
+"description": "Resource name of the policy tag. This field is ignored when calling `ImportTaxonomies`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SerializedTaxonomy": {
+"description": "A nested protocol buffer that represents a taxonomy and the hierarchy of its policy tags. Used for taxonomy replacement, import, and export.",
+"id": "GoogleCloudDatacatalogV1SerializedTaxonomy",
+"properties": {
+"activatedPolicyTypes": {
+"description": "A list of policy types that are activated per taxonomy.",
+"items": {
+"enum": [
+"POLICY_TYPE_UNSPECIFIED",
+"FINE_GRAINED_ACCESS_CONTROL"
+],
+"enumDescriptions": [
+"Unspecified policy type.",
+"Fine-grained access control policy that enables access control on tagged sub-resources."
+],
+"type": "string"
+},
+"type": "array"
+},
+"description": {
+"description": "Description of the serialized taxonomy. At most 2000 bytes when encoded in UTF-8. If not set, defaults to an empty description.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. Display name of the taxonomy. At most 200 bytes when encoded in UTF-8.",
+"type": "string"
+},
+"policyTags": {
+"description": "Top level policy tags associated with the taxonomy, if any.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1SerializedPolicyTag"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ServiceSpec": {
+"description": "Specification that applies to a Service resource. Valid only for entries with the `SERVICE` type.",
+"id": "GoogleCloudDatacatalogV1ServiceSpec",
+"properties": {
+"cloudBigtableInstanceSpec": {
+"$ref": "GoogleCloudDatacatalogV1CloudBigtableInstanceSpec",
+"description": "Specification that applies to Instance entries of `CLOUD_BIGTABLE` system."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SetConfigRequest": {
+"description": "Request message for SetConfig.",
+"id": "GoogleCloudDatacatalogV1SetConfigRequest",
+"properties": {
+"catalogUiExperience": {
+"description": "Opt-in status for the UI switch to Dataplex.",
+"enum": [
+"CATALOG_UI_EXPERIENCE_UNSPECIFIED",
+"CATALOG_UI_EXPERIENCE_ENABLED",
+"CATALOG_UI_EXPERIENCE_DISABLED"
+],
+"enumDescriptions": [
+"Default value. The default UI is Dataplex.",
+"The UI is Dataplex.",
+"The UI is Data Catalog."
+],
+"type": "string"
+},
+"tagTemplateMigration": {
+"description": "Opt-in status for the migration of Tag Templates to Dataplex.",
+"enum": [
+"TAG_TEMPLATE_MIGRATION_UNSPECIFIED",
+"TAG_TEMPLATE_MIGRATION_ENABLED",
+"TAG_TEMPLATE_MIGRATION_DISABLED"
+],
+"enumDescriptions": [
+"Default value. Migration of Tag Templates from Data Catalog to Dataplex is not performed.",
+"Migration of Tag Templates from Data Catalog to Dataplex is enabled.",
+"Migration of Tag Templates from Data Catalog to Dataplex is disabled."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SqlDatabaseSystemSpec": {
+"description": "Specification that applies to entries that are part `SQL_DATABASE` system (user_specified_type)",
+"id": "GoogleCloudDatacatalogV1SqlDatabaseSystemSpec",
+"properties": {
+"databaseVersion": {
+"description": "Version of the database engine.",
+"type": "string"
+},
+"instanceHost": {
+"description": "Host of the SQL database enum InstanceHost { UNDEFINED = 0; SELF_HOSTED = 1; CLOUD_SQL = 2; AMAZON_RDS = 3; AZURE_SQL = 4; } Host of the enclousing database instance.",
+"type": "string"
+},
+"sqlEngine": {
+"description": "SQL Database Engine. enum SqlEngine { UNDEFINED = 0; MY_SQL = 1; POSTGRE_SQL = 2; SQL_SERVER = 3; } Engine of the enclosing database instance.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1StarEntryRequest": {
+"description": "Request message for StarEntry.",
+"id": "GoogleCloudDatacatalogV1StarEntryRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1StarEntryResponse": {
+"description": "Response message for StarEntry. Empty for now",
+"id": "GoogleCloudDatacatalogV1StarEntryResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1StorageProperties": {
+"description": "Details the properties of the underlying storage.",
+"id": "GoogleCloudDatacatalogV1StorageProperties",
+"properties": {
+"filePattern": {
+"description": "Patterns to identify a set of files for this fileset. Examples of a valid `file_pattern`: * `gs://bucket_name/dir/*`: matches all files in the `bucket_name/dir` directory * `gs://bucket_name/dir/**`: matches all files in the `bucket_name/dir` and all subdirectories recursively * `gs://bucket_name/file*`: matches files prefixed by `file` in `bucket_name` * `gs://bucket_name/??.txt`: matches files with two characters followed by `.txt` in `bucket_name` * `gs://bucket_name/[aeiou].txt`: matches files that contain a single vowel character followed by `.txt` in `bucket_name` * `gs://bucket_name/[a-m].txt`: matches files that contain `a`, `b`, ... or `m` followed by `.txt` in `bucket_name` * `gs://bucket_name/a/*/b`: matches all files in `bucket_name` that match the `a/*/b` pattern, such as `a/c/b`, `a/d/b` * `gs://another_bucket/a.txt`: matches `gs://another_bucket/a.txt`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"fileType": {
+"description": "File type in MIME format, for example, `text/plain`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1SystemTimestamps": {
+"description": "Timestamps associated with this resource in a particular system.",
+"id": "GoogleCloudDatacatalogV1SystemTimestamps",
+"properties": {
+"createTime": {
+"description": "Creation timestamp of the resource within the given system.",
+"format": "google-datetime",
+"type": "string"
+},
+"expireTime": {
+"description": "Output only. Expiration timestamp of the resource within the given system. Currently only applicable to BigQuery resources.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Timestamp of the last modification of the resource or its metadata within a given system. Note: Depending on the source system, not every modification updates this timestamp. For example, BigQuery timestamps every metadata modification but not data or permission changes.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1TableSpec": {
+"description": "Normal BigQuery table specification.",
+"id": "GoogleCloudDatacatalogV1TableSpec",
+"properties": {
+"groupedEntry": {
+"description": "Output only. If the table is date-sharded, that is, it matches the `[prefix]YYYYMMDD` name pattern, this field is the Data Catalog resource name of the date-sharded grouped entry. For example: `projects/{PROJECT_ID}/locations/{LOCATION}/entrygroups/{ENTRY_GROUP_ID}/entries/{ENTRY_ID}`. Otherwise, `grouped_entry` is empty.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1Tag": {
+"description": "Tags contain custom metadata and are attached to Data Catalog resources. Tags conform with the specification of their tag template. See [Data Catalog IAM](https://cloud.google.com/data-catalog/docs/concepts/iam) for information on the permissions needed to create or view tags.",
+"id": "GoogleCloudDatacatalogV1Tag",
+"properties": {
+"column": {
+"description": "Resources like entry can have schemas associated with them. This scope allows you to attach tags to an individual column based on that schema. To attach a tag to a nested column, separate column names with a dot (`.`). Example: `column.nested_column`.",
+"type": "string"
+},
+"dataplexTransferStatus": {
+"description": "Output only. Denotes the transfer status of the Tag Template.",
+"enum": [
+"DATAPLEX_TRANSFER_STATUS_UNSPECIFIED",
+"MIGRATED",
+"TRANSFERRED"
+],
+"enumDeprecated": [
+false,
+true,
+false
+],
+"enumDescriptions": [
+"Default value. TagTemplate and its tags are only visible and editable in DataCatalog.",
+"TagTemplate and its tags are auto-copied to Dataplex service. Visible in both services. Editable in DataCatalog, read-only in Dataplex. Deprecated: Individual TagTemplate migration is deprecated in favor of organization or project wide TagTemplate migration opt-in.",
+"TagTemplate and its tags are auto-copied to Dataplex service. Visible in both services. Editable in Dataplex, read-only in DataCatalog."
+],
+"readOnly": true,
+"type": "string"
+},
+"fields": {
+"additionalProperties": {
+"$ref": "GoogleCloudDatacatalogV1TagField"
+},
+"description": "Required. Maps the ID of a tag field to its value and additional information about that field. Tag template defines valid field IDs. A tag must have at least 1 field and at most 500 fields.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. The resource name of the tag in URL format where tag ID is a system-generated identifier. Note: The tag itself might not be stored in the location specified in its name.",
+"type": "string"
+},
+"template": {
+"description": "Required. The resource name of the tag template this tag uses. Example: `projects/{PROJECT_ID}/locations/{LOCATION}/tagTemplates/{TAG_TEMPLATE_ID}` This field cannot be modified after creation.",
+"type": "string"
+},
+"templateDisplayName": {
+"description": "Output only. The display name of the tag template.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1TagField": {
+"description": "Contains the value and additional information on a field within a Tag.",
+"id": "GoogleCloudDatacatalogV1TagField",
+"properties": {
+"boolValue": {
+"description": "The value of a tag field with a boolean type.",
+"type": "boolean"
+},
+"displayName": {
+"description": "Output only. The display name of this field.",
+"readOnly": true,
+"type": "string"
+},
+"doubleValue": {
+"description": "The value of a tag field with a double type.",
+"format": "double",
+"type": "number"
+},
+"enumValue": {
+"$ref": "GoogleCloudDatacatalogV1TagFieldEnumValue",
+"description": "The value of a tag field with an enum type. This value must be one of the allowed values listed in this enum."
+},
+"order": {
+"description": "Output only. The order of this field with respect to other fields in this tag. Can be set by Tag. For example, a higher value can indicate a more important field. The value can be negative. Multiple fields can have the same order, and field orders within a tag don't have to be sequential.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"richtextValue": {
+"description": "The value of a tag field with a rich text type. The maximum length is 10 MiB as this value holds HTML descriptions including encoded images. The maximum length of the text without images is 100 KiB.",
+"type": "string"
+},
+"stringValue": {
+"description": "The value of a tag field with a string type. The maximum length is 2000 UTF-8 characters.",
+"type": "string"
+},
+"timestampValue": {
+"description": "The value of a tag field with a timestamp type.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1TagFieldEnumValue": {
+"description": "An enum value.",
+"id": "GoogleCloudDatacatalogV1TagFieldEnumValue",
+"properties": {
+"displayName": {
+"description": "The display name of the enum value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1TagTemplate": {
+"description": "A tag template defines a tag that can have one or more typed fields. The template is used to create tags that are attached to Google Cloud resources. [Tag template roles] (https://cloud.google.com/iam/docs/understanding-roles#data-catalog-roles) provide permissions to create, edit, and use the template. For example, see the [TagTemplate User] (https://cloud.google.com/data-catalog/docs/how-to/template-user) role that includes a permission to use the tag template to tag resources.",
+"id": "GoogleCloudDatacatalogV1TagTemplate",
+"properties": {
+"dataplexTransferStatus": {
+"description": "Optional. Transfer status of the TagTemplate",
+"enum": [
+"DATAPLEX_TRANSFER_STATUS_UNSPECIFIED",
+"MIGRATED",
+"TRANSFERRED"
+],
+"enumDeprecated": [
+false,
+true,
+false
+],
+"enumDescriptions": [
+"Default value. TagTemplate and its tags are only visible and editable in DataCatalog.",
+"TagTemplate and its tags are auto-copied to Dataplex service. Visible in both services. Editable in DataCatalog, read-only in Dataplex. Deprecated: Individual TagTemplate migration is deprecated in favor of organization or project wide TagTemplate migration opt-in.",
+"TagTemplate and its tags are auto-copied to Dataplex service. Visible in both services. Editable in Dataplex, read-only in DataCatalog."
+],
+"type": "string"
+},
+"displayName": {
+"description": "Display name for this template. Defaults to an empty string. The name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), and can't start or end with spaces. The maximum length is 200 characters.",
+"type": "string"
+},
+"fields": {
+"additionalProperties": {
+"$ref": "GoogleCloudDatacatalogV1TagTemplateField"
+},
+"description": "Required. Map of tag template field IDs to the settings for the field. This map is an exhaustive list of the allowed fields. The map must contain at least one field and at most 500 fields. The keys to this map are tag template field IDs. The IDs have the following limitations: * Can contain uppercase and lowercase letters, numbers (0-9) and underscores (_). * Must be at least 1 character and at most 64 characters long. * Must start with a letter or underscore.",
+"type": "object"
+},
+"isPubliclyReadable": {
+"description": "Indicates whether tags created with this template are public. Public tags do not require tag template access to appear in ListTags API response. Additionally, you can search for a public tag by value with a simple search query in addition to using a ``tag:`` predicate.",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. The resource name of the tag template in URL format. Note: The tag template itself and its child resources might not be stored in the location specified in its name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1TagTemplateField": {
+"description": "The template for an individual field within a tag template.",
+"id": "GoogleCloudDatacatalogV1TagTemplateField",
+"properties": {
+"description": {
+"description": "The description for this field. Defaults to an empty string.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name for this field. Defaults to an empty string. The name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), and can't start or end with spaces. The maximum length is 200 characters.",
+"type": "string"
+},
+"isRequired": {
+"description": "If true, this field is required. Defaults to false.",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. The resource name of the tag template field in URL format. Example: `projects/{PROJECT_ID}/locations/{LOCATION}/tagTemplates/{TAG_TEMPLATE}/fields/{FIELD}` Note: The tag template field itself might not be stored in the location specified in its name. The name must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_), and must start with a letter or underscore. The maximum length is 64 characters.",
+"type": "string"
+},
+"order": {
+"description": "The order of this field with respect to other fields in this tag template. For example, a higher value can indicate a more important field. The value can be negative. Multiple fields can have the same order and field orders within a tag don't have to be sequential.",
+"format": "int32",
+"type": "integer"
+},
+"type": {
+"$ref": "GoogleCloudDatacatalogV1FieldType",
+"description": "Required. The type of value this tag field can contain."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1TaggedEntry": {
+"description": "Wrapper containing Entry and information about Tags that should and should not be attached to it.",
+"id": "GoogleCloudDatacatalogV1TaggedEntry",
+"properties": {
+"absentTags": {
+"description": "Optional. Tags that should be deleted from the Data Catalog. Caller should populate template name and column only.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"type": "array"
+},
+"presentTags": {
+"description": "Optional. Tags that should be ingested into the Data Catalog. Caller should populate template name, column and fields.",
+"items": {
+"$ref": "GoogleCloudDatacatalogV1Tag"
+},
+"type": "array"
+},
+"v1Entry": {
+"$ref": "GoogleCloudDatacatalogV1Entry",
+"description": "Non-encrypted Data Catalog v1 Entry."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1Taxonomy": {
+"description": "A taxonomy is a collection of hierarchical policy tags that classify data along a common axis. For example, a \"data sensitivity\" taxonomy might contain the following policy tags: ``` + PII + Account number + Age + SSN + Zipcode + Financials + Revenue ``` A \"data origin\" taxonomy might contain the following policy tags: ``` + User data + Employee data + Partner data + Public data ```",
+"id": "GoogleCloudDatacatalogV1Taxonomy",
+"properties": {
+"activatedPolicyTypes": {
+"description": "Optional. A list of policy types that are activated for this taxonomy. If not set, defaults to an empty list.",
+"items": {
+"enum": [
+"POLICY_TYPE_UNSPECIFIED",
+"FINE_GRAINED_ACCESS_CONTROL"
+],
+"enumDescriptions": [
+"Unspecified policy type.",
+"Fine-grained access control policy that enables access control on tagged sub-resources."
+],
+"type": "string"
+},
+"type": "array"
+},
+"description": {
+"description": "Optional. Description of this taxonomy. If not set, defaults to empty. The description must contain only Unicode characters, tabs, newlines, carriage returns, and page breaks, and be at most 2000 bytes long when encoded in UTF-8.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. User-defined name of this taxonomy. The name can't start or end with spaces, must contain only Unicode letters, numbers, underscores, dashes, and spaces, and be at most 200 bytes long when encoded in UTF-8. The taxonomy display name must be unique within an organization.",
+"type": "string"
+},
+"name": {
+"description": "Identifier. Resource name of this taxonomy in URL format. Note: Policy tag manager generates unique taxonomy IDs.",
+"type": "string"
+},
+"policyTagCount": {
+"description": "Output only. Number of policy tags in this taxonomy.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"service": {
+"$ref": "GoogleCloudDatacatalogV1TaxonomyService",
+"description": "Output only. Identity of the service which owns the Taxonomy. This field is only populated when the taxonomy is created by a Google Cloud service. Currently only 'DATAPLEX' is supported.",
+"readOnly": true
+},
+"taxonomyTimestamps": {
+"$ref": "GoogleCloudDatacatalogV1SystemTimestamps",
+"description": "Output only. Creation and modification timestamps of this taxonomy.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1TaxonomyService": {
+"description": "The source system of the Taxonomy.",
+"id": "GoogleCloudDatacatalogV1TaxonomyService",
+"properties": {
+"identity": {
+"description": "The service agent for the service.",
+"type": "string"
+},
+"name": {
+"description": "The Google Cloud service name.",
+"enum": [
+"MANAGING_SYSTEM_UNSPECIFIED",
+"MANAGING_SYSTEM_DATAPLEX",
+"MANAGING_SYSTEM_OTHER"
+],
+"enumDescriptions": [
+"Default value",
+"Dataplex.",
+"Other"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1UnstarEntryRequest": {
+"description": "Request message for UnstarEntry.",
+"id": "GoogleCloudDatacatalogV1UnstarEntryRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1UnstarEntryResponse": {
+"description": "Response message for UnstarEntry. Empty for now",
+"id": "GoogleCloudDatacatalogV1UnstarEntryResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1UsageSignal": {
+"description": "The set of all usage signals that Data Catalog stores. Note: Usually, these signals are updated daily. In rare cases, an update may fail but will be performed again on the next day.",
+"id": "GoogleCloudDatacatalogV1UsageSignal",
+"properties": {
+"commonUsageWithinTimeRange": {
+"additionalProperties": {
+"$ref": "GoogleCloudDatacatalogV1CommonUsageStats"
+},
+"description": "Common usage statistics over each of the predefined time ranges. Supported time ranges are `{\"24H\", \"7D\", \"30D\", \"Lifetime\"}`.",
+"type": "object"
+},
+"favoriteCount": {
+"description": "Favorite count in the source system.",
+"format": "int64",
+"type": "string"
+},
+"updateTime": {
+"description": "The end timestamp of the duration of usage statistics.",
+"format": "google-datetime",
+"type": "string"
+},
+"usageWithinTimeRange": {
+"additionalProperties": {
+"$ref": "GoogleCloudDatacatalogV1UsageStats"
+},
+"description": "Output only. BigQuery usage statistics over each of the predefined time ranges. Supported time ranges are `{\"24H\", \"7D\", \"30D\"}`.",
+"readOnly": true,
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1UsageStats": {
+"description": "Detailed statistics on the entry's usage. Usage statistics have the following limitations: - Only BigQuery tables have them. - They only include BigQuery query jobs. - They might be underestimated because wildcard table references are not yet counted. For more information, see [Querying multiple tables using a wildcard table] (https://cloud.google.com/bigquery/docs/querying-wildcard-tables)",
+"id": "GoogleCloudDatacatalogV1UsageStats",
+"properties": {
+"totalCancellations": {
+"description": "The number of cancelled attempts to use the underlying entry.",
+"format": "float",
+"type": "number"
+},
+"totalCompletions": {
+"description": "The number of successful uses of the underlying entry.",
+"format": "float",
+"type": "number"
+},
+"totalExecutionTimeForCompletionsMillis": {
+"description": "Total time spent only on successful uses, in milliseconds.",
+"format": "float",
+"type": "number"
+},
+"totalFailures": {
+"description": "The number of failed attempts to use the underlying entry.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1VertexDatasetSpec": {
+"description": "Specification for vertex dataset resources.",
+"id": "GoogleCloudDatacatalogV1VertexDatasetSpec",
+"properties": {
+"dataItemCount": {
+"description": "The number of DataItems in this Dataset. Only apply for non-structured Dataset.",
+"format": "int64",
+"type": "string"
+},
+"dataType": {
+"description": "Type of the dataset.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"TABLE",
+"IMAGE",
+"TEXT",
+"VIDEO",
+"CONVERSATION",
+"TIME_SERIES",
+"DOCUMENT",
+"TEXT_TO_SPEECH",
+"TRANSLATION",
+"STORE_VISION",
+"ENTERPRISE_KNOWLEDGE_GRAPH",
+"TEXT_PROMPT"
+],
+"enumDescriptions": [
+"Should not be used.",
+"Structured data dataset.",
+"Image dataset which supports ImageClassification, ImageObjectDetection and ImageSegmentation problems.",
+"Document dataset which supports TextClassification, TextExtraction and TextSentiment problems.",
+"Video dataset which supports VideoClassification, VideoObjectTracking and VideoActionRecognition problems.",
+"Conversation dataset which supports conversation problems.",
+"TimeSeries dataset.",
+"Document dataset which supports DocumentAnnotation problems.",
+"TextToSpeech dataset which supports TextToSpeech problems.",
+"Translation dataset which supports Translation problems.",
+"Store Vision dataset which is used for HITL integration.",
+"Enterprise Knowledge Graph dataset which is used for HITL labeling integration.",
+"Text prompt dataset which supports Large Language Models."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1VertexModelSourceInfo": {
+"description": "Detail description of the source information of a Vertex model.",
+"id": "GoogleCloudDatacatalogV1VertexModelSourceInfo",
+"properties": {
+"copy": {
+"description": "If this Model is copy of another Model. If true then source_type pertains to the original.",
+"type": "boolean"
+},
+"sourceType": {
+"description": "Type of the model source.",
+"enum": [
+"MODEL_SOURCE_TYPE_UNSPECIFIED",
+"AUTOML",
+"CUSTOM",
+"BQML",
+"MODEL_GARDEN",
+"GENIE",
+"CUSTOM_TEXT_EMBEDDING",
+"MARKETPLACE"
+],
+"enumDescriptions": [
+"Should not be used.",
+"The Model is uploaded by automl training pipeline.",
+"The Model is uploaded by user or custom training pipeline.",
+"The Model is registered and sync'ed from BigQuery ML.",
+"The Model is saved or tuned from Model Garden.",
+"The Model is saved or tuned from Genie.",
+"The Model is uploaded by text embedding finetuning pipeline.",
+"The Model is saved or tuned from Marketplace."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1VertexModelSpec": {
+"description": "Specification for vertex model resources.",
+"id": "GoogleCloudDatacatalogV1VertexModelSpec",
+"properties": {
+"containerImageUri": {
+"description": "URI of the Docker image to be used as the custom container for serving predictions.",
+"type": "string"
+},
+"versionAliases": {
+"description": "User provided version aliases so that a model version can be referenced via alias",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"versionDescription": {
+"description": "The description of this version.",
+"type": "string"
+},
+"versionId": {
+"description": "The version ID of the model.",
+"type": "string"
+},
+"vertexModelSourceInfo": {
+"$ref": "GoogleCloudDatacatalogV1VertexModelSourceInfo",
+"description": "Source of a Vertex model."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatacatalogV1ViewSpec": {
+"description": "Table view specification.",
+"id": "GoogleCloudDatacatalogV1ViewSpec",
+"properties": {
+"viewQuery": {
+"description": "Output only. The query that defines the table view.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Google Cloud Data Catalog API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/datalabeling.v1beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/datalabeling.v1beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..012062d34cd8bc38e29867f46b7846a14108d02f
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/datalabeling.v1beta1.json
@@ -0,0 +1,5660 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://datalabeling.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Data Labeling",
+"description": "Public API for Google Cloud AI Data Labeling Service.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/data-labeling/docs/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "datalabeling:v1beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://datalabeling.mtls.googleapis.com/",
+"name": "datalabeling",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"annotationSpecSets": {
+"methods": {
+"create": {
+"description": "Creates an annotation spec set by providing a set of labels.",
+"flatPath": "v1beta1/projects/{projectsId}/annotationSpecSets",
+"httpMethod": "POST",
+"id": "datalabeling.projects.annotationSpecSets.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. AnnotationSpecSet resource parent, format: projects/{project_id}",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/annotationSpecSets",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1CreateAnnotationSpecSetRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpecSet"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an annotation spec set by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/annotationSpecSets/{annotationSpecSetsId}",
+"httpMethod": "DELETE",
+"id": "datalabeling.projects.annotationSpecSets.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. AnnotationSpec resource name, format: `projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/annotationSpecSets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an annotation spec set by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/annotationSpecSets/{annotationSpecSetsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.annotationSpecSets.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. AnnotationSpecSet resource name, format: projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/annotationSpecSets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpecSet"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists annotation spec sets for a project. Pagination is supported.",
+"flatPath": "v1beta1/projects/{projectsId}/annotationSpecSets",
+"httpMethod": "GET",
+"id": "datalabeling.projects.annotationSpecSets.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter is not supported at this moment.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListAnnotationSpecSetsResponse.next_page_token of the previous [DataLabelingService.ListAnnotationSpecSets] call. Return first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent of AnnotationSpecSet resource, format: projects/{project_id}",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/annotationSpecSets",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListAnnotationSpecSetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"datasets": {
+"methods": {
+"create": {
+"description": "Creates dataset. If success return a Dataset resource.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets",
+"httpMethod": "POST",
+"id": "datalabeling.projects.datasets.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Dataset resource parent, format: projects/{project_id}",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/datasets",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1CreateDatasetRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1Dataset"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a dataset by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}",
+"httpMethod": "DELETE",
+"id": "datalabeling.projects.datasets.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Dataset resource name, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"exportData": {
+"description": "Exports data and annotations from dataset.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}:exportData",
+"httpMethod": "POST",
+"id": "datalabeling.projects.datasets.exportData",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Dataset resource name, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:exportData",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1ExportDataRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets dataset by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Dataset resource name, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1Dataset"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"importData": {
+"description": "Imports data into dataset based on source locations defined in request. It can be called multiple times for the same dataset. Each dataset can only have one long running operation running on it. For example, no labeling task (also long running operation) can be started while importing is still ongoing. Vice versa.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}:importData",
+"httpMethod": "POST",
+"id": "datalabeling.projects.datasets.importData",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Dataset resource name, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:importData",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImportDataRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists datasets under a project. Pagination is supported.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter on dataset is not supported at this moment.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListDatasetsResponse.next_page_token of the previous [DataLabelingService.ListDatasets] call. Returns the first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Dataset resource parent, format: projects/{project_id}",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/datasets",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListDatasetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"annotatedDatasets": {
+"methods": {
+"delete": {
+"description": "Deletes an annotated dataset by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}",
+"httpMethod": "DELETE",
+"id": "datalabeling.projects.datasets.annotatedDatasets.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the annotated dataset to delete, format: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an annotated dataset by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the annotated dataset to get, format: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotatedDataset"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists annotated datasets for a dataset. Pagination is supported.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter is not supported at this moment.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListAnnotatedDatasetsResponse.next_page_token of the previous [DataLabelingService.ListAnnotatedDatasets] call. Return first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Name of the dataset to list annotated datasets, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/annotatedDatasets",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListAnnotatedDatasetsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"dataItems": {
+"methods": {
+"get": {
+"description": "Gets a data item in a dataset by resource name. This API can be called after data are imported into dataset.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/dataItems/{dataItemsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.dataItems.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the data item to get, format: projects/{project_id}/datasets/{dataset_id}/dataItems/{data_item_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+/dataItems/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1DataItem"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists data items in a dataset. This API can be called after data are imported into dataset. Pagination is supported.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/dataItems",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.dataItems.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter is not supported at this moment.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListDataItemsResponse.next_page_token of the previous [DataLabelingService.ListDataItems] call. Return first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Name of the dataset to list data items, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/dataItems",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListDataItemsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"examples": {
+"methods": {
+"get": {
+"description": "Gets an example by resource name, including both data and annotation.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/examples/{examplesId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.examples.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "Optional. An expression for filtering Examples. Filter by annotation_spec.display_name is supported. Format \"annotation_spec.display_name = {display_name}\"",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Name of example, format: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}/examples/{example_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+/examples/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1Example"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists examples in an annotated dataset. Pagination is supported.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/examples",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.examples.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. An expression for filtering Examples. For annotated datasets that have annotation spec set, filter by annotation_spec.display_name is supported. Format \"annotation_spec.display_name = {display_name}\"",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListExamplesResponse.next_page_token of the previous [DataLabelingService.ListExamples] call. Return first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Example resource parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/examples",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListExamplesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"feedbackThreads": {
+"methods": {
+"delete": {
+"description": "Delete a FeedbackThread.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/feedbackThreads/{feedbackThreadsId}",
+"httpMethod": "DELETE",
+"id": "datalabeling.projects.datasets.annotatedDatasets.feedbackThreads.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the FeedbackThread that is going to be deleted. Format: 'projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}'.",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+/feedbackThreads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a FeedbackThread object.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/feedbackThreads/{feedbackThreadsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.feedbackThreads.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the feedback. Format: 'projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}'.",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+/feedbackThreads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1FeedbackThread"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List FeedbackThreads with pagination.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/feedbackThreads",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.feedbackThreads.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListFeedbackThreads.next_page_token of the previous [DataLabelingService.ListFeedbackThreads] call. Return first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. FeedbackThread resource parent. Format: \"projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/feedbackThreads",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListFeedbackThreadsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"feedbackMessages": {
+"methods": {
+"create": {
+"description": "Create a FeedbackMessage object.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/feedbackThreads/{feedbackThreadsId}/feedbackMessages",
+"httpMethod": "POST",
+"id": "datalabeling.projects.datasets.annotatedDatasets.feedbackThreads.feedbackMessages.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. FeedbackMessage resource parent, format: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+/feedbackThreads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/feedbackMessages",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1FeedbackMessage"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a FeedbackMessage.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/feedbackThreads/{feedbackThreadsId}/feedbackMessages/{feedbackMessagesId}",
+"httpMethod": "DELETE",
+"id": "datalabeling.projects.datasets.annotatedDatasets.feedbackThreads.feedbackMessages.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the FeedbackMessage that is going to be deleted. Format: 'projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}/feedbackMessages/{feedback_message_id}'.",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+/feedbackThreads/[^/]+/feedbackMessages/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a FeedbackMessage object.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/feedbackThreads/{feedbackThreadsId}/feedbackMessages/{feedbackMessagesId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.feedbackThreads.feedbackMessages.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the feedback. Format: 'projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}/feedbackMessages/{feedback_message_id}'.",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+/feedbackThreads/[^/]+/feedbackMessages/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1FeedbackMessage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List FeedbackMessages with pagination.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/annotatedDatasets/{annotatedDatasetsId}/feedbackThreads/{feedbackThreadsId}/feedbackMessages",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.annotatedDatasets.feedbackThreads.feedbackMessages.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListFeedbackMessages.next_page_token of the previous [DataLabelingService.ListFeedbackMessages] call. Return first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. FeedbackMessage resource parent. Format: \"projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/annotatedDatasets/[^/]+/feedbackThreads/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/feedbackMessages",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListFeedbackMessagesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+},
+"dataItems": {
+"methods": {
+"get": {
+"description": "Gets a data item in a dataset by resource name. This API can be called after data are imported into dataset.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/dataItems/{dataItemsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.dataItems.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the data item to get, format: projects/{project_id}/datasets/{dataset_id}/dataItems/{data_item_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/dataItems/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1DataItem"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists data items in a dataset. This API can be called after data are imported into dataset. Pagination is supported.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/dataItems",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.dataItems.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter is not supported at this moment.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListDataItemsResponse.next_page_token of the previous [DataLabelingService.ListDataItems] call. Return first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Name of the dataset to list data items, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/dataItems",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListDataItemsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"evaluations": {
+"methods": {
+"get": {
+"description": "Gets an evaluation by resource name (to search, use projects.evaluations.search).",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/evaluations/{evaluationsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.datasets.evaluations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the evaluation. Format: \"projects/{project_id}/datasets/ {dataset_id}/evaluations/{evaluation_id}'",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/evaluations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1Evaluation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"exampleComparisons": {
+"methods": {
+"search": {
+"description": "Searches example comparisons from an evaluation. The return format is a list of example comparisons that show ground truth and prediction(s) for a single input. Search by providing an evaluation ID.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/evaluations/{evaluationsId}/exampleComparisons:search",
+"httpMethod": "POST",
+"id": "datalabeling.projects.datasets.evaluations.exampleComparisons.search",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Name of the Evaluation resource to search for example comparisons from. Format: \"projects/{project_id}/datasets/{dataset_id}/evaluations/ {evaluation_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+/evaluations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/exampleComparisons:search",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1SearchExampleComparisonsRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1SearchExampleComparisonsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"image": {
+"methods": {
+"label": {
+"description": "Starts a labeling task for image. The type of image labeling task is configured by feature in the request.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/image:label",
+"httpMethod": "POST",
+"id": "datalabeling.projects.datasets.image.label",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Name of the dataset to request labeling task, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/image:label",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelImageRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"text": {
+"methods": {
+"label": {
+"description": "Starts a labeling task for text. The type of text labeling task is configured by feature in the request.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/text:label",
+"httpMethod": "POST",
+"id": "datalabeling.projects.datasets.text.label",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Name of the data set to request labeling task, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/text:label",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelTextRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"video": {
+"methods": {
+"label": {
+"description": "Starts a labeling task for video. The type of video labeling task is configured by feature in the request.",
+"flatPath": "v1beta1/projects/{projectsId}/datasets/{datasetsId}/video:label",
+"httpMethod": "POST",
+"id": "datalabeling.projects.datasets.video.label",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Name of the dataset to request labeling task, format: projects/{project_id}/datasets/{dataset_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/datasets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/video:label",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelVideoRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"evaluationJobs": {
+"methods": {
+"create": {
+"description": "Creates an evaluation job.",
+"flatPath": "v1beta1/projects/{projectsId}/evaluationJobs",
+"httpMethod": "POST",
+"id": "datalabeling.projects.evaluationJobs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Evaluation job resource parent. Format: \"projects/{project_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/evaluationJobs",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1CreateEvaluationJobRequest"
+},
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationJob"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Stops and deletes an evaluation job.",
+"flatPath": "v1beta1/projects/{projectsId}/evaluationJobs/{evaluationJobsId}",
+"httpMethod": "DELETE",
+"id": "datalabeling.projects.evaluationJobs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the evaluation job that is going to be deleted. Format: \"projects/{project_id}/evaluationJobs/{evaluation_job_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/evaluationJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an evaluation job by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/evaluationJobs/{evaluationJobsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.evaluationJobs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the evaluation job. Format: \"projects/{project_id} /evaluationJobs/{evaluation_job_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/evaluationJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationJob"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all evaluation jobs within a project with possible filters. Pagination is supported.",
+"flatPath": "v1beta1/projects/{projectsId}/evaluationJobs",
+"httpMethod": "GET",
+"id": "datalabeling.projects.evaluationJobs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. You can filter the jobs to list by model_id (also known as model_name, as described in EvaluationJob.modelVersion) or by evaluation job state (as described in EvaluationJob.state). To filter by both criteria, use the `AND` operator or the `OR` operator. For example, you can use the following string for your filter: \"evaluation_job.model_id = {model_name} AND evaluation_job.state = {evaluation_job_state}\"",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by the nextPageToken in the response to the previous request. The request returns the first page if this is empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Evaluation job resource parent. Format: \"projects/{project_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/evaluationJobs",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListEvaluationJobsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an evaluation job. You can only update certain fields of the job's EvaluationJobConfig: `humanAnnotationConfig.instruction`, `exampleCount`, and `exampleSamplePercentage`. If you want to change any other aspect of the evaluation job, you must delete the job and create a new one.",
+"flatPath": "v1beta1/projects/{projectsId}/evaluationJobs/{evaluationJobsId}",
+"httpMethod": "PATCH",
+"id": "datalabeling.projects.evaluationJobs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. After you create a job, Data Labeling Service assigns a name to the job with the following format: \"projects/{project_id}/evaluationJobs/ {evaluation_job_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/evaluationJobs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Mask for which fields to update. You can only provide the following fields: * `evaluationJobConfig.humanAnnotationConfig.instruction` * `evaluationJobConfig.exampleCount` * `evaluationJobConfig.exampleSamplePercentage` You can provide more than one of these fields by separating them with commas.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationJob"
+},
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationJob"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"pause": {
+"description": "Pauses an evaluation job. Pausing an evaluation job that is already in a `PAUSED` state is a no-op.",
+"flatPath": "v1beta1/projects/{projectsId}/evaluationJobs/{evaluationJobsId}:pause",
+"httpMethod": "POST",
+"id": "datalabeling.projects.evaluationJobs.pause",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the evaluation job that is going to be paused. Format: \"projects/{project_id}/evaluationJobs/{evaluation_job_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/evaluationJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:pause",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1PauseEvaluationJobRequest"
+},
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"resume": {
+"description": "Resumes a paused evaluation job. A deleted evaluation job can't be resumed. Resuming a running or scheduled evaluation job is a no-op.",
+"flatPath": "v1beta1/projects/{projectsId}/evaluationJobs/{evaluationJobsId}:resume",
+"httpMethod": "POST",
+"id": "datalabeling.projects.evaluationJobs.resume",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the evaluation job that is going to be resumed. Format: \"projects/{project_id}/evaluationJobs/{evaluation_job_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/evaluationJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:resume",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1ResumeEvaluationJobRequest"
+},
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"evaluations": {
+"methods": {
+"search": {
+"description": "Searches evaluations within a project.",
+"flatPath": "v1beta1/projects/{projectsId}/evaluations:search",
+"httpMethod": "GET",
+"id": "datalabeling.projects.evaluations.search",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. To search evaluations, you can filter by the following: * evaluation_job.evaluation_job_id (the last part of EvaluationJob.name) * evaluation_job.model_id (the {model_name} portion of EvaluationJob.modelVersion) * evaluation_job.evaluation_job_run_time_start (Minimum threshold for the evaluationJobRunTime that created the evaluation) * evaluation_job.evaluation_job_run_time_end (Maximum threshold for the evaluationJobRunTime that created the evaluation) * evaluation_job.job_state (EvaluationJob.state) * annotation_spec.display_name (the Evaluation contains a metric for the annotation spec with this displayName) To filter by multiple critiera, use the `AND` operator or the `OR` operator. The following examples shows a string that filters by several critiera: \"evaluation_job.evaluation_job_id = {evaluation_job_id} AND evaluation_job.model_id = {model_name} AND evaluation_job.evaluation_job_run_time_start = {timestamp_1} AND evaluation_job.evaluation_job_run_time_end = {timestamp_2} AND annotation_spec.display_name = {display_name}\"",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by the nextPageToken of the response to a previous search request. If you don't specify this field, the API call requests the first page of the search.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Evaluation search parent (project ID). Format: \"projects/ {project_id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/evaluations:search",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1SearchEvaluationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"instructions": {
+"methods": {
+"create": {
+"description": "Creates an instruction for how data should be labeled.",
+"flatPath": "v1beta1/projects/{projectsId}/instructions",
+"httpMethod": "POST",
+"id": "datalabeling.projects.instructions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Instruction resource parent, format: projects/{project_id}",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/instructions",
+"request": {
+"$ref": "GoogleCloudDatalabelingV1beta1CreateInstructionRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes an instruction object by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/instructions/{instructionsId}",
+"httpMethod": "DELETE",
+"id": "datalabeling.projects.instructions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Instruction resource name, format: projects/{project_id}/instructions/{instruction_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/instructions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets an instruction by resource name.",
+"flatPath": "v1beta1/projects/{projectsId}/instructions/{instructionsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.instructions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Instruction resource name, format: projects/{project_id}/instructions/{instruction_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/instructions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1Instruction"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists instructions for a project. Pagination is supported.",
+"flatPath": "v1beta1/projects/{projectsId}/instructions",
+"httpMethod": "GET",
+"id": "datalabeling.projects.instructions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter is not supported at this moment.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by ListInstructionsResponse.next_page_token of the previous [DataLabelingService.ListInstructions] call. Return first page if empty.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Instruction resource parent, format: projects/{project_id}",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/instructions",
+"response": {
+"$ref": "GoogleCloudDatalabelingV1beta1ListInstructionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1beta1/projects/{projectsId}/operations/{operationsId}:cancel",
+"httpMethod": "GET",
+"id": "datalabeling.projects.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:cancel",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1beta1/projects/{projectsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "datalabeling.projects.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta1/projects/{projectsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "datalabeling.projects.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta1/projects/{projectsId}/operations",
+"httpMethod": "GET",
+"id": "datalabeling.projects.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/operations",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20241117",
+"rootUrl": "https://datalabeling.googleapis.com/",
+"schemas": {
+"GoogleCloudDatalabelingV1alpha1CreateInstructionMetadata": {
+"description": "Metadata of a CreateInstruction operation.",
+"id": "GoogleCloudDatalabelingV1alpha1CreateInstructionMetadata",
+"properties": {
+"createTime": {
+"description": "Timestamp when create instruction request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"instruction": {
+"description": "The name of the created Instruction. projects/{project_id}/instructions/{instruction_id}",
+"type": "string"
+},
+"partialFailures": {
+"description": "Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1ExportDataOperationMetadata": {
+"description": "Metadata of an ExportData operation.",
+"id": "GoogleCloudDatalabelingV1alpha1ExportDataOperationMetadata",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when export dataset request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of dataset to be exported. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1ExportDataOperationResponse": {
+"description": "Response used for ExportDataset longrunning operation.",
+"id": "GoogleCloudDatalabelingV1alpha1ExportDataOperationResponse",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"dataset": {
+"description": "Ouptut only. The name of dataset. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"exportCount": {
+"description": "Output only. Number of examples exported successfully.",
+"format": "int32",
+"type": "integer"
+},
+"labelStats": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelStats",
+"description": "Output only. Statistic infos of labels in the exported dataset."
+},
+"outputConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1OutputConfig",
+"description": "Output only. output_config in the ExportData request."
+},
+"totalCount": {
+"description": "Output only. Total number of examples requested to export",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1GcsDestination": {
+"description": "Export destination of the data.Only gcs path is allowed in output_uri.",
+"id": "GoogleCloudDatalabelingV1alpha1GcsDestination",
+"properties": {
+"mimeType": {
+"description": "Required. The format of the gcs destination. Only \"text/csv\" and \"application/json\" are supported.",
+"type": "string"
+},
+"outputUri": {
+"description": "Required. The output uri of destination file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1GcsFolderDestination": {
+"description": "Export folder destination of the data.",
+"id": "GoogleCloudDatalabelingV1alpha1GcsFolderDestination",
+"properties": {
+"outputFolderUri": {
+"description": "Required. Cloud Storage directory to export data to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig": {
+"description": "Configuration for how human labeling task should be done.",
+"id": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"properties": {
+"annotatedDatasetDescription": {
+"description": "Optional. A human-readable description for AnnotatedDataset. The description can be up to 10000 characters long.",
+"type": "string"
+},
+"annotatedDatasetDisplayName": {
+"description": "Required. A human-readable name for AnnotatedDataset defined by users. Maximum of 64 characters .",
+"type": "string"
+},
+"contributorEmails": {
+"description": "Optional. If you want your own labeling contributors to manage and work on this labeling request, you can set these contributors here. We will give them access to the question types in crowdcompute. Note that these emails must be registered in crowdcompute worker UI: https://crowd-compute.appspot.com/",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"instruction": {
+"description": "Required. Instruction resource name.",
+"type": "string"
+},
+"labelGroup": {
+"description": "Optional. A human-readable label used to logically group labeling tasks. This string must match the regular expression `[a-zA-Z\\\\d_-]{0,128}`.",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The Language of this question, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US. Only need to set this when task is language related. For example, French text classification.",
+"type": "string"
+},
+"questionDuration": {
+"description": "Optional. Maximum duration for contributors to answer a question. Maximum is 3600 seconds. Default is 3600 seconds.",
+"format": "google-duration",
+"type": "string"
+},
+"replicaCount": {
+"description": "Optional. Replication of questions. Each question will be sent to up to this number of contributors to label. Aggregated answers will be returned. Default is set to 1. For image related labeling, valid values are 1, 3, 5.",
+"format": "int32",
+"type": "integer"
+},
+"userEmailAddress": {
+"description": "Email of the user who started the labeling task and should be notified by email. If empty no notification will be sent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1ImportDataOperationMetadata": {
+"description": "Metadata of an ImportData operation.",
+"id": "GoogleCloudDatalabelingV1alpha1ImportDataOperationMetadata",
+"properties": {
+"createTime": {
+"description": "Output only. Timestamp when import dataset request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of imported dataset. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1ImportDataOperationResponse": {
+"description": "Response used for ImportData longrunning operation.",
+"id": "GoogleCloudDatalabelingV1alpha1ImportDataOperationResponse",
+"properties": {
+"dataset": {
+"description": "Ouptut only. The name of imported dataset.",
+"type": "string"
+},
+"importCount": {
+"description": "Output only. Number of examples imported successfully.",
+"format": "int32",
+"type": "integer"
+},
+"totalCount": {
+"description": "Output only. Total number of examples requested to import",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelImageBoundingBoxOperationMetadata": {
+"description": "Details of a LabelImageBoundingBox operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelImageBoundingBoxOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelImageBoundingPolyOperationMetadata": {
+"description": "Details of LabelImageBoundingPoly operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelImageBoundingPolyOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelImageClassificationOperationMetadata": {
+"description": "Metadata of a LabelImageClassification operation.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelImageClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelImageOrientedBoundingBoxOperationMetadata": {
+"description": "Details of a LabelImageOrientedBoundingBox operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelImageOrientedBoundingBoxOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelImagePolylineOperationMetadata": {
+"description": "Details of LabelImagePolyline operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelImagePolylineOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelImageSegmentationOperationMetadata": {
+"description": "Details of a LabelImageSegmentation operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelImageSegmentationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelOperationMetadata": {
+"description": "Metadata of a labeling operation, such as LabelImage or LabelVideo. Next tag: 23",
+"id": "GoogleCloudDatalabelingV1alpha1LabelOperationMetadata",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when labeling request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of dataset to be labeled. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"imageBoundingBoxDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelImageBoundingBoxOperationMetadata",
+"description": "Details of label image bounding box operation."
+},
+"imageBoundingPolyDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelImageBoundingPolyOperationMetadata",
+"description": "Details of label image bounding poly operation."
+},
+"imageClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelImageClassificationOperationMetadata",
+"description": "Details of label image classification operation."
+},
+"imageOrientedBoundingBoxDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelImageOrientedBoundingBoxOperationMetadata",
+"description": "Details of label image oriented bounding box operation."
+},
+"imagePolylineDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelImagePolylineOperationMetadata",
+"description": "Details of label image polyline operation."
+},
+"imageSegmentationDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelImageSegmentationOperationMetadata",
+"description": "Details of label image segmentation operation."
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+},
+"progressPercent": {
+"description": "Output only. Progress of label operation. Range: [0, 100].",
+"format": "int32",
+"type": "integer"
+},
+"textClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelTextClassificationOperationMetadata",
+"description": "Details of label text classification operation."
+},
+"textEntityExtractionDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelTextEntityExtractionOperationMetadata",
+"description": "Details of label text entity extraction operation."
+},
+"videoClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelVideoClassificationOperationMetadata",
+"description": "Details of label video classification operation."
+},
+"videoEventDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelVideoEventOperationMetadata",
+"description": "Details of label video event operation."
+},
+"videoObjectDetectionDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelVideoObjectDetectionOperationMetadata",
+"description": "Details of label video object detection operation."
+},
+"videoObjectTrackingDetails": {
+"$ref": "GoogleCloudDatalabelingV1alpha1LabelVideoObjectTrackingOperationMetadata",
+"description": "Details of label video object tracking operation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelStats": {
+"description": "Statistics about annotation specs.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelStats",
+"properties": {
+"exampleCount": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "Map of each annotation spec's example count. Key is the annotation spec name and value is the number of examples for that annotation spec. If the annotated dataset does not have annotation spec, the map will return a pair where the key is empty string and value is the total number of annotations.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelTextClassificationOperationMetadata": {
+"description": "Details of a LabelTextClassification operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelTextClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelTextEntityExtractionOperationMetadata": {
+"description": "Details of a LabelTextEntityExtraction operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelTextEntityExtractionOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelVideoClassificationOperationMetadata": {
+"description": "Details of a LabelVideoClassification operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelVideoClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelVideoEventOperationMetadata": {
+"description": "Details of a LabelVideoEvent operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelVideoEventOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelVideoObjectDetectionOperationMetadata": {
+"description": "Details of a LabelVideoObjectDetection operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelVideoObjectDetectionOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1LabelVideoObjectTrackingOperationMetadata": {
+"description": "Details of a LabelVideoObjectTracking operation metadata.",
+"id": "GoogleCloudDatalabelingV1alpha1LabelVideoObjectTrackingOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1alpha1OutputConfig": {
+"description": "The configuration of output data.",
+"id": "GoogleCloudDatalabelingV1alpha1OutputConfig",
+"properties": {
+"gcsDestination": {
+"$ref": "GoogleCloudDatalabelingV1alpha1GcsDestination",
+"description": "Output to a file in Cloud Storage. Should be used for labeling output other than image segmentation."
+},
+"gcsFolderDestination": {
+"$ref": "GoogleCloudDatalabelingV1alpha1GcsFolderDestination",
+"description": "Output to a folder in Cloud Storage. Should be used for image segmentation or document de-identification labeling outputs."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1AnnotatedDataset": {
+"description": "AnnotatedDataset is a set holding annotations for data in a Dataset. Each labeling task will generate an AnnotatedDataset under the Dataset that the task is requested for.",
+"id": "GoogleCloudDatalabelingV1beta1AnnotatedDataset",
+"properties": {
+"annotationSource": {
+"description": "Output only. Source of the annotation.",
+"enum": [
+"ANNOTATION_SOURCE_UNSPECIFIED",
+"OPERATOR"
+],
+"enumDescriptions": [
+"",
+"Answer is provided by a human contributor."
+],
+"type": "string"
+},
+"annotationType": {
+"description": "Output only. Type of the annotation. It is specified when starting labeling task.",
+"enum": [
+"ANNOTATION_TYPE_UNSPECIFIED",
+"IMAGE_CLASSIFICATION_ANNOTATION",
+"IMAGE_BOUNDING_BOX_ANNOTATION",
+"IMAGE_ORIENTED_BOUNDING_BOX_ANNOTATION",
+"IMAGE_BOUNDING_POLY_ANNOTATION",
+"IMAGE_POLYLINE_ANNOTATION",
+"IMAGE_SEGMENTATION_ANNOTATION",
+"VIDEO_SHOTS_CLASSIFICATION_ANNOTATION",
+"VIDEO_OBJECT_TRACKING_ANNOTATION",
+"VIDEO_OBJECT_DETECTION_ANNOTATION",
+"VIDEO_EVENT_ANNOTATION",
+"TEXT_CLASSIFICATION_ANNOTATION",
+"TEXT_ENTITY_EXTRACTION_ANNOTATION",
+"GENERAL_CLASSIFICATION_ANNOTATION"
+],
+"enumDescriptions": [
+"",
+"Classification annotations in an image. Allowed for continuous evaluation.",
+"Bounding box annotations in an image. A form of image object detection. Allowed for continuous evaluation.",
+"Oriented bounding box. The box does not have to be parallel to horizontal line.",
+"Bounding poly annotations in an image.",
+"Polyline annotations in an image.",
+"Segmentation annotations in an image.",
+"Classification annotations in video shots.",
+"Video object tracking annotation.",
+"Video object detection annotation.",
+"Video event annotation.",
+"Classification for text. Allowed for continuous evaluation.",
+"Entity extraction for text.",
+"General classification. Allowed for continuous evaluation."
+],
+"type": "string"
+},
+"blockingResources": {
+"description": "Output only. The names of any related resources that are blocking changes to the annotated dataset.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"completedExampleCount": {
+"description": "Output only. Number of examples that have annotation in the annotated dataset.",
+"format": "int64",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Time the AnnotatedDataset was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"description": {
+"description": "Output only. The description of the AnnotatedDataset. It is specified in HumanAnnotationConfig when user starts a labeling task. Maximum of 10000 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "Output only. The display name of the AnnotatedDataset. It is specified in HumanAnnotationConfig when user starts a labeling task. Maximum of 64 characters.",
+"type": "string"
+},
+"exampleCount": {
+"description": "Output only. Number of examples in the annotated dataset.",
+"format": "int64",
+"type": "string"
+},
+"labelStats": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelStats",
+"description": "Output only. Per label statistics."
+},
+"metadata": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotatedDatasetMetadata",
+"description": "Output only. Additional information about AnnotatedDataset."
+},
+"name": {
+"description": "Output only. AnnotatedDataset resource name in format of: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1AnnotatedDatasetMetadata": {
+"description": "Metadata on AnnotatedDataset.",
+"id": "GoogleCloudDatalabelingV1beta1AnnotatedDatasetMetadata",
+"properties": {
+"boundingPolyConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1BoundingPolyConfig",
+"description": "Configuration for image bounding box and bounding poly task."
+},
+"eventConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1EventConfig",
+"description": "Configuration for video event labeling task."
+},
+"humanAnnotationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "HumanAnnotationConfig used when requesting the human labeling task for this AnnotatedDataset."
+},
+"imageClassificationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImageClassificationConfig",
+"description": "Configuration for image classification task."
+},
+"objectDetectionConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1ObjectDetectionConfig",
+"description": "Configuration for video object detection task."
+},
+"objectTrackingConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1ObjectTrackingConfig",
+"description": "Configuration for video object tracking task."
+},
+"polylineConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1PolylineConfig",
+"description": "Configuration for image polyline task."
+},
+"segmentationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1SegmentationConfig",
+"description": "Configuration for image segmentation task."
+},
+"textClassificationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextClassificationConfig",
+"description": "Configuration for text classification task."
+},
+"textEntityExtractionConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextEntityExtractionConfig",
+"description": "Configuration for text entity extraction task."
+},
+"videoClassificationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1VideoClassificationConfig",
+"description": "Configuration for video classification task."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Annotation": {
+"description": "Annotation for Example. Each example may have one or more annotations. For example in image classification problem, each image might have one or more labels. We call labels binded with this image an Annotation.",
+"id": "GoogleCloudDatalabelingV1beta1Annotation",
+"properties": {
+"annotationMetadata": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationMetadata",
+"description": "Output only. Annotation metadata, including information like votes for labels."
+},
+"annotationSentiment": {
+"description": "Output only. Sentiment for this annotation.",
+"enum": [
+"ANNOTATION_SENTIMENT_UNSPECIFIED",
+"NEGATIVE",
+"POSITIVE"
+],
+"enumDescriptions": [
+"",
+"This annotation describes negatively about the data.",
+"This label describes positively about the data."
+],
+"type": "string"
+},
+"annotationSource": {
+"description": "Output only. The source of the annotation.",
+"enum": [
+"ANNOTATION_SOURCE_UNSPECIFIED",
+"OPERATOR"
+],
+"enumDescriptions": [
+"",
+"Answer is provided by a human contributor."
+],
+"type": "string"
+},
+"annotationValue": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationValue",
+"description": "Output only. This is the actual annotation value, e.g classification, bounding box values are stored here."
+},
+"name": {
+"description": "Output only. Unique name of this annotation, format is: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset}/examples/{example_id}/annotations/{annotation_id}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1AnnotationMetadata": {
+"description": "Additional information associated with the annotation.",
+"id": "GoogleCloudDatalabelingV1beta1AnnotationMetadata",
+"properties": {
+"operatorMetadata": {
+"$ref": "GoogleCloudDatalabelingV1beta1OperatorMetadata",
+"description": "Metadata related to human labeling."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1AnnotationSpec": {
+"description": "Container of information related to one possible annotation that can be used in a labeling task. For example, an image classification task where images are labeled as `dog` or `cat` must reference an AnnotationSpec for `dog` and an AnnotationSpec for `cat`.",
+"id": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"properties": {
+"description": {
+"description": "Optional. User-provided description of the annotation specification. The description can be up to 10,000 characters long.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The display name of the AnnotationSpec. Maximum of 64 characters.",
+"type": "string"
+},
+"index": {
+"description": "Output only. This is the integer index of the AnnotationSpec. The index for the whole AnnotationSpecSet is sequential starting from 0. For example, an AnnotationSpecSet with classes `dog` and `cat`, might contain one AnnotationSpec with `{ display_name: \"dog\", index: 0 }` and one AnnotationSpec with `{ display_name: \"cat\", index: 1 }`. This is especially useful for model training as it encodes the string labels into numeric values.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1AnnotationSpecSet": {
+"description": "An AnnotationSpecSet is a collection of label definitions. For example, in image classification tasks, you define a set of possible labels for images as an AnnotationSpecSet. An AnnotationSpecSet is immutable upon creation.",
+"id": "GoogleCloudDatalabelingV1beta1AnnotationSpecSet",
+"properties": {
+"annotationSpecs": {
+"description": "Required. The array of AnnotationSpecs that you define when you create the AnnotationSpecSet. These are the possible labels for the labeling task.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec"
+},
+"type": "array"
+},
+"blockingResources": {
+"description": "Output only. The names of any related resources that are blocking changes to the annotation spec set.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"description": {
+"description": "Optional. User-provided description of the annotation specification set. The description can be up to 10,000 characters long.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The display name for AnnotationSpecSet that you define when you create it. Maximum of 64 characters.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The AnnotationSpecSet resource name in the following format: \"projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1AnnotationSpecSetConfig": {
+"description": "Annotation spec set with the setting of allowing multi labels or not.",
+"id": "GoogleCloudDatalabelingV1beta1AnnotationSpecSetConfig",
+"properties": {
+"allowMultiLabel": {
+"description": "Optional. If allow_multi_label is true, contributors are able to choose multiple labels from one annotation spec set.",
+"type": "boolean"
+},
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1AnnotationValue": {
+"description": "Annotation value for an example.",
+"id": "GoogleCloudDatalabelingV1beta1AnnotationValue",
+"properties": {
+"imageBoundingPolyAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImageBoundingPolyAnnotation",
+"description": "Annotation value for image bounding box, oriented bounding box and polygon cases."
+},
+"imageClassificationAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImageClassificationAnnotation",
+"description": "Annotation value for image classification case."
+},
+"imagePolylineAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImagePolylineAnnotation",
+"description": "Annotation value for image polyline cases. Polyline here is different from BoundingPoly. It is formed by line segments connected to each other but not closed form(Bounding Poly). The line segments can cross each other."
+},
+"imageSegmentationAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImageSegmentationAnnotation",
+"description": "Annotation value for image segmentation."
+},
+"textClassificationAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextClassificationAnnotation",
+"description": "Annotation value for text classification case."
+},
+"textEntityExtractionAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextEntityExtractionAnnotation",
+"description": "Annotation value for text entity extraction case."
+},
+"videoClassificationAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1VideoClassificationAnnotation",
+"description": "Annotation value for video classification case."
+},
+"videoEventAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1VideoEventAnnotation",
+"description": "Annotation value for video event case."
+},
+"videoObjectTrackingAnnotation": {
+"$ref": "GoogleCloudDatalabelingV1beta1VideoObjectTrackingAnnotation",
+"description": "Annotation value for video object detection and tracking case."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Attempt": {
+"description": "Records a failed evaluation job run.",
+"id": "GoogleCloudDatalabelingV1beta1Attempt",
+"properties": {
+"attemptTime": {
+"format": "google-datetime",
+"type": "string"
+},
+"partialFailures": {
+"description": "Details of errors that occurred.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1BigQuerySource": {
+"description": "The BigQuery location for input data. If used in an EvaluationJob, this is where the service saves the prediction input and output sampled from the model version.",
+"id": "GoogleCloudDatalabelingV1beta1BigQuerySource",
+"properties": {
+"inputUri": {
+"description": "Required. BigQuery URI to a table, up to 2,000 characters long. If you specify the URI of a table that does not exist, Data Labeling Service creates a table at the URI with the correct schema when you create your EvaluationJob. If you specify the URI of a table that already exists, it must have the [correct schema](/ml-engine/docs/continuous-evaluation/create-job#table-schema). Provide the table URI in the following format: \"bq://{your_project_id}/ {your_dataset_name}/{your_table_name}\" [Learn more](/ml-engine/docs/continuous-evaluation/create-job#table-schema).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1BoundingBoxEvaluationOptions": {
+"description": "Options regarding evaluation between bounding boxes.",
+"id": "GoogleCloudDatalabelingV1beta1BoundingBoxEvaluationOptions",
+"properties": {
+"iouThreshold": {
+"description": "Minimum [intersection-over-union (IOU)](/vision/automl/object-detection/docs/evaluate#intersection-over-union) required for 2 bounding boxes to be considered a match. This must be a number between 0 and 1.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1BoundingPoly": {
+"description": "A bounding polygon in the image.",
+"id": "GoogleCloudDatalabelingV1beta1BoundingPoly",
+"properties": {
+"vertices": {
+"description": "The bounding polygon vertices.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Vertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1BoundingPolyConfig": {
+"description": "Config for image bounding poly (and bounding box) human labeling task.",
+"id": "GoogleCloudDatalabelingV1beta1BoundingPolyConfig",
+"properties": {
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name.",
+"type": "string"
+},
+"instructionMessage": {
+"description": "Optional. Instruction message showed on contributors UI.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ClassificationMetadata": {
+"description": "Metadata for classification annotations.",
+"id": "GoogleCloudDatalabelingV1beta1ClassificationMetadata",
+"properties": {
+"isMultiLabel": {
+"description": "Whether the classification task is multi-label or not.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ClassificationMetrics": {
+"description": "Metrics calculated for a classification model.",
+"id": "GoogleCloudDatalabelingV1beta1ClassificationMetrics",
+"properties": {
+"confusionMatrix": {
+"$ref": "GoogleCloudDatalabelingV1beta1ConfusionMatrix",
+"description": "Confusion matrix of predicted labels vs. ground truth labels."
+},
+"prCurve": {
+"$ref": "GoogleCloudDatalabelingV1beta1PrCurve",
+"description": "Precision-recall curve based on ground truth labels, predicted labels, and scores for the predicted labels."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ConfidenceMetricsEntry": {
+"id": "GoogleCloudDatalabelingV1beta1ConfidenceMetricsEntry",
+"properties": {
+"confidenceThreshold": {
+"description": "Threshold used for this entry. For classification tasks, this is a classification threshold: a predicted label is categorized as positive or negative (in the context of this point on the PR curve) based on whether the label's score meets this threshold. For image object detection (bounding box) tasks, this is the [intersection-over-union (IOU)](/vision/automl/object-detection/docs/evaluate#intersection-over-union) threshold for the context of this point on the PR curve.",
+"format": "float",
+"type": "number"
+},
+"f1Score": {
+"description": "Harmonic mean of recall and precision.",
+"format": "float",
+"type": "number"
+},
+"f1ScoreAt1": {
+"description": "The harmonic mean of recall_at1 and precision_at1.",
+"format": "float",
+"type": "number"
+},
+"f1ScoreAt5": {
+"description": "The harmonic mean of recall_at5 and precision_at5.",
+"format": "float",
+"type": "number"
+},
+"precision": {
+"description": "Precision value.",
+"format": "float",
+"type": "number"
+},
+"precisionAt1": {
+"description": "Precision value for entries with label that has highest score.",
+"format": "float",
+"type": "number"
+},
+"precisionAt5": {
+"description": "Precision value for entries with label that has highest 5 scores.",
+"format": "float",
+"type": "number"
+},
+"recall": {
+"description": "Recall value.",
+"format": "float",
+"type": "number"
+},
+"recallAt1": {
+"description": "Recall value for entries with label that has highest score.",
+"format": "float",
+"type": "number"
+},
+"recallAt5": {
+"description": "Recall value for entries with label that has highest 5 scores.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ConfusionMatrix": {
+"description": "Confusion matrix of the model running the classification. Only applicable when the metrics entry aggregates multiple labels. Not applicable when the entry is for a single label.",
+"id": "GoogleCloudDatalabelingV1beta1ConfusionMatrix",
+"properties": {
+"row": {
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Row"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ConfusionMatrixEntry": {
+"id": "GoogleCloudDatalabelingV1beta1ConfusionMatrixEntry",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "The annotation spec of a predicted label."
+},
+"itemCount": {
+"description": "Number of items predicted to have this label. (The ground truth label for these items is the `Row.annotationSpec` of this entry's parent.)",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1CreateAnnotationSpecSetRequest": {
+"description": "Request message for CreateAnnotationSpecSet.",
+"id": "GoogleCloudDatalabelingV1beta1CreateAnnotationSpecSetRequest",
+"properties": {
+"annotationSpecSet": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpecSet",
+"description": "Required. Annotation spec set to create. Annotation specs must be included. Only one annotation spec will be accepted for annotation specs with same display_name."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1CreateDatasetRequest": {
+"description": "Request message for CreateDataset.",
+"id": "GoogleCloudDatalabelingV1beta1CreateDatasetRequest",
+"properties": {
+"dataset": {
+"$ref": "GoogleCloudDatalabelingV1beta1Dataset",
+"description": "Required. The dataset to be created."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1CreateEvaluationJobRequest": {
+"description": "Request message for CreateEvaluationJob.",
+"id": "GoogleCloudDatalabelingV1beta1CreateEvaluationJobRequest",
+"properties": {
+"job": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationJob",
+"description": "Required. The evaluation job to create."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1CreateInstructionMetadata": {
+"description": "Metadata of a CreateInstruction operation.",
+"id": "GoogleCloudDatalabelingV1beta1CreateInstructionMetadata",
+"properties": {
+"createTime": {
+"description": "Timestamp when create instruction request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"instruction": {
+"description": "The name of the created Instruction. projects/{project_id}/instructions/{instruction_id}",
+"type": "string"
+},
+"partialFailures": {
+"description": "Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1CreateInstructionRequest": {
+"description": "Request message for CreateInstruction.",
+"id": "GoogleCloudDatalabelingV1beta1CreateInstructionRequest",
+"properties": {
+"instruction": {
+"$ref": "GoogleCloudDatalabelingV1beta1Instruction",
+"description": "Required. Instruction of how to perform the labeling task."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1CsvInstruction": {
+"description": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file.",
+"id": "GoogleCloudDatalabelingV1beta1CsvInstruction",
+"properties": {
+"gcsFileUri": {
+"description": "CSV file for the instruction. Only gcs path is allowed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1DataItem": {
+"description": "DataItem is a piece of data, without annotation. For example, an image.",
+"id": "GoogleCloudDatalabelingV1beta1DataItem",
+"properties": {
+"imagePayload": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImagePayload",
+"description": "The image payload, a container of the image bytes/uri."
+},
+"name": {
+"description": "Output only. Name of the data item, in format of: projects/{project_id}/datasets/{dataset_id}/dataItems/{data_item_id}",
+"type": "string"
+},
+"textPayload": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextPayload",
+"description": "The text payload, a container of text content."
+},
+"videoPayload": {
+"$ref": "GoogleCloudDatalabelingV1beta1VideoPayload",
+"description": "The video payload, a container of the video uri."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Dataset": {
+"description": "Dataset is the resource to hold your data. You can request multiple labeling tasks for a dataset while each one will generate an AnnotatedDataset.",
+"id": "GoogleCloudDatalabelingV1beta1Dataset",
+"properties": {
+"blockingResources": {
+"description": "Output only. The names of any related resources that are blocking changes to the dataset.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Output only. Time the dataset is created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataItemCount": {
+"description": "Output only. The number of data items in the dataset.",
+"format": "int64",
+"type": "string"
+},
+"description": {
+"description": "Optional. User-provided description of the annotation specification set. The description can be up to 10000 characters long.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The display name of the dataset. Maximum of 64 characters.",
+"type": "string"
+},
+"inputConfigs": {
+"description": "Output only. This is populated with the original input configs where ImportData is called. It is available only after the clients import data to this dataset.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1InputConfig"
+},
+"type": "array"
+},
+"lastMigrateTime": {
+"description": "Last time that the Dataset is migrated to AI Platform V2. If any of the AnnotatedDataset is migrated, the last_migration_time in Dataset is also updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"name": {
+"description": "Output only. Dataset resource name, format is: projects/{project_id}/datasets/{dataset_id}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Evaluation": {
+"description": "Describes an evaluation between a machine learning model's predictions and ground truth labels. Created when an EvaluationJob runs successfully.",
+"id": "GoogleCloudDatalabelingV1beta1Evaluation",
+"properties": {
+"annotationType": {
+"description": "Output only. Type of task that the model version being evaluated performs, as defined in the evaluationJobConfig.inputConfig.annotationType field of the evaluation job that created this evaluation.",
+"enum": [
+"ANNOTATION_TYPE_UNSPECIFIED",
+"IMAGE_CLASSIFICATION_ANNOTATION",
+"IMAGE_BOUNDING_BOX_ANNOTATION",
+"IMAGE_ORIENTED_BOUNDING_BOX_ANNOTATION",
+"IMAGE_BOUNDING_POLY_ANNOTATION",
+"IMAGE_POLYLINE_ANNOTATION",
+"IMAGE_SEGMENTATION_ANNOTATION",
+"VIDEO_SHOTS_CLASSIFICATION_ANNOTATION",
+"VIDEO_OBJECT_TRACKING_ANNOTATION",
+"VIDEO_OBJECT_DETECTION_ANNOTATION",
+"VIDEO_EVENT_ANNOTATION",
+"TEXT_CLASSIFICATION_ANNOTATION",
+"TEXT_ENTITY_EXTRACTION_ANNOTATION",
+"GENERAL_CLASSIFICATION_ANNOTATION"
+],
+"enumDescriptions": [
+"",
+"Classification annotations in an image. Allowed for continuous evaluation.",
+"Bounding box annotations in an image. A form of image object detection. Allowed for continuous evaluation.",
+"Oriented bounding box. The box does not have to be parallel to horizontal line.",
+"Bounding poly annotations in an image.",
+"Polyline annotations in an image.",
+"Segmentation annotations in an image.",
+"Classification annotations in video shots.",
+"Video object tracking annotation.",
+"Video object detection annotation.",
+"Video event annotation.",
+"Classification for text. Allowed for continuous evaluation.",
+"Entity extraction for text.",
+"General classification. Allowed for continuous evaluation."
+],
+"type": "string"
+},
+"config": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationConfig",
+"description": "Output only. Options used in the evaluation job that created this evaluation."
+},
+"createTime": {
+"description": "Output only. Timestamp for when this evaluation was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"evaluatedItemCount": {
+"description": "Output only. The number of items in the ground truth dataset that were used for this evaluation. Only populated when the evaulation is for certain AnnotationTypes.",
+"format": "int64",
+"type": "string"
+},
+"evaluationJobRunTime": {
+"description": "Output only. Timestamp for when the evaluation job that created this evaluation ran.",
+"format": "google-datetime",
+"type": "string"
+},
+"evaluationMetrics": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationMetrics",
+"description": "Output only. Metrics comparing predictions to ground truth labels."
+},
+"name": {
+"description": "Output only. Resource name of an evaluation. The name has the following format: \"projects/{project_id}/datasets/{dataset_id}/evaluations/ {evaluation_id}'",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1EvaluationConfig": {
+"description": "Configuration details used for calculating evaluation metrics and creating an Evaluation.",
+"id": "GoogleCloudDatalabelingV1beta1EvaluationConfig",
+"properties": {
+"boundingBoxEvaluationOptions": {
+"$ref": "GoogleCloudDatalabelingV1beta1BoundingBoxEvaluationOptions",
+"description": "Only specify this field if the related model performs image object detection (`IMAGE_BOUNDING_BOX_ANNOTATION`). Describes how to evaluate bounding boxes."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1EvaluationJob": {
+"description": "Defines an evaluation job that runs periodically to generate Evaluations. [Creating an evaluation job](/ml-engine/docs/continuous-evaluation/create-job) is the starting point for using continuous evaluation.",
+"id": "GoogleCloudDatalabelingV1beta1EvaluationJob",
+"properties": {
+"annotationSpecSet": {
+"description": "Required. Name of the AnnotationSpecSet describing all the labels that your machine learning model outputs. You must create this resource before you create an evaluation job and provide its name in the following format: \"projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}\"",
+"type": "string"
+},
+"attempts": {
+"description": "Output only. Every time the evaluation job runs and an error occurs, the failed attempt is appended to this array.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Attempt"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Output only. Timestamp of when this evaluation job was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"description": {
+"description": "Required. Description of the job. The description can be up to 25,000 characters long.",
+"type": "string"
+},
+"evaluationJobConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationJobConfig",
+"description": "Required. Configuration details for the evaluation job."
+},
+"labelMissingGroundTruth": {
+"description": "Required. Whether you want Data Labeling Service to provide ground truth labels for prediction input. If you want the service to assign human labelers to annotate your data, set this to `true`. If you want to provide your own ground truth labels in the evaluation job's BigQuery table, set this to `false`.",
+"type": "boolean"
+},
+"modelVersion": {
+"description": "Required. The [AI Platform Prediction model version](/ml-engine/docs/prediction-overview) to be evaluated. Prediction input and output is sampled from this model version. When creating an evaluation job, specify the model version in the following format: \"projects/{project_id}/models/{model_name}/versions/{version_name}\" There can only be one evaluation job per model version.",
+"type": "string"
+},
+"name": {
+"description": "Output only. After you create a job, Data Labeling Service assigns a name to the job with the following format: \"projects/{project_id}/evaluationJobs/ {evaluation_job_id}\"",
+"type": "string"
+},
+"schedule": {
+"description": "Required. Describes the interval at which the job runs. This interval must be at least 1 day, and it is rounded to the nearest day. For example, if you specify a 50-hour interval, the job runs every 2 days. You can provide the schedule in [crontab format](/scheduler/docs/configuring/cron-job-schedules) or in an [English-like format](/appengine/docs/standard/python/config/cronref#schedule_format). Regardless of what you specify, the job will run at 10:00 AM UTC. Only the interval from this schedule is used, not the specific time of day.",
+"type": "string"
+},
+"state": {
+"description": "Output only. Describes the current state of the job.",
+"enum": [
+"STATE_UNSPECIFIED",
+"SCHEDULED",
+"RUNNING",
+"PAUSED",
+"STOPPED"
+],
+"enumDescriptions": [
+"",
+"The job is scheduled to run at the configured interval. You can pause or delete the job. When the job is in this state, it samples prediction input and output from your model version into your BigQuery table as predictions occur.",
+"The job is currently running. When the job runs, Data Labeling Service does several things: 1. If you have configured your job to use Data Labeling Service for ground truth labeling, the service creates a Dataset and a labeling task for all data sampled since the last time the job ran. Human labelers provide ground truth labels for your data. Human labeling may take hours, or even days, depending on how much data has been sampled. The job remains in the `RUNNING` state during this time, and it can even be running multiple times in parallel if it gets triggered again (for example 24 hours later) before the earlier run has completed. When human labelers have finished labeling the data, the next step occurs. If you have configured your job to provide your own ground truth labels, Data Labeling Service still creates a Dataset for newly sampled data, but it expects that you have already added ground truth labels to the BigQuery table by this time. The next step occurs immediately. 2. Data Labeling Service creates an Evaluation by comparing your model version's predictions with the ground truth labels. If the job remains in this state for a long time, it continues to sample prediction data into your BigQuery table and will run again at the next interval, even if it causes the job to run multiple times in parallel.",
+"The job is not sampling prediction input and output into your BigQuery table and it will not run according to its schedule. You can resume the job.",
+"The job has this state right before it is deleted."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1EvaluationJobAlertConfig": {
+"description": "Provides details for how an evaluation job sends email alerts based on the results of a run.",
+"id": "GoogleCloudDatalabelingV1beta1EvaluationJobAlertConfig",
+"properties": {
+"email": {
+"description": "Required. An email address to send alerts to.",
+"type": "string"
+},
+"minAcceptableMeanAveragePrecision": {
+"description": "Required. A number between 0 and 1 that describes a minimum mean average precision threshold. When the evaluation job runs, if it calculates that your model version's predictions from the recent interval have meanAveragePrecision below this threshold, then it sends an alert to your specified email.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1EvaluationJobConfig": {
+"description": "Configures specific details of how a continuous evaluation job works. Provide this configuration when you create an EvaluationJob.",
+"id": "GoogleCloudDatalabelingV1beta1EvaluationJobConfig",
+"properties": {
+"bigqueryImportKeys": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Required. Prediction keys that tell Data Labeling Service where to find the data for evaluation in your BigQuery table. When the service samples prediction input and output from your model version and saves it to BigQuery, the data gets stored as JSON strings in the BigQuery table. These keys tell Data Labeling Service how to parse the JSON. You can provide the following entries in this field: * `data_json_key`: the data key for prediction input. You must provide either this key or `reference_json_key`. * `reference_json_key`: the data reference key for prediction input. You must provide either this key or `data_json_key`. * `label_json_key`: the label key for prediction output. Required. * `label_score_json_key`: the score key for prediction output. Required. * `bounding_box_json_key`: the bounding box key for prediction output. Required if your model version perform image object detection. Learn [how to configure prediction keys](/ml-engine/docs/continuous-evaluation/create-job#prediction-keys).",
+"type": "object"
+},
+"boundingPolyConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1BoundingPolyConfig",
+"description": "Specify this field if your model version performs image object detection (bounding box detection). `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet."
+},
+"evaluationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationConfig",
+"description": "Required. Details for calculating evaluation metrics and creating Evaulations. If your model version performs image object detection, you must specify the `boundingBoxEvaluationOptions` field within this configuration. Otherwise, provide an empty object for this configuration."
+},
+"evaluationJobAlertConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationJobAlertConfig",
+"description": "Optional. Configuration details for evaluation job alerts. Specify this field if you want to receive email alerts if the evaluation job finds that your predictions have low mean average precision during a run."
+},
+"exampleCount": {
+"description": "Required. The maximum number of predictions to sample and save to BigQuery during each evaluation interval. This limit overrides `example_sample_percentage`: even if the service has not sampled enough predictions to fulfill `example_sample_perecentage` during an interval, it stops sampling predictions when it meets this limit.",
+"format": "int32",
+"type": "integer"
+},
+"exampleSamplePercentage": {
+"description": "Required. Fraction of predictions to sample and save to BigQuery during each evaluation interval. For example, 0.1 means 10% of predictions served by your model version get saved to BigQuery.",
+"format": "double",
+"type": "number"
+},
+"humanAnnotationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Optional. Details for human annotation of your data. If you set labelMissingGroundTruth to `true` for this evaluation job, then you must specify this field. If you plan to provide your own ground truth labels, then omit this field. Note that you must create an Instruction resource before you can specify this field. Provide the name of the instruction resource in the `instruction` field within this configuration."
+},
+"imageClassificationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImageClassificationConfig",
+"description": "Specify this field if your model version performs image classification or general classification. `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet. `allowMultiLabel` in this configuration must match `classificationMetadata.isMultiLabel` in input_config."
+},
+"inputConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1InputConfig",
+"description": "Rquired. Details for the sampled prediction input. Within this configuration, there are requirements for several fields: * `dataType` must be one of `IMAGE`, `TEXT`, or `GENERAL_DATA`. * `annotationType` must be one of `IMAGE_CLASSIFICATION_ANNOTATION`, `TEXT_CLASSIFICATION_ANNOTATION`, `GENERAL_CLASSIFICATION_ANNOTATION`, or `IMAGE_BOUNDING_BOX_ANNOTATION` (image object detection). * If your machine learning model performs classification, you must specify `classificationMetadata.isMultiLabel`. * You must specify `bigquerySource` (not `gcsSource`)."
+},
+"textClassificationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextClassificationConfig",
+"description": "Specify this field if your model version performs text classification. `annotationSpecSet` in this configuration must match EvaluationJob.annotationSpecSet. `allowMultiLabel` in this configuration must match `classificationMetadata.isMultiLabel` in input_config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1EvaluationMetrics": {
+"id": "GoogleCloudDatalabelingV1beta1EvaluationMetrics",
+"properties": {
+"classificationMetrics": {
+"$ref": "GoogleCloudDatalabelingV1beta1ClassificationMetrics"
+},
+"objectDetectionMetrics": {
+"$ref": "GoogleCloudDatalabelingV1beta1ObjectDetectionMetrics"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1EventConfig": {
+"description": "Config for video event human labeling task.",
+"id": "GoogleCloudDatalabelingV1beta1EventConfig",
+"properties": {
+"annotationSpecSets": {
+"description": "Required. The list of annotation spec set resource name. Similar to video classification, we support selecting event from multiple AnnotationSpecSet at the same time.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"clipLength": {
+"description": "Videos will be cut to smaller clips to make it easier for labelers to work on. Users can configure is field in seconds, if not set, default value is 60s.",
+"format": "int32",
+"type": "integer"
+},
+"overlapLength": {
+"description": "The overlap length between different video clips. Users can configure is field in seconds, if not set, default value is 1s.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Example": {
+"description": "An Example is a piece of data and its annotation. For example, an image with label \"house\".",
+"id": "GoogleCloudDatalabelingV1beta1Example",
+"properties": {
+"annotations": {
+"description": "Output only. Annotations for the piece of data in Example. One piece of data can have multiple annotations.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Annotation"
+},
+"type": "array"
+},
+"imagePayload": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImagePayload",
+"description": "The image payload, a container of the image bytes/uri."
+},
+"name": {
+"description": "Output only. Name of the example, in format of: projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}/examples/{example_id}",
+"type": "string"
+},
+"textPayload": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextPayload",
+"description": "The text payload, a container of the text content."
+},
+"videoPayload": {
+"$ref": "GoogleCloudDatalabelingV1beta1VideoPayload",
+"description": "The video payload, a container of the video uri."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ExampleComparison": {
+"description": "Example comparisons comparing ground truth output and predictions for a specific input.",
+"id": "GoogleCloudDatalabelingV1beta1ExampleComparison",
+"properties": {
+"groundTruthExample": {
+"$ref": "GoogleCloudDatalabelingV1beta1Example",
+"description": "The ground truth output for the input."
+},
+"modelCreatedExamples": {
+"description": "Predictions by the model for the input.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Example"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ExportDataOperationMetadata": {
+"description": "Metadata of an ExportData operation.",
+"id": "GoogleCloudDatalabelingV1beta1ExportDataOperationMetadata",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when export dataset request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of dataset to be exported. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ExportDataOperationResponse": {
+"description": "Response used for ExportDataset longrunning operation.",
+"id": "GoogleCloudDatalabelingV1beta1ExportDataOperationResponse",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"dataset": {
+"description": "Ouptut only. The name of dataset. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"exportCount": {
+"description": "Output only. Number of examples exported successfully.",
+"format": "int32",
+"type": "integer"
+},
+"labelStats": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelStats",
+"description": "Output only. Statistic infos of labels in the exported dataset."
+},
+"outputConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1OutputConfig",
+"description": "Output only. output_config in the ExportData request."
+},
+"totalCount": {
+"description": "Output only. Total number of examples requested to export",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ExportDataRequest": {
+"description": "Request message for ExportData API.",
+"id": "GoogleCloudDatalabelingV1beta1ExportDataRequest",
+"properties": {
+"annotatedDataset": {
+"description": "Required. Annotated dataset resource name. DataItem in Dataset and their annotations in specified annotated dataset will be exported. It's in format of projects/{project_id}/datasets/{dataset_id}/annotatedDatasets/ {annotated_dataset_id}",
+"type": "string"
+},
+"filter": {
+"description": "Optional. Filter is not supported at this moment.",
+"type": "string"
+},
+"outputConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1OutputConfig",
+"description": "Required. Specify the output destination."
+},
+"userEmailAddress": {
+"description": "Email of the user who started the export task and should be notified by email. If empty no notification will be sent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1FeedbackMessage": {
+"description": "A feedback message inside a feedback thread.",
+"id": "GoogleCloudDatalabelingV1beta1FeedbackMessage",
+"properties": {
+"body": {
+"description": "String content of the feedback. Maximum of 10000 characters.",
+"type": "string"
+},
+"createTime": {
+"description": "Create time.",
+"format": "google-datetime",
+"type": "string"
+},
+"image": {
+"description": "The image storing this feedback if the feedback is an image representing operator's comments.",
+"format": "byte",
+"type": "string"
+},
+"name": {
+"description": "Name of the feedback message in a feedback thread. Format: 'project/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}/feedbackMessage/{feedback_message_id}'",
+"type": "string"
+},
+"operatorFeedbackMetadata": {
+"$ref": "GoogleCloudDatalabelingV1beta1OperatorFeedbackMetadata"
+},
+"requesterFeedbackMetadata": {
+"$ref": "GoogleCloudDatalabelingV1beta1RequesterFeedbackMetadata"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1FeedbackThread": {
+"description": "A feedback thread of a certain labeling task on a certain annotated dataset.",
+"id": "GoogleCloudDatalabelingV1beta1FeedbackThread",
+"properties": {
+"feedbackThreadMetadata": {
+"$ref": "GoogleCloudDatalabelingV1beta1FeedbackThreadMetadata",
+"description": "Metadata regarding the feedback thread."
+},
+"name": {
+"description": "Name of the feedback thread. Format: 'project/{project_id}/datasets/{dataset_id}/annotatedDatasets/{annotated_dataset_id}/feedbackThreads/{feedback_thread_id}'",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1FeedbackThreadMetadata": {
+"id": "GoogleCloudDatalabelingV1beta1FeedbackThreadMetadata",
+"properties": {
+"createTime": {
+"description": "When the thread is created",
+"format": "google-datetime",
+"type": "string"
+},
+"lastUpdateTime": {
+"description": "When the thread is last updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"status": {
+"enum": [
+"FEEDBACK_THREAD_STATUS_UNSPECIFIED",
+"NEW",
+"REPLIED"
+],
+"enumDescriptions": [
+"",
+"Feedback thread is created with no reply;",
+"Feedback thread is replied at least once;"
+],
+"type": "string"
+},
+"thumbnail": {
+"description": "An image thumbnail of this thread.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1GcsDestination": {
+"description": "Export destination of the data.Only gcs path is allowed in output_uri.",
+"id": "GoogleCloudDatalabelingV1beta1GcsDestination",
+"properties": {
+"mimeType": {
+"description": "Required. The format of the gcs destination. Only \"text/csv\" and \"application/json\" are supported.",
+"type": "string"
+},
+"outputUri": {
+"description": "Required. The output uri of destination file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1GcsFolderDestination": {
+"description": "Export folder destination of the data.",
+"id": "GoogleCloudDatalabelingV1beta1GcsFolderDestination",
+"properties": {
+"outputFolderUri": {
+"description": "Required. Cloud Storage directory to export data to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1GcsSource": {
+"description": "Source of the Cloud Storage file to be imported.",
+"id": "GoogleCloudDatalabelingV1beta1GcsSource",
+"properties": {
+"inputUri": {
+"description": "Required. The input URI of source file. This must be a Cloud Storage path (`gs://...`).",
+"type": "string"
+},
+"mimeType": {
+"description": "Required. The format of the source file. Only \"text/csv\" is supported.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1HumanAnnotationConfig": {
+"description": "Configuration for how human labeling task should be done.",
+"id": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"properties": {
+"annotatedDatasetDescription": {
+"description": "Optional. A human-readable description for AnnotatedDataset. The description can be up to 10000 characters long.",
+"type": "string"
+},
+"annotatedDatasetDisplayName": {
+"description": "Required. A human-readable name for AnnotatedDataset defined by users. Maximum of 64 characters .",
+"type": "string"
+},
+"contributorEmails": {
+"description": "Optional. If you want your own labeling contributors to manage and work on this labeling request, you can set these contributors here. We will give them access to the question types in crowdcompute. Note that these emails must be registered in crowdcompute worker UI: https://crowd-compute.appspot.com/",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"instruction": {
+"description": "Required. Instruction resource name.",
+"type": "string"
+},
+"labelGroup": {
+"description": "Optional. A human-readable label used to logically group labeling tasks. This string must match the regular expression `[a-zA-Z\\\\d_-]{0,128}`.",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The Language of this question, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US. Only need to set this when task is language related. For example, French text classification.",
+"type": "string"
+},
+"questionDuration": {
+"description": "Optional. Maximum duration for contributors to answer a question. Maximum is 3600 seconds. Default is 3600 seconds.",
+"format": "google-duration",
+"type": "string"
+},
+"replicaCount": {
+"description": "Optional. Replication of questions. Each question will be sent to up to this number of contributors to label. Aggregated answers will be returned. Default is set to 1. For image related labeling, valid values are 1, 3, 5.",
+"format": "int32",
+"type": "integer"
+},
+"userEmailAddress": {
+"description": "Email of the user who started the labeling task and should be notified by email. If empty no notification will be sent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImageBoundingPolyAnnotation": {
+"description": "Image bounding poly annotation. It represents a polygon including bounding box in the image.",
+"id": "GoogleCloudDatalabelingV1beta1ImageBoundingPolyAnnotation",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "Label of object in this bounding polygon."
+},
+"boundingPoly": {
+"$ref": "GoogleCloudDatalabelingV1beta1BoundingPoly"
+},
+"normalizedBoundingPoly": {
+"$ref": "GoogleCloudDatalabelingV1beta1NormalizedBoundingPoly"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImageClassificationAnnotation": {
+"description": "Image classification annotation definition.",
+"id": "GoogleCloudDatalabelingV1beta1ImageClassificationAnnotation",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "Label of image."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImageClassificationConfig": {
+"description": "Config for image classification human labeling task.",
+"id": "GoogleCloudDatalabelingV1beta1ImageClassificationConfig",
+"properties": {
+"allowMultiLabel": {
+"description": "Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one image.",
+"type": "boolean"
+},
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name.",
+"type": "string"
+},
+"answerAggregationType": {
+"description": "Optional. The type of how to aggregate answers.",
+"enum": [
+"STRING_AGGREGATION_TYPE_UNSPECIFIED",
+"MAJORITY_VOTE",
+"UNANIMOUS_VOTE",
+"NO_AGGREGATION"
+],
+"enumDescriptions": [
+"",
+"Majority vote to aggregate answers.",
+"Unanimous answers will be adopted.",
+"Preserve all answers by crowd compute."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImagePayload": {
+"description": "Container of information about an image.",
+"id": "GoogleCloudDatalabelingV1beta1ImagePayload",
+"properties": {
+"imageThumbnail": {
+"description": "A byte string of a thumbnail image.",
+"format": "byte",
+"type": "string"
+},
+"imageUri": {
+"description": "Image uri from the user bucket.",
+"type": "string"
+},
+"mimeType": {
+"description": "Image format.",
+"type": "string"
+},
+"signedUri": {
+"description": "Signed uri of the image file in the service bucket.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImagePolylineAnnotation": {
+"description": "A polyline for the image annotation.",
+"id": "GoogleCloudDatalabelingV1beta1ImagePolylineAnnotation",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "Label of this polyline."
+},
+"normalizedPolyline": {
+"$ref": "GoogleCloudDatalabelingV1beta1NormalizedPolyline"
+},
+"polyline": {
+"$ref": "GoogleCloudDatalabelingV1beta1Polyline"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImageSegmentationAnnotation": {
+"description": "Image segmentation annotation.",
+"id": "GoogleCloudDatalabelingV1beta1ImageSegmentationAnnotation",
+"properties": {
+"annotationColors": {
+"additionalProperties": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec"
+},
+"description": "The mapping between rgb color and annotation spec. The key is the rgb color represented in format of rgb(0, 0, 0). The value is the AnnotationSpec.",
+"type": "object"
+},
+"imageBytes": {
+"description": "A byte string of a full image's color map.",
+"format": "byte",
+"type": "string"
+},
+"mimeType": {
+"description": "Image format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImportDataOperationMetadata": {
+"description": "Metadata of an ImportData operation.",
+"id": "GoogleCloudDatalabelingV1beta1ImportDataOperationMetadata",
+"properties": {
+"createTime": {
+"description": "Output only. Timestamp when import dataset request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of imported dataset. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImportDataOperationResponse": {
+"description": "Response used for ImportData longrunning operation.",
+"id": "GoogleCloudDatalabelingV1beta1ImportDataOperationResponse",
+"properties": {
+"dataset": {
+"description": "Ouptut only. The name of imported dataset.",
+"type": "string"
+},
+"importCount": {
+"description": "Output only. Number of examples imported successfully.",
+"format": "int32",
+"type": "integer"
+},
+"totalCount": {
+"description": "Output only. Total number of examples requested to import",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ImportDataRequest": {
+"description": "Request message for ImportData API.",
+"id": "GoogleCloudDatalabelingV1beta1ImportDataRequest",
+"properties": {
+"inputConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1InputConfig",
+"description": "Required. Specify the input source of the data."
+},
+"userEmailAddress": {
+"description": "Email of the user who started the import task and should be notified by email. If empty no notification will be sent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1InputConfig": {
+"description": "The configuration of input data, including data type, location, etc.",
+"id": "GoogleCloudDatalabelingV1beta1InputConfig",
+"properties": {
+"annotationType": {
+"description": "Optional. The type of annotation to be performed on this data. You must specify this field if you are using this InputConfig in an EvaluationJob.",
+"enum": [
+"ANNOTATION_TYPE_UNSPECIFIED",
+"IMAGE_CLASSIFICATION_ANNOTATION",
+"IMAGE_BOUNDING_BOX_ANNOTATION",
+"IMAGE_ORIENTED_BOUNDING_BOX_ANNOTATION",
+"IMAGE_BOUNDING_POLY_ANNOTATION",
+"IMAGE_POLYLINE_ANNOTATION",
+"IMAGE_SEGMENTATION_ANNOTATION",
+"VIDEO_SHOTS_CLASSIFICATION_ANNOTATION",
+"VIDEO_OBJECT_TRACKING_ANNOTATION",
+"VIDEO_OBJECT_DETECTION_ANNOTATION",
+"VIDEO_EVENT_ANNOTATION",
+"TEXT_CLASSIFICATION_ANNOTATION",
+"TEXT_ENTITY_EXTRACTION_ANNOTATION",
+"GENERAL_CLASSIFICATION_ANNOTATION"
+],
+"enumDescriptions": [
+"",
+"Classification annotations in an image. Allowed for continuous evaluation.",
+"Bounding box annotations in an image. A form of image object detection. Allowed for continuous evaluation.",
+"Oriented bounding box. The box does not have to be parallel to horizontal line.",
+"Bounding poly annotations in an image.",
+"Polyline annotations in an image.",
+"Segmentation annotations in an image.",
+"Classification annotations in video shots.",
+"Video object tracking annotation.",
+"Video object detection annotation.",
+"Video event annotation.",
+"Classification for text. Allowed for continuous evaluation.",
+"Entity extraction for text.",
+"General classification. Allowed for continuous evaluation."
+],
+"type": "string"
+},
+"bigquerySource": {
+"$ref": "GoogleCloudDatalabelingV1beta1BigQuerySource",
+"description": "Source located in BigQuery. You must specify this field if you are using this InputConfig in an EvaluationJob."
+},
+"classificationMetadata": {
+"$ref": "GoogleCloudDatalabelingV1beta1ClassificationMetadata",
+"description": "Optional. Metadata about annotations for the input. You must specify this field if you are using this InputConfig in an EvaluationJob for a model version that performs classification."
+},
+"dataType": {
+"description": "Required. Data type must be specifed when user tries to import data.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"IMAGE",
+"VIDEO",
+"TEXT",
+"GENERAL_DATA"
+],
+"enumDescriptions": [
+"Data type is unspecified.",
+"Allowed for continuous evaluation.",
+"Video data type.",
+"Allowed for continuous evaluation.",
+"Allowed for continuous evaluation."
+],
+"type": "string"
+},
+"gcsSource": {
+"$ref": "GoogleCloudDatalabelingV1beta1GcsSource",
+"description": "Source located in Cloud Storage."
+},
+"textMetadata": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextMetadata",
+"description": "Required for text import, as language code must be specified."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Instruction": {
+"description": "Instruction of how to perform the labeling task for human operators. Currently only PDF instruction is supported.",
+"id": "GoogleCloudDatalabelingV1beta1Instruction",
+"properties": {
+"blockingResources": {
+"description": "Output only. The names of any related resources that are blocking changes to the instruction.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Output only. Creation time of instruction.",
+"format": "google-datetime",
+"type": "string"
+},
+"csvInstruction": {
+"$ref": "GoogleCloudDatalabelingV1beta1CsvInstruction",
+"deprecated": true,
+"description": "Deprecated: this instruction format is not supported any more. Instruction from a CSV file, such as for classification task. The CSV file should have exact two columns, in the following format: * The first column is labeled data, such as an image reference, text. * The second column is comma separated labels associated with data."
+},
+"dataType": {
+"description": "Required. The data type of this instruction.",
+"enum": [
+"DATA_TYPE_UNSPECIFIED",
+"IMAGE",
+"VIDEO",
+"TEXT",
+"GENERAL_DATA"
+],
+"enumDescriptions": [
+"Data type is unspecified.",
+"Allowed for continuous evaluation.",
+"Video data type.",
+"Allowed for continuous evaluation.",
+"Allowed for continuous evaluation."
+],
+"type": "string"
+},
+"description": {
+"description": "Optional. User-provided description of the instruction. The description can be up to 10000 characters long.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The display name of the instruction. Maximum of 64 characters.",
+"type": "string"
+},
+"name": {
+"description": "Output only. Instruction resource name, format: projects/{project_id}/instructions/{instruction_id}",
+"type": "string"
+},
+"pdfInstruction": {
+"$ref": "GoogleCloudDatalabelingV1beta1PdfInstruction",
+"description": "Instruction from a PDF document. The PDF should be in a Cloud Storage bucket."
+},
+"updateTime": {
+"description": "Output only. Last update time of instruction.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelImageBoundingBoxOperationMetadata": {
+"description": "Details of a LabelImageBoundingBox operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelImageBoundingBoxOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelImageBoundingPolyOperationMetadata": {
+"description": "Details of LabelImageBoundingPoly operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelImageBoundingPolyOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelImageClassificationOperationMetadata": {
+"description": "Metadata of a LabelImageClassification operation.",
+"id": "GoogleCloudDatalabelingV1beta1LabelImageClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelImageOrientedBoundingBoxOperationMetadata": {
+"description": "Details of a LabelImageOrientedBoundingBox operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelImageOrientedBoundingBoxOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelImagePolylineOperationMetadata": {
+"description": "Details of LabelImagePolyline operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelImagePolylineOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelImageRequest": {
+"description": "Request message for starting an image labeling task.",
+"id": "GoogleCloudDatalabelingV1beta1LabelImageRequest",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Required. Basic human annotation config."
+},
+"boundingPolyConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1BoundingPolyConfig",
+"description": "Configuration for bounding box and bounding poly task. One of image_classification_config, bounding_poly_config, polyline_config and segmentation_config are required."
+},
+"feature": {
+"description": "Required. The type of image labeling task.",
+"enum": [
+"FEATURE_UNSPECIFIED",
+"CLASSIFICATION",
+"BOUNDING_BOX",
+"ORIENTED_BOUNDING_BOX",
+"BOUNDING_POLY",
+"POLYLINE",
+"SEGMENTATION"
+],
+"enumDescriptions": [
+"",
+"Label whole image with one or more of labels.",
+"Label image with bounding boxes for labels.",
+"Label oriented bounding box. The box does not have to be parallel to horizontal line.",
+"Label images with bounding poly. A bounding poly is a plane figure that is bounded by a finite chain of straight line segments closing in a loop.",
+"Label images with polyline. Polyline is formed by connected line segments which are not in closed form.",
+"Label images with segmentation. Segmentation is different from bounding poly since it is more fine-grained, pixel level annotation."
+],
+"type": "string"
+},
+"imageClassificationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1ImageClassificationConfig",
+"description": "Configuration for image classification task. One of image_classification_config, bounding_poly_config, polyline_config and segmentation_config are required."
+},
+"polylineConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1PolylineConfig",
+"description": "Configuration for polyline task. One of image_classification_config, bounding_poly_config, polyline_config and segmentation_config are required."
+},
+"segmentationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1SegmentationConfig",
+"description": "Configuration for segmentation task. One of image_classification_config, bounding_poly_config, polyline_config and segmentation_config are required."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelImageSegmentationOperationMetadata": {
+"description": "Details of a LabelImageSegmentation operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelImageSegmentationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelOperationMetadata": {
+"description": "Metadata of a labeling operation, such as LabelImage or LabelVideo. Next tag: 23",
+"id": "GoogleCloudDatalabelingV1beta1LabelOperationMetadata",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when labeling request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of dataset to be labeled. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"imageBoundingBoxDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelImageBoundingBoxOperationMetadata",
+"description": "Details of label image bounding box operation."
+},
+"imageBoundingPolyDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelImageBoundingPolyOperationMetadata",
+"description": "Details of label image bounding poly operation."
+},
+"imageClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelImageClassificationOperationMetadata",
+"description": "Details of label image classification operation."
+},
+"imageOrientedBoundingBoxDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelImageOrientedBoundingBoxOperationMetadata",
+"description": "Details of label image oriented bounding box operation."
+},
+"imagePolylineDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelImagePolylineOperationMetadata",
+"description": "Details of label image polyline operation."
+},
+"imageSegmentationDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelImageSegmentationOperationMetadata",
+"description": "Details of label image segmentation operation."
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+},
+"progressPercent": {
+"description": "Output only. Progress of label operation. Range: [0, 100].",
+"format": "int32",
+"type": "integer"
+},
+"textClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelTextClassificationOperationMetadata",
+"description": "Details of label text classification operation."
+},
+"textEntityExtractionDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelTextEntityExtractionOperationMetadata",
+"description": "Details of label text entity extraction operation."
+},
+"videoClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelVideoClassificationOperationMetadata",
+"description": "Details of label video classification operation."
+},
+"videoEventDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelVideoEventOperationMetadata",
+"description": "Details of label video event operation."
+},
+"videoObjectDetectionDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelVideoObjectDetectionOperationMetadata",
+"description": "Details of label video object detection operation."
+},
+"videoObjectTrackingDetails": {
+"$ref": "GoogleCloudDatalabelingV1beta1LabelVideoObjectTrackingOperationMetadata",
+"description": "Details of label video object tracking operation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelStats": {
+"description": "Statistics about annotation specs.",
+"id": "GoogleCloudDatalabelingV1beta1LabelStats",
+"properties": {
+"exampleCount": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "Map of each annotation spec's example count. Key is the annotation spec name and value is the number of examples for that annotation spec. If the annotated dataset does not have annotation spec, the map will return a pair where the key is empty string and value is the total number of annotations.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelTextClassificationOperationMetadata": {
+"description": "Details of a LabelTextClassification operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelTextClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelTextEntityExtractionOperationMetadata": {
+"description": "Details of a LabelTextEntityExtraction operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelTextEntityExtractionOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelTextRequest": {
+"description": "Request message for LabelText.",
+"id": "GoogleCloudDatalabelingV1beta1LabelTextRequest",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Required. Basic human annotation config."
+},
+"feature": {
+"description": "Required. The type of text labeling task.",
+"enum": [
+"FEATURE_UNSPECIFIED",
+"TEXT_CLASSIFICATION",
+"TEXT_ENTITY_EXTRACTION"
+],
+"enumDescriptions": [
+"",
+"Label text content to one of more labels.",
+"Label entities and their span in text."
+],
+"type": "string"
+},
+"textClassificationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextClassificationConfig",
+"description": "Configuration for text classification task. One of text_classification_config and text_entity_extraction_config is required."
+},
+"textEntityExtractionConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1TextEntityExtractionConfig",
+"description": "Configuration for entity extraction task. One of text_classification_config and text_entity_extraction_config is required."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelVideoClassificationOperationMetadata": {
+"description": "Details of a LabelVideoClassification operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelVideoClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelVideoEventOperationMetadata": {
+"description": "Details of a LabelVideoEvent operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelVideoEventOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelVideoObjectDetectionOperationMetadata": {
+"description": "Details of a LabelVideoObjectDetection operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelVideoObjectDetectionOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelVideoObjectTrackingOperationMetadata": {
+"description": "Details of a LabelVideoObjectTracking operation metadata.",
+"id": "GoogleCloudDatalabelingV1beta1LabelVideoObjectTrackingOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1LabelVideoRequest": {
+"description": "Request message for LabelVideo.",
+"id": "GoogleCloudDatalabelingV1beta1LabelVideoRequest",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1HumanAnnotationConfig",
+"description": "Required. Basic human annotation config."
+},
+"eventConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1EventConfig",
+"description": "Configuration for video event task. One of video_classification_config, object_detection_config, object_tracking_config and event_config is required."
+},
+"feature": {
+"description": "Required. The type of video labeling task.",
+"enum": [
+"FEATURE_UNSPECIFIED",
+"CLASSIFICATION",
+"OBJECT_DETECTION",
+"OBJECT_TRACKING",
+"EVENT"
+],
+"enumDescriptions": [
+"",
+"Label whole video or video segment with one or more labels.",
+"Label objects with bounding box on image frames extracted from the video.",
+"Label and track objects in video.",
+"Label the range of video for the specified events."
+],
+"type": "string"
+},
+"objectDetectionConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1ObjectDetectionConfig",
+"description": "Configuration for video object detection task. One of video_classification_config, object_detection_config, object_tracking_config and event_config is required."
+},
+"objectTrackingConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1ObjectTrackingConfig",
+"description": "Configuration for video object tracking task. One of video_classification_config, object_detection_config, object_tracking_config and event_config is required."
+},
+"videoClassificationConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1VideoClassificationConfig",
+"description": "Configuration for video classification task. One of video_classification_config, object_detection_config, object_tracking_config and event_config is required."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListAnnotatedDatasetsResponse": {
+"description": "Results of listing annotated datasets for a dataset.",
+"id": "GoogleCloudDatalabelingV1beta1ListAnnotatedDatasetsResponse",
+"properties": {
+"annotatedDatasets": {
+"description": "The list of annotated datasets to return.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotatedDataset"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListAnnotationSpecSetsResponse": {
+"description": "Results of listing annotation spec set under a project.",
+"id": "GoogleCloudDatalabelingV1beta1ListAnnotationSpecSetsResponse",
+"properties": {
+"annotationSpecSets": {
+"description": "The list of annotation spec sets.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpecSet"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListDataItemsResponse": {
+"description": "Results of listing data items in a dataset.",
+"id": "GoogleCloudDatalabelingV1beta1ListDataItemsResponse",
+"properties": {
+"dataItems": {
+"description": "The list of data items to return.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1DataItem"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListDatasetsResponse": {
+"description": "Results of listing datasets within a project.",
+"id": "GoogleCloudDatalabelingV1beta1ListDatasetsResponse",
+"properties": {
+"datasets": {
+"description": "The list of datasets to return.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Dataset"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListEvaluationJobsResponse": {
+"description": "Results for listing evaluation jobs.",
+"id": "GoogleCloudDatalabelingV1beta1ListEvaluationJobsResponse",
+"properties": {
+"evaluationJobs": {
+"description": "The list of evaluation jobs to return.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1EvaluationJob"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListExamplesResponse": {
+"description": "Results of listing Examples in and annotated dataset.",
+"id": "GoogleCloudDatalabelingV1beta1ListExamplesResponse",
+"properties": {
+"examples": {
+"description": "The list of examples to return.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Example"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListFeedbackMessagesResponse": {
+"description": "Results for listing FeedbackMessages.",
+"id": "GoogleCloudDatalabelingV1beta1ListFeedbackMessagesResponse",
+"properties": {
+"feedbackMessages": {
+"description": "The list of feedback messages to return.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1FeedbackMessage"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListFeedbackThreadsResponse": {
+"description": "Results for listing FeedbackThreads.",
+"id": "GoogleCloudDatalabelingV1beta1ListFeedbackThreadsResponse",
+"properties": {
+"feedbackThreads": {
+"description": "The list of feedback threads to return.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1FeedbackThread"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ListInstructionsResponse": {
+"description": "Results of listing instructions under a project.",
+"id": "GoogleCloudDatalabelingV1beta1ListInstructionsResponse",
+"properties": {
+"instructions": {
+"description": "The list of Instructions to return.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Instruction"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1NormalizedBoundingPoly": {
+"description": "Normalized bounding polygon.",
+"id": "GoogleCloudDatalabelingV1beta1NormalizedBoundingPoly",
+"properties": {
+"normalizedVertices": {
+"description": "The bounding polygon normalized vertices.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1NormalizedVertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1NormalizedPolyline": {
+"description": "Normalized polyline.",
+"id": "GoogleCloudDatalabelingV1beta1NormalizedPolyline",
+"properties": {
+"normalizedVertices": {
+"description": "The normalized polyline vertices.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1NormalizedVertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1NormalizedVertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
+"id": "GoogleCloudDatalabelingV1beta1NormalizedVertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "float",
+"type": "number"
+},
+"y": {
+"description": "Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ObjectDetectionConfig": {
+"description": "Config for video object detection human labeling task. Object detection will be conducted on the images extracted from the video, and those objects will be labeled with bounding boxes. User need to specify the number of images to be extracted per second as the extraction frame rate.",
+"id": "GoogleCloudDatalabelingV1beta1ObjectDetectionConfig",
+"properties": {
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name.",
+"type": "string"
+},
+"extractionFrameRate": {
+"description": "Required. Number of frames per second to be extracted from the video.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ObjectDetectionMetrics": {
+"description": "Metrics calculated for an image object detection (bounding box) model.",
+"id": "GoogleCloudDatalabelingV1beta1ObjectDetectionMetrics",
+"properties": {
+"prCurve": {
+"$ref": "GoogleCloudDatalabelingV1beta1PrCurve",
+"description": "Precision-recall curve."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ObjectTrackingConfig": {
+"description": "Config for video object tracking human labeling task.",
+"id": "GoogleCloudDatalabelingV1beta1ObjectTrackingConfig",
+"properties": {
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name.",
+"type": "string"
+},
+"clipLength": {
+"description": "Videos will be cut to smaller clips to make it easier for labelers to work on. Users can configure is field in seconds, if not set, default value is 20s.",
+"format": "int32",
+"type": "integer"
+},
+"overlapLength": {
+"description": "The overlap length between different video clips. Users can configure is field in seconds, if not set, default value is 0.3s.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ObjectTrackingFrame": {
+"description": "Video frame level annotation for object detection and tracking.",
+"id": "GoogleCloudDatalabelingV1beta1ObjectTrackingFrame",
+"properties": {
+"boundingPoly": {
+"$ref": "GoogleCloudDatalabelingV1beta1BoundingPoly"
+},
+"normalizedBoundingPoly": {
+"$ref": "GoogleCloudDatalabelingV1beta1NormalizedBoundingPoly"
+},
+"timeOffset": {
+"description": "The time offset of this frame relative to the beginning of the video.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1OperatorFeedbackMetadata": {
+"description": "Metadata describing the feedback from the operator.",
+"id": "GoogleCloudDatalabelingV1beta1OperatorFeedbackMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1OperatorMetadata": {
+"description": "General information useful for labels coming from contributors.",
+"id": "GoogleCloudDatalabelingV1beta1OperatorMetadata",
+"properties": {
+"comments": {
+"description": "Comments from contributors.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labelVotes": {
+"description": "The total number of contributors that choose this label.",
+"format": "int32",
+"type": "integer"
+},
+"score": {
+"description": "Confidence score corresponding to a label. For examle, if 3 contributors have answered the question and 2 of them agree on the final label, the confidence score will be 0.67 (2/3).",
+"format": "float",
+"type": "number"
+},
+"totalVotes": {
+"description": "The total number of contributors that answer this question.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1OutputConfig": {
+"description": "The configuration of output data.",
+"id": "GoogleCloudDatalabelingV1beta1OutputConfig",
+"properties": {
+"gcsDestination": {
+"$ref": "GoogleCloudDatalabelingV1beta1GcsDestination",
+"description": "Output to a file in Cloud Storage. Should be used for labeling output other than image segmentation."
+},
+"gcsFolderDestination": {
+"$ref": "GoogleCloudDatalabelingV1beta1GcsFolderDestination",
+"description": "Output to a folder in Cloud Storage. Should be used for image segmentation or document de-identification labeling outputs."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1PauseEvaluationJobRequest": {
+"description": "Request message for PauseEvaluationJob.",
+"id": "GoogleCloudDatalabelingV1beta1PauseEvaluationJobRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1PdfInstruction": {
+"description": "Instruction from a PDF file.",
+"id": "GoogleCloudDatalabelingV1beta1PdfInstruction",
+"properties": {
+"gcsFileUri": {
+"description": "PDF file for the instruction. Only gcs path is allowed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Polyline": {
+"description": "A line with multiple line segments.",
+"id": "GoogleCloudDatalabelingV1beta1Polyline",
+"properties": {
+"vertices": {
+"description": "The polyline vertices.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Vertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1PolylineConfig": {
+"description": "Config for image polyline human labeling task.",
+"id": "GoogleCloudDatalabelingV1beta1PolylineConfig",
+"properties": {
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name.",
+"type": "string"
+},
+"instructionMessage": {
+"description": "Optional. Instruction message showed on contributors UI.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1PrCurve": {
+"id": "GoogleCloudDatalabelingV1beta1PrCurve",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "The annotation spec of the label for which the precision-recall curve calculated. If this field is empty, that means the precision-recall curve is an aggregate curve for all labels."
+},
+"areaUnderCurve": {
+"description": "Area under the precision-recall curve. Not to be confused with area under a receiver operating characteristic (ROC) curve.",
+"format": "float",
+"type": "number"
+},
+"confidenceMetricsEntries": {
+"description": "Entries that make up the precision-recall graph. Each entry is a \"point\" on the graph drawn for a different `confidence_threshold`.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1ConfidenceMetricsEntry"
+},
+"type": "array"
+},
+"meanAveragePrecision": {
+"description": "Mean average prcision of this curve.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1RequesterFeedbackMetadata": {
+"description": "Metadata describing the feedback from the labeling task requester.",
+"id": "GoogleCloudDatalabelingV1beta1RequesterFeedbackMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1ResumeEvaluationJobRequest": {
+"description": "Request message ResumeEvaluationJob.",
+"id": "GoogleCloudDatalabelingV1beta1ResumeEvaluationJobRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Row": {
+"description": "A row in the confusion matrix. Each entry in this row has the same ground truth label.",
+"id": "GoogleCloudDatalabelingV1beta1Row",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "The annotation spec of the ground truth label for this row."
+},
+"entries": {
+"description": "A list of the confusion matrix entries. One entry for each possible predicted label.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1ConfusionMatrixEntry"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1SearchEvaluationsResponse": {
+"description": "Results of searching evaluations.",
+"id": "GoogleCloudDatalabelingV1beta1SearchEvaluationsResponse",
+"properties": {
+"evaluations": {
+"description": "The list of evaluations matching the search.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1Evaluation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1SearchExampleComparisonsRequest": {
+"description": "Request message of SearchExampleComparisons.",
+"id": "GoogleCloudDatalabelingV1beta1SearchExampleComparisonsRequest",
+"properties": {
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer results than requested. Default value is 100.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results for the server to return. Typically obtained by the nextPageToken of the response to a previous search rquest. If you don't specify this field, the API call requests the first page of the search.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1SearchExampleComparisonsResponse": {
+"description": "Results of searching example comparisons.",
+"id": "GoogleCloudDatalabelingV1beta1SearchExampleComparisonsResponse",
+"properties": {
+"exampleComparisons": {
+"description": "A list of example comparisons matching the search criteria.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1ExampleComparison"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1SegmentationConfig": {
+"description": "Config for image segmentation",
+"id": "GoogleCloudDatalabelingV1beta1SegmentationConfig",
+"properties": {
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name. format: projects/{project_id}/annotationSpecSets/{annotation_spec_set_id}",
+"type": "string"
+},
+"instructionMessage": {
+"description": "Instruction message showed on labelers UI.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1SentimentConfig": {
+"description": "Config for setting up sentiments.",
+"id": "GoogleCloudDatalabelingV1beta1SentimentConfig",
+"properties": {
+"enableLabelSentimentSelection": {
+"description": "If set to true, contributors will have the option to select sentiment of the label they selected, to mark it as negative or positive label. Default is false.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1SequentialSegment": {
+"description": "Start and end position in a sequence (e.g. text segment).",
+"id": "GoogleCloudDatalabelingV1beta1SequentialSegment",
+"properties": {
+"end": {
+"description": "End position (exclusive).",
+"format": "int32",
+"type": "integer"
+},
+"start": {
+"description": "Start position (inclusive).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1TextClassificationAnnotation": {
+"description": "Text classification annotation.",
+"id": "GoogleCloudDatalabelingV1beta1TextClassificationAnnotation",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "Label of the text."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1TextClassificationConfig": {
+"description": "Config for text classification human labeling task.",
+"id": "GoogleCloudDatalabelingV1beta1TextClassificationConfig",
+"properties": {
+"allowMultiLabel": {
+"description": "Optional. If allow_multi_label is true, contributors are able to choose multiple labels for one text segment.",
+"type": "boolean"
+},
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name.",
+"type": "string"
+},
+"sentimentConfig": {
+"$ref": "GoogleCloudDatalabelingV1beta1SentimentConfig",
+"deprecated": true,
+"description": "Optional. Configs for sentiment selection. We deprecate sentiment analysis in data labeling side as it is incompatible with uCAIP."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1TextEntityExtractionAnnotation": {
+"description": "Text entity extraction annotation.",
+"id": "GoogleCloudDatalabelingV1beta1TextEntityExtractionAnnotation",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "Label of the text entities."
+},
+"sequentialSegment": {
+"$ref": "GoogleCloudDatalabelingV1beta1SequentialSegment",
+"description": "Position of the entity."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1TextEntityExtractionConfig": {
+"description": "Config for text entity extraction human labeling task.",
+"id": "GoogleCloudDatalabelingV1beta1TextEntityExtractionConfig",
+"properties": {
+"annotationSpecSet": {
+"description": "Required. Annotation spec set resource name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1TextMetadata": {
+"description": "Metadata for the text.",
+"id": "GoogleCloudDatalabelingV1beta1TextMetadata",
+"properties": {
+"languageCode": {
+"description": "The language of this text, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1TextPayload": {
+"description": "Container of information about a piece of text.",
+"id": "GoogleCloudDatalabelingV1beta1TextPayload",
+"properties": {
+"textContent": {
+"description": "Text content.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1TimeSegment": {
+"description": "A time period inside of an example that has a time dimension (e.g. video).",
+"id": "GoogleCloudDatalabelingV1beta1TimeSegment",
+"properties": {
+"endTimeOffset": {
+"description": "End of the time segment (exclusive), represented as the duration since the example start.",
+"format": "google-duration",
+"type": "string"
+},
+"startTimeOffset": {
+"description": "Start of the time segment (inclusive), represented as the duration since the example start.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1Vertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.",
+"id": "GoogleCloudDatalabelingV1beta1Vertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "int32",
+"type": "integer"
+},
+"y": {
+"description": "Y coordinate.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1VideoClassificationAnnotation": {
+"description": "Video classification annotation.",
+"id": "GoogleCloudDatalabelingV1beta1VideoClassificationAnnotation",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "Label of the segment specified by time_segment."
+},
+"timeSegment": {
+"$ref": "GoogleCloudDatalabelingV1beta1TimeSegment",
+"description": "The time segment of the video to which the annotation applies."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1VideoClassificationConfig": {
+"description": "Config for video classification human labeling task. Currently two types of video classification are supported: 1. Assign labels on the entire video. 2. Split the video into multiple video clips based on camera shot, and assign labels on each video clip.",
+"id": "GoogleCloudDatalabelingV1beta1VideoClassificationConfig",
+"properties": {
+"annotationSpecSetConfigs": {
+"description": "Required. The list of annotation spec set configs. Since watching a video clip takes much longer time than an image, we support label with multiple AnnotationSpecSet at the same time. Labels in each AnnotationSpecSet will be shown in a group to contributors. Contributors can select one or more (depending on whether to allow multi label) from each group.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpecSetConfig"
+},
+"type": "array"
+},
+"applyShotDetection": {
+"description": "Optional. Option to apply shot detection on the video.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1VideoEventAnnotation": {
+"description": "Video event annotation.",
+"id": "GoogleCloudDatalabelingV1beta1VideoEventAnnotation",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "Label of the event in this annotation."
+},
+"timeSegment": {
+"$ref": "GoogleCloudDatalabelingV1beta1TimeSegment",
+"description": "The time segment of the video to which the annotation applies."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1VideoObjectTrackingAnnotation": {
+"description": "Video object tracking annotation.",
+"id": "GoogleCloudDatalabelingV1beta1VideoObjectTrackingAnnotation",
+"properties": {
+"annotationSpec": {
+"$ref": "GoogleCloudDatalabelingV1beta1AnnotationSpec",
+"description": "Label of the object tracked in this annotation."
+},
+"objectTrackingFrames": {
+"description": "The list of frames where this object track appears.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1ObjectTrackingFrame"
+},
+"type": "array"
+},
+"timeSegment": {
+"$ref": "GoogleCloudDatalabelingV1beta1TimeSegment",
+"description": "The time segment of the video to which object tracking applies."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1VideoPayload": {
+"description": "Container of information of a video.",
+"id": "GoogleCloudDatalabelingV1beta1VideoPayload",
+"properties": {
+"frameRate": {
+"description": "FPS of the video.",
+"format": "float",
+"type": "number"
+},
+"mimeType": {
+"description": "Video format.",
+"type": "string"
+},
+"signedUri": {
+"description": "Signed uri of the video file in the service bucket.",
+"type": "string"
+},
+"videoThumbnails": {
+"description": "The list of video thumbnails.",
+"items": {
+"$ref": "GoogleCloudDatalabelingV1beta1VideoThumbnail"
+},
+"type": "array"
+},
+"videoUri": {
+"description": "Video uri from the user bucket.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1beta1VideoThumbnail": {
+"description": "Container of information of a video thumbnail.",
+"id": "GoogleCloudDatalabelingV1beta1VideoThumbnail",
+"properties": {
+"thumbnail": {
+"description": "A byte string of the video frame.",
+"format": "byte",
+"type": "string"
+},
+"timeOffset": {
+"description": "Time offset relative to the beginning of the video, corresponding to the video frame where the thumbnail has been extracted from.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1CreateInstructionMetadata": {
+"description": "Metadata of a CreateInstruction operation.",
+"id": "GoogleCloudDatalabelingV1p1alpha1CreateInstructionMetadata",
+"properties": {
+"createTime": {
+"description": "Timestamp when create instruction request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"instruction": {
+"description": "The name of the created Instruction. projects/{project_id}/instructions/{instruction_id}",
+"type": "string"
+},
+"partialFailures": {
+"description": "Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1ExportDataOperationMetadata": {
+"description": "Metadata of an ExportData operation.",
+"id": "GoogleCloudDatalabelingV1p1alpha1ExportDataOperationMetadata",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when export dataset request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of dataset to be exported. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1ExportDataOperationResponse": {
+"description": "Response used for ExportDataset longrunning operation.",
+"id": "GoogleCloudDatalabelingV1p1alpha1ExportDataOperationResponse",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"dataset": {
+"description": "Ouptut only. The name of dataset. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"exportCount": {
+"description": "Output only. Number of examples exported successfully.",
+"format": "int32",
+"type": "integer"
+},
+"labelStats": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelStats",
+"description": "Output only. Statistic infos of labels in the exported dataset."
+},
+"outputConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1OutputConfig",
+"description": "Output only. output_config in the ExportData request."
+},
+"totalCount": {
+"description": "Output only. Total number of examples requested to export",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1GcsDestination": {
+"description": "Export destination of the data.Only gcs path is allowed in output_uri.",
+"id": "GoogleCloudDatalabelingV1p1alpha1GcsDestination",
+"properties": {
+"mimeType": {
+"description": "Required. The format of the gcs destination. Only \"text/csv\" and \"application/json\" are supported.",
+"type": "string"
+},
+"outputUri": {
+"description": "Required. The output uri of destination file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1GcsFolderDestination": {
+"description": "Export folder destination of the data.",
+"id": "GoogleCloudDatalabelingV1p1alpha1GcsFolderDestination",
+"properties": {
+"outputFolderUri": {
+"description": "Required. Cloud Storage directory to export data to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1GenerateAnalysisReportOperationMetadata": {
+"description": "Metadata of an GenerateAnalysisReport operation.",
+"id": "GoogleCloudDatalabelingV1p1alpha1GenerateAnalysisReportOperationMetadata",
+"properties": {
+"createTime": {
+"description": "Timestamp when generate report request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "The name of the dataset for which the analysis report is generated. Format: \"projects/*/datasets/*\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig": {
+"description": "Configuration for how human labeling task should be done.",
+"id": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"properties": {
+"annotatedDatasetDescription": {
+"description": "Optional. A human-readable description for AnnotatedDataset. The description can be up to 10000 characters long.",
+"type": "string"
+},
+"annotatedDatasetDisplayName": {
+"description": "Required. A human-readable name for AnnotatedDataset defined by users. Maximum of 64 characters .",
+"type": "string"
+},
+"contributorEmails": {
+"description": "Optional. If you want your own labeling contributors to manage and work on this labeling request, you can set these contributors here. We will give them access to the question types in crowdcompute. Note that these emails must be registered in crowdcompute worker UI: https://crowd-compute.appspot.com/",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"instruction": {
+"description": "Required. Instruction resource name.",
+"type": "string"
+},
+"labelGroup": {
+"description": "Optional. A human-readable label used to logically group labeling tasks. This string must match the regular expression `[a-zA-Z\\\\d_-]{0,128}`.",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The Language of this question, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US. Only need to set this when task is language related. For example, French text classification.",
+"type": "string"
+},
+"questionDuration": {
+"description": "Optional. Maximum duration for contributors to answer a question. Maximum is 3600 seconds. Default is 3600 seconds.",
+"format": "google-duration",
+"type": "string"
+},
+"replicaCount": {
+"description": "Optional. Replication of questions. Each question will be sent to up to this number of contributors to label. Aggregated answers will be returned. Default is set to 1. For image related labeling, valid values are 1, 3, 5.",
+"format": "int32",
+"type": "integer"
+},
+"userEmailAddress": {
+"description": "Email of the user who started the labeling task and should be notified by email. If empty no notification will be sent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1ImportDataOperationMetadata": {
+"description": "Metadata of an ImportData operation.",
+"id": "GoogleCloudDatalabelingV1p1alpha1ImportDataOperationMetadata",
+"properties": {
+"createTime": {
+"description": "Output only. Timestamp when import dataset request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of imported dataset. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1ImportDataOperationResponse": {
+"description": "Response used for ImportData longrunning operation.",
+"id": "GoogleCloudDatalabelingV1p1alpha1ImportDataOperationResponse",
+"properties": {
+"dataset": {
+"description": "Ouptut only. The name of imported dataset.",
+"type": "string"
+},
+"importCount": {
+"description": "Output only. Number of examples imported successfully.",
+"format": "int32",
+"type": "integer"
+},
+"totalCount": {
+"description": "Output only. Total number of examples requested to import",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelImageBoundingBoxOperationMetadata": {
+"description": "Details of a LabelImageBoundingBox operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelImageBoundingBoxOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelImageBoundingPolyOperationMetadata": {
+"description": "Details of LabelImageBoundingPoly operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelImageBoundingPolyOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelImageClassificationOperationMetadata": {
+"description": "Metadata of a LabelImageClassification operation.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelImageClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelImageOrientedBoundingBoxOperationMetadata": {
+"description": "Details of a LabelImageOrientedBoundingBox operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelImageOrientedBoundingBoxOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelImagePolylineOperationMetadata": {
+"description": "Details of LabelImagePolyline operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelImagePolylineOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelImageSegmentationOperationMetadata": {
+"description": "Details of a LabelImageSegmentation operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelImageSegmentationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelOperationMetadata": {
+"description": "Metadata of a labeling operation, such as LabelImage or LabelVideo. Next tag: 23",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelOperationMetadata",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when labeling request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of dataset to be labeled. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"imageBoundingBoxDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelImageBoundingBoxOperationMetadata",
+"description": "Details of label image bounding box operation."
+},
+"imageBoundingPolyDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelImageBoundingPolyOperationMetadata",
+"description": "Details of label image bounding poly operation."
+},
+"imageClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelImageClassificationOperationMetadata",
+"description": "Details of label image classification operation."
+},
+"imageOrientedBoundingBoxDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelImageOrientedBoundingBoxOperationMetadata",
+"description": "Details of label image oriented bounding box operation."
+},
+"imagePolylineDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelImagePolylineOperationMetadata",
+"description": "Details of label image polyline operation."
+},
+"imageSegmentationDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelImageSegmentationOperationMetadata",
+"description": "Details of label image segmentation operation."
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+},
+"progressPercent": {
+"description": "Output only. Progress of label operation. Range: [0, 100].",
+"format": "int32",
+"type": "integer"
+},
+"textClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelTextClassificationOperationMetadata",
+"description": "Details of label text classification operation."
+},
+"textEntityExtractionDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelTextEntityExtractionOperationMetadata",
+"description": "Details of label text entity extraction operation."
+},
+"videoClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelVideoClassificationOperationMetadata",
+"description": "Details of label video classification operation."
+},
+"videoEventDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelVideoEventOperationMetadata",
+"description": "Details of label video event operation."
+},
+"videoObjectDetectionDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelVideoObjectDetectionOperationMetadata",
+"description": "Details of label video object detection operation."
+},
+"videoObjectTrackingDetails": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1LabelVideoObjectTrackingOperationMetadata",
+"description": "Details of label video object tracking operation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelStats": {
+"description": "Statistics about annotation specs.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelStats",
+"properties": {
+"exampleCount": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "Map of each annotation spec's example count. Key is the annotation spec name and value is the number of examples for that annotation spec. If the annotated dataset does not have annotation spec, the map will return a pair where the key is empty string and value is the total number of annotations.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelTextClassificationOperationMetadata": {
+"description": "Details of a LabelTextClassification operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelTextClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelTextEntityExtractionOperationMetadata": {
+"description": "Details of a LabelTextEntityExtraction operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelTextEntityExtractionOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelVideoClassificationOperationMetadata": {
+"description": "Details of a LabelVideoClassification operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelVideoClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelVideoEventOperationMetadata": {
+"description": "Details of a LabelVideoEvent operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelVideoEventOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelVideoObjectDetectionOperationMetadata": {
+"description": "Details of a LabelVideoObjectDetection operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelVideoObjectDetectionOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1LabelVideoObjectTrackingOperationMetadata": {
+"description": "Details of a LabelVideoObjectTracking operation metadata.",
+"id": "GoogleCloudDatalabelingV1p1alpha1LabelVideoObjectTrackingOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p1alpha1OutputConfig": {
+"description": "The configuration of output data.",
+"id": "GoogleCloudDatalabelingV1p1alpha1OutputConfig",
+"properties": {
+"gcsDestination": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1GcsDestination",
+"description": "Output to a file in Cloud Storage. Should be used for labeling output other than image segmentation."
+},
+"gcsFolderDestination": {
+"$ref": "GoogleCloudDatalabelingV1p1alpha1GcsFolderDestination",
+"description": "Output to a folder in Cloud Storage. Should be used for image segmentation or document de-identification labeling outputs."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1CreateInstructionMetadata": {
+"description": "Metadata of a CreateInstruction operation.",
+"id": "GoogleCloudDatalabelingV1p2alpha1CreateInstructionMetadata",
+"properties": {
+"createTime": {
+"description": "Timestamp when create instruction request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"instruction": {
+"description": "The name of the created Instruction. projects/{project_id}/instructions/{instruction_id}",
+"type": "string"
+},
+"partialFailures": {
+"description": "Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1ExportDataOperationMetadata": {
+"description": "Metadata of an ExportData operation.",
+"id": "GoogleCloudDatalabelingV1p2alpha1ExportDataOperationMetadata",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when export dataset request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of dataset to be exported. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1ExportDataOperationResponse": {
+"description": "Response used for ExportDataset longrunning operation.",
+"id": "GoogleCloudDatalabelingV1p2alpha1ExportDataOperationResponse",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"dataset": {
+"description": "Ouptut only. The name of dataset. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"exportCount": {
+"description": "Output only. Number of examples exported successfully.",
+"format": "int32",
+"type": "integer"
+},
+"labelStats": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelStats",
+"description": "Output only. Statistic infos of labels in the exported dataset."
+},
+"outputConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1OutputConfig",
+"description": "Output only. output_config in the ExportData request."
+},
+"totalCount": {
+"description": "Output only. Total number of examples requested to export",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1GcsDestination": {
+"description": "Export destination of the data.Only gcs path is allowed in output_uri.",
+"id": "GoogleCloudDatalabelingV1p2alpha1GcsDestination",
+"properties": {
+"mimeType": {
+"description": "Required. The format of the gcs destination. Only \"text/csv\" and \"application/json\" are supported.",
+"type": "string"
+},
+"outputUri": {
+"description": "Required. The output uri of destination file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1GcsFolderDestination": {
+"description": "Export folder destination of the data.",
+"id": "GoogleCloudDatalabelingV1p2alpha1GcsFolderDestination",
+"properties": {
+"outputFolderUri": {
+"description": "Required. Cloud Storage directory to export data to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig": {
+"description": "Configuration for how human labeling task should be done.",
+"id": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"properties": {
+"annotatedDatasetDescription": {
+"description": "Optional. A human-readable description for AnnotatedDataset. The description can be up to 10000 characters long.",
+"type": "string"
+},
+"annotatedDatasetDisplayName": {
+"description": "Required. A human-readable name for AnnotatedDataset defined by users. Maximum of 64 characters .",
+"type": "string"
+},
+"contributorEmails": {
+"description": "Optional. If you want your own labeling contributors to manage and work on this labeling request, you can set these contributors here. We will give them access to the question types in crowdcompute. Note that these emails must be registered in crowdcompute worker UI: https://crowd-compute.appspot.com/",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"instruction": {
+"description": "Required. Instruction resource name.",
+"type": "string"
+},
+"labelGroup": {
+"description": "Optional. A human-readable label used to logically group labeling tasks. This string must match the regular expression `[a-zA-Z\\\\d_-]{0,128}`.",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The Language of this question, as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt). Default value is en-US. Only need to set this when task is language related. For example, French text classification.",
+"type": "string"
+},
+"questionDuration": {
+"description": "Optional. Maximum duration for contributors to answer a question. Maximum is 3600 seconds. Default is 3600 seconds.",
+"format": "google-duration",
+"type": "string"
+},
+"replicaCount": {
+"description": "Optional. Replication of questions. Each question will be sent to up to this number of contributors to label. Aggregated answers will be returned. Default is set to 1. For image related labeling, valid values are 1, 3, 5.",
+"format": "int32",
+"type": "integer"
+},
+"userEmailAddress": {
+"description": "Email of the user who started the labeling task and should be notified by email. If empty no notification will be sent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1ImportDataOperationMetadata": {
+"description": "Metadata of an ImportData operation.",
+"id": "GoogleCloudDatalabelingV1p2alpha1ImportDataOperationMetadata",
+"properties": {
+"createTime": {
+"description": "Output only. Timestamp when import dataset request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of imported dataset. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1ImportDataOperationResponse": {
+"description": "Response used for ImportData longrunning operation.",
+"id": "GoogleCloudDatalabelingV1p2alpha1ImportDataOperationResponse",
+"properties": {
+"dataset": {
+"description": "Ouptut only. The name of imported dataset.",
+"type": "string"
+},
+"importCount": {
+"description": "Output only. Number of examples imported successfully.",
+"format": "int32",
+"type": "integer"
+},
+"totalCount": {
+"description": "Output only. Total number of examples requested to import",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelImageBoundingBoxOperationMetadata": {
+"description": "Details of a LabelImageBoundingBox operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelImageBoundingBoxOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelImageBoundingPolyOperationMetadata": {
+"description": "Details of LabelImageBoundingPoly operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelImageBoundingPolyOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelImageClassificationOperationMetadata": {
+"description": "Metadata of a LabelImageClassification operation.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelImageClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelImageOrientedBoundingBoxOperationMetadata": {
+"description": "Details of a LabelImageOrientedBoundingBox operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelImageOrientedBoundingBoxOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelImagePolylineOperationMetadata": {
+"description": "Details of LabelImagePolyline operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelImagePolylineOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelImageSegmentationOperationMetadata": {
+"description": "Details of a LabelImageSegmentation operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelImageSegmentationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelOperationMetadata": {
+"description": "Metadata of a labeling operation, such as LabelImage or LabelVideo. Next tag: 23",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelOperationMetadata",
+"properties": {
+"annotatedDataset": {
+"description": "Output only. The name of annotated dataset in format \"projects/*/datasets/*/annotatedDatasets/*\".",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Timestamp when labeling request was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"dataset": {
+"description": "Output only. The name of dataset to be labeled. \"projects/*/datasets/*\"",
+"type": "string"
+},
+"imageBoundingBoxDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelImageBoundingBoxOperationMetadata",
+"description": "Details of label image bounding box operation."
+},
+"imageBoundingPolyDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelImageBoundingPolyOperationMetadata",
+"description": "Details of label image bounding poly operation."
+},
+"imageClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelImageClassificationOperationMetadata",
+"description": "Details of label image classification operation."
+},
+"imageOrientedBoundingBoxDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelImageOrientedBoundingBoxOperationMetadata",
+"description": "Details of label image oriented bounding box operation."
+},
+"imagePolylineDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelImagePolylineOperationMetadata",
+"description": "Details of label image polyline operation."
+},
+"imageSegmentationDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelImageSegmentationOperationMetadata",
+"description": "Details of label image segmentation operation."
+},
+"partialFailures": {
+"description": "Output only. Partial failures encountered. E.g. single files that couldn't be read. Status details field will contain standard GCP error details.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+},
+"progressPercent": {
+"description": "Output only. Progress of label operation. Range: [0, 100].",
+"format": "int32",
+"type": "integer"
+},
+"textClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelTextClassificationOperationMetadata",
+"description": "Details of label text classification operation."
+},
+"textEntityExtractionDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelTextEntityExtractionOperationMetadata",
+"description": "Details of label text entity extraction operation."
+},
+"videoClassificationDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelVideoClassificationOperationMetadata",
+"description": "Details of label video classification operation."
+},
+"videoEventDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelVideoEventOperationMetadata",
+"description": "Details of label video event operation."
+},
+"videoObjectDetectionDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelVideoObjectDetectionOperationMetadata",
+"description": "Details of label video object detection operation."
+},
+"videoObjectTrackingDetails": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1LabelVideoObjectTrackingOperationMetadata",
+"description": "Details of label video object tracking operation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelStats": {
+"description": "Statistics about annotation specs.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelStats",
+"properties": {
+"exampleCount": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "Map of each annotation spec's example count. Key is the annotation spec name and value is the number of examples for that annotation spec. If the annotated dataset does not have annotation spec, the map will return a pair where the key is empty string and value is the total number of annotations.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelTextClassificationOperationMetadata": {
+"description": "Details of a LabelTextClassification operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelTextClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelTextEntityExtractionOperationMetadata": {
+"description": "Details of a LabelTextEntityExtraction operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelTextEntityExtractionOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelVideoClassificationOperationMetadata": {
+"description": "Details of a LabelVideoClassification operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelVideoClassificationOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelVideoEventOperationMetadata": {
+"description": "Details of a LabelVideoEvent operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelVideoEventOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelVideoObjectDetectionOperationMetadata": {
+"description": "Details of a LabelVideoObjectDetection operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelVideoObjectDetectionOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1LabelVideoObjectTrackingOperationMetadata": {
+"description": "Details of a LabelVideoObjectTracking operation metadata.",
+"id": "GoogleCloudDatalabelingV1p2alpha1LabelVideoObjectTrackingOperationMetadata",
+"properties": {
+"basicConfig": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1HumanAnnotationConfig",
+"description": "Basic human annotation config used in labeling request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDatalabelingV1p2alpha1OutputConfig": {
+"description": "The configuration of output data.",
+"id": "GoogleCloudDatalabelingV1p2alpha1OutputConfig",
+"properties": {
+"gcsDestination": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1GcsDestination",
+"description": "Output to a file in Cloud Storage. Should be used for labeling output other than image segmentation."
+},
+"gcsFolderDestination": {
+"$ref": "GoogleCloudDatalabelingV1p2alpha1GcsFolderDestination",
+"description": "Output to a folder in Cloud Storage. Should be used for image segmentation or document de-identification labeling outputs."
+}
+},
+"type": "object"
+},
+"GoogleLongrunningListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "GoogleLongrunningListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "GoogleLongrunningOperation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningOperation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunningOperation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Data Labeling API",
+"version": "v1beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dfareporting.v3.5.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dfareporting.v3.5.json
new file mode 100644
index 0000000000000000000000000000000000000000..939871e39593fd7a159c9e8a64db278f80e6cfc4
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dfareporting.v3.5.json
@@ -0,0 +1,729 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/dfatrafficking": {
+"description": "View and manage your DoubleClick Campaign Manager's (DCM) display ad campaigns"
+}
+}
+}
+},
+"basePath": "/dfareporting/v3.5/",
+"baseUrl": "https://dfareporting.googleapis.com/dfareporting/v3.5/",
+"batchPath": "batch",
+"canonicalName": "Dfareporting",
+"description": "Build applications to efficiently manage large or complex trafficking, reporting, and attribution workflows for Campaign Manager 360.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/doubleclick-advertisers/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "dfareporting:v3.5",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://dfareporting.mtls.googleapis.com/",
+"name": "dfareporting",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"media": {
+"methods": {
+"upload": {
+"description": "Inserts a new creative asset.",
+"flatPath": "userprofiles/{userprofilesId}/creativeAssets/{creativeAssetsId}/creativeAssets",
+"httpMethod": "POST",
+"id": "dfareporting.media.upload",
+"mediaUpload": {
+"accept": [
+"*/*"
+],
+"maxSize": "1073741824",
+"protocols": {
+"simple": {
+"multipart": true,
+"path": "/upload/dfareporting/v3.5/userprofiles/{+profileId}/creativeAssets/{+advertiserId}/creativeAssets"
+}
+}
+},
+"parameterOrder": [
+"profileId",
+"advertiserId"
+],
+"parameters": {
+"advertiserId": {
+"description": "Advertiser ID of this creative. This is a required field.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeAssets/{+advertiserId}/creativeAssets",
+"request": {
+"$ref": "CreativeAssetMetadata"
+},
+"response": {
+"$ref": "CreativeAssetMetadata"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+],
+"supportsMediaUpload": true
+}
+}
+}
+},
+"revision": "20240821",
+"rootUrl": "https://dfareporting.googleapis.com/",
+"schemas": {
+"ClickTag": {
+"description": "Creative Click Tag.",
+"id": "ClickTag",
+"properties": {
+"clickThroughUrl": {
+"$ref": "CreativeClickThroughUrl",
+"description": "Parameter value for the specified click tag. This field contains a click-through url."
+},
+"eventName": {
+"description": "Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"type": "string"
+},
+"name": {
+"description": "Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeAssetId": {
+"description": "Creative Asset ID.",
+"id": "CreativeAssetId",
+"properties": {
+"name": {
+"description": "Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: \".-_ \". Spaces are allowed.",
+"type": "string"
+},
+"type": {
+"description": "Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.",
+"enum": [
+"IMAGE",
+"FLASH",
+"VIDEO",
+"HTML",
+"HTML_IMAGE",
+"AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeAssetMetadata": {
+"description": "CreativeAssets contains properties of a creative asset file which will be uploaded or has already been uploaded. Refer to the creative sample code for how to upload assets and insert a creative.",
+"id": "CreativeAssetMetadata",
+"properties": {
+"assetIdentifier": {
+"$ref": "CreativeAssetId",
+"description": "ID of the creative asset. This is a required field."
+},
+"clickTags": {
+"description": "List of detected click tags for assets. This is a read-only, auto-generated field. This field is empty for a rich media asset.",
+"items": {
+"$ref": "ClickTag"
+},
+"type": "array"
+},
+"counterCustomEvents": {
+"description": "List of counter events configured for the asset. This is a read-only, auto-generated field and only applicable to a rich media asset.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"detectedFeatures": {
+"description": "List of feature dependencies for the creative asset that are detected by Campaign Manager. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field.",
+"items": {
+"enum": [
+"CSS_FONT_FACE",
+"CSS_BACKGROUND_SIZE",
+"CSS_BORDER_IMAGE",
+"CSS_BORDER_RADIUS",
+"CSS_BOX_SHADOW",
+"CSS_FLEX_BOX",
+"CSS_HSLA",
+"CSS_MULTIPLE_BGS",
+"CSS_OPACITY",
+"CSS_RGBA",
+"CSS_TEXT_SHADOW",
+"CSS_ANIMATIONS",
+"CSS_COLUMNS",
+"CSS_GENERATED_CONTENT",
+"CSS_GRADIENTS",
+"CSS_REFLECTIONS",
+"CSS_TRANSFORMS",
+"CSS_TRANSFORMS3D",
+"CSS_TRANSITIONS",
+"APPLICATION_CACHE",
+"CANVAS",
+"CANVAS_TEXT",
+"DRAG_AND_DROP",
+"HASH_CHANGE",
+"HISTORY",
+"AUDIO",
+"VIDEO",
+"INDEXED_DB",
+"INPUT_ATTR_AUTOCOMPLETE",
+"INPUT_ATTR_AUTOFOCUS",
+"INPUT_ATTR_LIST",
+"INPUT_ATTR_PLACEHOLDER",
+"INPUT_ATTR_MAX",
+"INPUT_ATTR_MIN",
+"INPUT_ATTR_MULTIPLE",
+"INPUT_ATTR_PATTERN",
+"INPUT_ATTR_REQUIRED",
+"INPUT_ATTR_STEP",
+"INPUT_TYPE_SEARCH",
+"INPUT_TYPE_TEL",
+"INPUT_TYPE_URL",
+"INPUT_TYPE_EMAIL",
+"INPUT_TYPE_DATETIME",
+"INPUT_TYPE_DATE",
+"INPUT_TYPE_MONTH",
+"INPUT_TYPE_WEEK",
+"INPUT_TYPE_TIME",
+"INPUT_TYPE_DATETIME_LOCAL",
+"INPUT_TYPE_NUMBER",
+"INPUT_TYPE_RANGE",
+"INPUT_TYPE_COLOR",
+"LOCAL_STORAGE",
+"POST_MESSAGE",
+"SESSION_STORAGE",
+"WEB_SOCKETS",
+"WEB_SQL_DATABASE",
+"WEB_WORKERS",
+"GEO_LOCATION",
+"INLINE_SVG",
+"SMIL",
+"SVG_HREF",
+"SVG_CLIP_PATHS",
+"TOUCH",
+"WEBGL",
+"SVG_FILTERS",
+"SVG_FE_IMAGE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"exitCustomEvents": {
+"description": "List of exit events configured for the asset. This is a read-only, auto-generated field and only applicable to a rich media asset.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"id": {
+"description": "Numeric ID of the asset. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the numeric ID of the asset. This is a read-only, auto-generated field."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeAssetMetadata\".",
+"type": "string"
+},
+"richMedia": {
+"description": "True if the uploaded asset is a rich media asset. This is a read-only, auto-generated field.",
+"type": "boolean"
+},
+"timerCustomEvents": {
+"description": "List of timer events configured for the asset. This is a read-only, auto-generated field and only applicable to a rich media asset.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"warnedValidationRules": {
+"description": "Rules validated during code generation that generated a warning. This is a read-only, auto-generated field. Possible values are: - \"ADMOB_REFERENCED\" - \"ASSET_FORMAT_UNSUPPORTED_DCM\" - \"ASSET_INVALID\" - \"CLICK_TAG_HARD_CODED\" - \"CLICK_TAG_INVALID\" - \"CLICK_TAG_IN_GWD\" - \"CLICK_TAG_MISSING\" - \"CLICK_TAG_MORE_THAN_ONE\" - \"CLICK_TAG_NON_TOP_LEVEL\" - \"COMPONENT_UNSUPPORTED_DCM\" - \"ENABLER_UNSUPPORTED_METHOD_DCM\" - \"EXTERNAL_FILE_REFERENCED\" - \"FILE_DETAIL_EMPTY\" - \"FILE_TYPE_INVALID\" - \"GWD_PROPERTIES_INVALID\" - \"HTML5_FEATURE_UNSUPPORTED\" - \"LINKED_FILE_NOT_FOUND\" - \"MAX_FLASH_VERSION_11\" - \"MRAID_REFERENCED\" - \"NOT_SSL_COMPLIANT\" - \"ORPHANED_ASSET\" - \"PRIMARY_HTML_MISSING\" - \"SVG_INVALID\" - \"ZIP_INVALID\" ",
+"items": {
+"enum": [
+"CLICK_TAG_NON_TOP_LEVEL",
+"CLICK_TAG_MISSING",
+"CLICK_TAG_MORE_THAN_ONE",
+"CLICK_TAG_INVALID",
+"ORPHANED_ASSET",
+"PRIMARY_HTML_MISSING",
+"EXTERNAL_FILE_REFERENCED",
+"MRAID_REFERENCED",
+"ADMOB_REFERENCED",
+"FILE_TYPE_INVALID",
+"ZIP_INVALID",
+"LINKED_FILE_NOT_FOUND",
+"MAX_FLASH_VERSION_11",
+"NOT_SSL_COMPLIANT",
+"FILE_DETAIL_EMPTY",
+"ASSET_INVALID",
+"GWD_PROPERTIES_INVALID",
+"ENABLER_UNSUPPORTED_METHOD_DCM",
+"ASSET_FORMAT_UNSUPPORTED_DCM",
+"COMPONENT_UNSUPPORTED_DCM",
+"HTML5_FEATURE_UNSUPPORTED",
+"CLICK_TAG_IN_GWD",
+"CLICK_TAG_HARD_CODED",
+"SVG_INVALID",
+"CLICK_TAG_IN_RICH_MEDIA",
+"MISSING_ENABLER_REFERENCE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CreativeClickThroughUrl": {
+"description": "Click-through URL",
+"id": "CreativeClickThroughUrl",
+"properties": {
+"computedClickThroughUrl": {
+"description": "Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows: - If landingPageId is specified then that landing page's URL is assigned to this field. - Otherwise, the customClickThroughUrl is assigned to this field. ",
+"type": "string"
+},
+"customClickThroughUrl": {
+"description": "Custom click-through URL. Applicable if the landingPageId field is left unset.",
+"type": "string"
+},
+"landingPageId": {
+"description": "ID of the landing page for the click-through URL.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeCustomEvent": {
+"description": "Creative Custom Event.",
+"id": "CreativeCustomEvent",
+"properties": {
+"advertiserCustomEventId": {
+"description": "Unique ID of this event used by Reporting and Data Transfer. This is a read-only field.",
+"format": "int64",
+"type": "string"
+},
+"advertiserCustomEventName": {
+"description": "User-entered name for the event.",
+"type": "string"
+},
+"advertiserCustomEventType": {
+"description": "Type of the event. This is a read-only field.",
+"enum": [
+"ADVERTISER_EVENT_TIMER",
+"ADVERTISER_EVENT_EXIT",
+"ADVERTISER_EVENT_COUNTER"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"artworkLabel": {
+"description": "Artwork label column, used to link events in Campaign Manager back to events in Studio. This is a required field and should not be modified after insertion.",
+"type": "string"
+},
+"artworkType": {
+"description": "Artwork type used by the creative.This is a read-only field.",
+"enum": [
+"ARTWORK_TYPE_FLASH",
+"ARTWORK_TYPE_HTML5",
+"ARTWORK_TYPE_MIXED",
+"ARTWORK_TYPE_IMAGE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"exitClickThroughUrl": {
+"$ref": "CreativeClickThroughUrl",
+"description": "Exit click-through URL for the event. This field is used only for exit events."
+},
+"id": {
+"description": "ID of this event. This is a required field and should not be modified after insertion.",
+"format": "int64",
+"type": "string"
+},
+"popupWindowProperties": {
+"$ref": "PopupWindowProperties",
+"description": "Properties for rich media popup windows. This field is used only for exit events."
+},
+"targetType": {
+"description": "Target type used by the event.",
+"enum": [
+"TARGET_BLANK",
+"TARGET_TOP",
+"TARGET_SELF",
+"TARGET_PARENT",
+"TARGET_POPUP"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"videoReportingId": {
+"description": "Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DimensionValue": {
+"description": "Represents a DimensionValue resource.",
+"id": "DimensionValue",
+"properties": {
+"dimensionName": {
+"description": "The name of the dimension.",
+"type": "string"
+},
+"etag": {
+"description": "The eTag of this response for caching purposes.",
+"type": "string"
+},
+"id": {
+"description": "The ID associated with the value if available.",
+"type": "string"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#dimensionValue.",
+"type": "string"
+},
+"matchType": {
+"description": "Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.",
+"enum": [
+"EXACT",
+"BEGINS_WITH",
+"CONTAINS",
+"WILDCARD_EXPRESSION"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"value": {
+"description": "The value of the dimension.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OffsetPosition": {
+"description": "Offset Position.",
+"id": "OffsetPosition",
+"properties": {
+"left": {
+"description": "Offset distance from left side of an asset or a window.",
+"format": "int32",
+"type": "integer"
+},
+"top": {
+"description": "Offset distance from top side of an asset or a window.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"PopupWindowProperties": {
+"description": "Popup Window Properties.",
+"id": "PopupWindowProperties",
+"properties": {
+"dimension": {
+"$ref": "Size",
+"description": "Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID"
+},
+"offset": {
+"$ref": "OffsetPosition",
+"description": "Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES."
+},
+"positionType": {
+"description": "Popup window position either centered or at specific coordinate.",
+"enum": [
+"CENTER",
+"COORDINATES"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"showAddressBar": {
+"description": "Whether to display the browser address bar.",
+"type": "boolean"
+},
+"showMenuBar": {
+"description": "Whether to display the browser menu bar.",
+"type": "boolean"
+},
+"showScrollBar": {
+"description": "Whether to display the browser scroll bar.",
+"type": "boolean"
+},
+"showStatusBar": {
+"description": "Whether to display the browser status bar.",
+"type": "boolean"
+},
+"showToolBar": {
+"description": "Whether to display the browser tool bar.",
+"type": "boolean"
+},
+"title": {
+"description": "Title of popup window.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Size": {
+"description": "Represents the dimensions of ads, placements, creatives, or creative assets.",
+"id": "Size",
+"properties": {
+"height": {
+"description": "Height of this size. Acceptable values are 0 to 32767, inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"iab": {
+"description": "IAB standard size. This is a read-only, auto-generated field.",
+"type": "boolean"
+},
+"id": {
+"description": "ID of this size. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#size\".",
+"type": "string"
+},
+"width": {
+"description": "Width of this size. Acceptable values are 0 to 32767, inclusive.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "dfareporting/v3.5/",
+"title": "Campaign Manager 360 API",
+"version": "v3.5"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dfareporting.v4.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dfareporting.v4.json
new file mode 100644
index 0000000000000000000000000000000000000000..31ca8b0fe6d6dafbab326d247653b045c211986c
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dfareporting.v4.json
@@ -0,0 +1,21501 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/ddmconversions": {
+"description": "Manage DoubleClick Digital Marketing conversions"
+},
+"https://www.googleapis.com/auth/dfareporting": {
+"description": "View and manage DoubleClick for Advertisers reports"
+},
+"https://www.googleapis.com/auth/dfatrafficking": {
+"description": "View and manage your DoubleClick Campaign Manager's (DCM) display ad campaigns"
+}
+}
+}
+},
+"basePath": "/dfareporting/v4/",
+"baseUrl": "https://dfareporting.googleapis.com/dfareporting/v4/",
+"batchPath": "batch",
+"canonicalName": "Dfareporting",
+"description": "Build applications to efficiently manage large or complex trafficking, reporting, and attribution workflows for Campaign Manager 360.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/doubleclick-advertisers/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "dfareporting:v4",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://dfareporting.mtls.googleapis.com/",
+"name": "dfareporting",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"accountActiveAdSummaries": {
+"methods": {
+"get": {
+"description": "Gets the account's active ad summary by account ID.",
+"flatPath": "userprofiles/{userprofilesId}/accountActiveAdSummaries/{accountActiveAdSummariesId}",
+"httpMethod": "GET",
+"id": "dfareporting.accountActiveAdSummaries.get",
+"parameterOrder": [
+"profileId",
+"summaryAccountId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"summaryAccountId": {
+"description": "Account ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountActiveAdSummaries/{+summaryAccountId}",
+"response": {
+"$ref": "AccountActiveAdSummary"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"accountPermissionGroups": {
+"methods": {
+"get": {
+"description": "Gets one account permission group by ID.",
+"flatPath": "userprofiles/{userprofilesId}/accountPermissionGroups/{accountPermissionGroupsId}",
+"httpMethod": "GET",
+"id": "dfareporting.accountPermissionGroups.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Account permission group ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountPermissionGroups/{+id}",
+"response": {
+"$ref": "AccountPermissionGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves the list of account permission groups.",
+"flatPath": "userprofiles/{userprofilesId}/accountPermissionGroups",
+"httpMethod": "GET",
+"id": "dfareporting.accountPermissionGroups.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountPermissionGroups",
+"response": {
+"$ref": "AccountPermissionGroupsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"accountPermissions": {
+"methods": {
+"get": {
+"description": "Gets one account permission by ID.",
+"flatPath": "userprofiles/{userprofilesId}/accountPermissions/{accountPermissionsId}",
+"httpMethod": "GET",
+"id": "dfareporting.accountPermissions.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Account permission ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountPermissions/{+id}",
+"response": {
+"$ref": "AccountPermission"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves the list of account permissions.",
+"flatPath": "userprofiles/{userprofilesId}/accountPermissions",
+"httpMethod": "GET",
+"id": "dfareporting.accountPermissions.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountPermissions",
+"response": {
+"$ref": "AccountPermissionsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"accountUserProfiles": {
+"methods": {
+"get": {
+"description": "Gets one account user profile by ID.",
+"flatPath": "userprofiles/{profileId}/accountUserProfiles/{accountUserProfilesId}",
+"httpMethod": "GET",
+"id": "dfareporting.accountUserProfiles.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "User profile ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/accountUserProfiles/{+id}",
+"response": {
+"$ref": "AccountUserProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new account user profile.",
+"flatPath": "userprofiles/{userprofilesId}/accountUserProfiles",
+"httpMethod": "POST",
+"id": "dfareporting.accountUserProfiles.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountUserProfiles",
+"request": {
+"$ref": "AccountUserProfile"
+},
+"response": {
+"$ref": "AccountUserProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of account user profiles, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/accountUserProfiles",
+"httpMethod": "GET",
+"id": "dfareporting.accountUserProfiles.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"active": {
+"description": "Select only active user profiles.",
+"location": "query",
+"type": "boolean"
+},
+"ids": {
+"description": "Select only user profiles with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name, ID or email. Wildcards (*) are allowed. For example, \"user profile*2015\" will return objects with names like \"user profile June 2015\", \"user profile April 2015\", or simply \"user profile 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"user profile\" will match objects with name \"my user profile\", \"user profile 2015\", or simply \"user profile\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"subaccountId": {
+"description": "Select only user profiles with the specified subaccount ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"userRoleId": {
+"description": "Select only user profiles with the specified user role ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountUserProfiles",
+"response": {
+"$ref": "AccountUserProfilesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing account user profile. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/accountUserProfiles",
+"httpMethod": "PATCH",
+"id": "dfareporting.accountUserProfiles.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. AccountUserProfile ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountUserProfiles",
+"request": {
+"$ref": "AccountUserProfile"
+},
+"response": {
+"$ref": "AccountUserProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing account user profile.",
+"flatPath": "userprofiles/{userprofilesId}/accountUserProfiles",
+"httpMethod": "PUT",
+"id": "dfareporting.accountUserProfiles.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accountUserProfiles",
+"request": {
+"$ref": "AccountUserProfile"
+},
+"response": {
+"$ref": "AccountUserProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"accounts": {
+"methods": {
+"get": {
+"description": "Gets one account by ID.",
+"flatPath": "userprofiles/{userprofilesId}/accounts/{accountsId}",
+"httpMethod": "GET",
+"id": "dfareporting.accounts.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Account ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accounts/{+id}",
+"response": {
+"$ref": "Account"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves the list of accounts, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/accounts",
+"httpMethod": "GET",
+"id": "dfareporting.accounts.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"active": {
+"description": "Select only active accounts. Don't set this field to select both active and non-active accounts.",
+"location": "query",
+"type": "boolean"
+},
+"ids": {
+"description": "Select only accounts with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"account*2015\" will return objects with names like \"account June 2015\", \"account April 2015\", or simply \"account 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"account\" will match objects with name \"my account\", \"account 2015\", or simply \"account\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accounts",
+"response": {
+"$ref": "AccountsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing account. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/accounts",
+"httpMethod": "PATCH",
+"id": "dfareporting.accounts.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Account ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accounts",
+"request": {
+"$ref": "Account"
+},
+"response": {
+"$ref": "Account"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing account.",
+"flatPath": "userprofiles/{userprofilesId}/accounts",
+"httpMethod": "PUT",
+"id": "dfareporting.accounts.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/accounts",
+"request": {
+"$ref": "Account"
+},
+"response": {
+"$ref": "Account"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"ads": {
+"methods": {
+"get": {
+"description": "Gets one ad by ID.",
+"flatPath": "userprofiles/{userprofilesId}/ads/{adsId}",
+"httpMethod": "GET",
+"id": "dfareporting.ads.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Ad ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/ads/{+id}",
+"response": {
+"$ref": "Ad"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new ad.",
+"flatPath": "userprofiles/{userprofilesId}/ads",
+"httpMethod": "POST",
+"id": "dfareporting.ads.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/ads",
+"request": {
+"$ref": "Ad"
+},
+"response": {
+"$ref": "Ad"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of ads, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/ads",
+"httpMethod": "GET",
+"id": "dfareporting.ads.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"active": {
+"description": "Select only active ads.",
+"location": "query",
+"type": "boolean"
+},
+"advertiserId": {
+"description": "Select only ads with this advertiser ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"archived": {
+"description": "Select only archived ads.",
+"location": "query",
+"type": "boolean"
+},
+"audienceSegmentIds": {
+"description": "Select only ads with these audience segment IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"campaignIds": {
+"description": "Select only ads with these campaign IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"compatibility": {
+"description": "Select default ads with the specified compatibility. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering an in-stream video ads developed with the VAST standard.",
+"enum": [
+"DISPLAY",
+"DISPLAY_INTERSTITIAL",
+"APP",
+"APP_INTERSTITIAL",
+"IN_STREAM_VIDEO",
+"IN_STREAM_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"Deprecated enum value. No longer supported.",
+"Deprecated enum value. No longer supported.",
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"creativeIds": {
+"description": "Select only ads with these creative IDs assigned.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"creativeOptimizationConfigurationIds": {
+"description": "Select only ads with these creative optimization configuration IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"dynamicClickTracker": {
+"description": "Select only dynamic click trackers. Applicable when type is AD_SERVING_CLICK_TRACKER. If true, select dynamic click trackers. If false, select static click trackers. Leave unset to select both.",
+"location": "query",
+"type": "boolean"
+},
+"ids": {
+"description": "Select only ads with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"landingPageIds": {
+"description": "Select only ads with these landing page IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"overriddenEventTagId": {
+"description": "Select only ads with this event tag override ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"placementIds": {
+"description": "Select only ads with these placement IDs assigned.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"remarketingListIds": {
+"description": "Select only ads whose list targeting expression use these remarketing list IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"ad*2015\" will return objects with names like \"ad June 2015\", \"ad April 2015\", or simply \"ad 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"ad\" will match objects with name \"my ad\", \"ad 2015\", or simply \"ad\".",
+"location": "query",
+"type": "string"
+},
+"sizeIds": {
+"description": "Select only ads with these size IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"sslCompliant": {
+"description": "Select only ads that are SSL-compliant.",
+"location": "query",
+"type": "boolean"
+},
+"sslRequired": {
+"description": "Select only ads that require SSL.",
+"location": "query",
+"type": "boolean"
+},
+"type": {
+"description": "Select only ads with these types.",
+"enum": [
+"AD_SERVING_STANDARD_AD",
+"AD_SERVING_DEFAULT_AD",
+"AD_SERVING_CLICK_TRACKER",
+"AD_SERVING_TRACKING",
+"AD_SERVING_BRAND_SAFE_AD"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/ads",
+"response": {
+"$ref": "AdsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing ad. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/ads",
+"httpMethod": "PATCH",
+"id": "dfareporting.ads.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. RemarketingList ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/ads",
+"request": {
+"$ref": "Ad"
+},
+"response": {
+"$ref": "Ad"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing ad.",
+"flatPath": "userprofiles/{userprofilesId}/ads",
+"httpMethod": "PUT",
+"id": "dfareporting.ads.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/ads",
+"request": {
+"$ref": "Ad"
+},
+"response": {
+"$ref": "Ad"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"advertiserGroups": {
+"methods": {
+"delete": {
+"description": "Deletes an existing advertiser group.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserGroups/{advertiserGroupsId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.advertiserGroups.delete",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Advertiser group ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserGroups/{+id}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one advertiser group by ID.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserGroups/{advertiserGroupsId}",
+"httpMethod": "GET",
+"id": "dfareporting.advertiserGroups.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Advertiser group ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserGroups/{+id}",
+"response": {
+"$ref": "AdvertiserGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new advertiser group.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserGroups",
+"httpMethod": "POST",
+"id": "dfareporting.advertiserGroups.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserGroups",
+"request": {
+"$ref": "AdvertiserGroup"
+},
+"response": {
+"$ref": "AdvertiserGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of advertiser groups, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserGroups",
+"httpMethod": "GET",
+"id": "dfareporting.advertiserGroups.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"ids": {
+"description": "Select only advertiser groups with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"advertiser*2015\" will return objects with names like \"advertiser group June 2015\", \"advertiser group April 2015\", or simply \"advertiser group 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"advertisergroup\" will match objects with name \"my advertisergroup\", \"advertisergroup 2015\", or simply \"advertisergroup\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserGroups",
+"response": {
+"$ref": "AdvertiserGroupsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing advertiser group. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserGroups",
+"httpMethod": "PATCH",
+"id": "dfareporting.advertiserGroups.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Advertiser Group ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserGroups",
+"request": {
+"$ref": "AdvertiserGroup"
+},
+"response": {
+"$ref": "AdvertiserGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing advertiser group.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserGroups",
+"httpMethod": "PUT",
+"id": "dfareporting.advertiserGroups.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserGroups",
+"request": {
+"$ref": "AdvertiserGroup"
+},
+"response": {
+"$ref": "AdvertiserGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"advertiserInvoices": {
+"methods": {
+"list": {
+"description": "Retrieves a list of invoices for a particular issue month. The api only works if the billing profile invoice level is set to either advertiser or campaign non-consolidated invoice level.",
+"flatPath": "userprofiles/{userprofilesId}/advertisers/{advertisersId}/invoices",
+"httpMethod": "GET",
+"id": "dfareporting.advertiserInvoices.list",
+"parameterOrder": [
+"profileId",
+"advertiserId"
+],
+"parameters": {
+"advertiserId": {
+"description": "Advertiser ID of this invoice.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"issueMonth": {
+"description": "Month for which invoices are needed in the format YYYYMM. Required field",
+"location": "query",
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertisers/{+advertiserId}/invoices",
+"response": {
+"$ref": "AdvertiserInvoicesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"advertiserLandingPages": {
+"methods": {
+"get": {
+"description": "Gets one landing page by ID.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserLandingPages/{advertiserLandingPagesId}",
+"httpMethod": "GET",
+"id": "dfareporting.advertiserLandingPages.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Landing page ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserLandingPages/{+id}",
+"response": {
+"$ref": "LandingPage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new landing page.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserLandingPages",
+"httpMethod": "POST",
+"id": "dfareporting.advertiserLandingPages.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserLandingPages",
+"request": {
+"$ref": "LandingPage"
+},
+"response": {
+"$ref": "LandingPage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of landing pages.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserLandingPages",
+"httpMethod": "GET",
+"id": "dfareporting.advertiserLandingPages.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserIds": {
+"description": "Select only landing pages that belong to these advertisers.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"archived": {
+"description": "Select only archived landing pages. Don't set this field to select both archived and non-archived landing pages.",
+"location": "query",
+"type": "boolean"
+},
+"campaignIds": {
+"description": "Select only landing pages that are associated with these campaigns.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only landing pages with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for landing pages by name or ID. Wildcards (*) are allowed. For example, \"landingpage*2017\" will return landing pages with names like \"landingpage July 2017\", \"landingpage March 2017\", or simply \"landingpage 2017\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"landingpage\" will match campaigns with name \"my landingpage\", \"landingpage 2015\", or simply \"landingpage\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"subaccountId": {
+"description": "Select only landing pages that belong to this subaccount.",
+"format": "int64",
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserLandingPages",
+"response": {
+"$ref": "AdvertiserLandingPagesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing landing page. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserLandingPages",
+"httpMethod": "PATCH",
+"id": "dfareporting.advertiserLandingPages.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Landing Page ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserLandingPages",
+"request": {
+"$ref": "LandingPage"
+},
+"response": {
+"$ref": "LandingPage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing landing page.",
+"flatPath": "userprofiles/{userprofilesId}/advertiserLandingPages",
+"httpMethod": "PUT",
+"id": "dfareporting.advertiserLandingPages.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertiserLandingPages",
+"request": {
+"$ref": "LandingPage"
+},
+"response": {
+"$ref": "LandingPage"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"advertisers": {
+"methods": {
+"get": {
+"description": "Gets one advertiser by ID.",
+"flatPath": "userprofiles/{userprofilesId}/advertisers/{advertisersId}",
+"httpMethod": "GET",
+"id": "dfareporting.advertisers.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Advertiser ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertisers/{+id}",
+"response": {
+"$ref": "Advertiser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new advertiser.",
+"flatPath": "userprofiles/{userprofilesId}/advertisers",
+"httpMethod": "POST",
+"id": "dfareporting.advertisers.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertisers",
+"request": {
+"$ref": "Advertiser"
+},
+"response": {
+"$ref": "Advertiser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of advertisers, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/advertisers",
+"httpMethod": "GET",
+"id": "dfareporting.advertisers.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserGroupIds": {
+"description": "Select only advertisers with these advertiser group IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"floodlightConfigurationIds": {
+"description": "Select only advertisers with these floodlight configuration IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only advertisers with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"includeAdvertisersWithoutGroupsOnly": {
+"description": "Select only advertisers which do not belong to any advertiser group.",
+"location": "query",
+"type": "boolean"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"onlyParent": {
+"description": "Select only advertisers which use another advertiser's floodlight configuration.",
+"location": "query",
+"type": "boolean"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"advertiser*2015\" will return objects with names like \"advertiser June 2015\", \"advertiser April 2015\", or simply \"advertiser 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"advertiser\" will match objects with name \"my advertiser\", \"advertiser 2015\", or simply \"advertiser\" .",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"status": {
+"description": "Select only advertisers with the specified status.",
+"enum": [
+"APPROVED",
+"ON_HOLD"
+],
+"enumDescriptions": [
+"Approved (ads can deliver)",
+"On-hold (all ads are stopped)"
+],
+"location": "query",
+"type": "string"
+},
+"subaccountId": {
+"description": "Select only advertisers with these subaccount IDs.",
+"format": "int64",
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertisers",
+"response": {
+"$ref": "AdvertisersListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing advertiser. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/advertisers",
+"httpMethod": "PATCH",
+"id": "dfareporting.advertisers.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Advertiser ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertisers",
+"request": {
+"$ref": "Advertiser"
+},
+"response": {
+"$ref": "Advertiser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing advertiser.",
+"flatPath": "userprofiles/{userprofilesId}/advertisers",
+"httpMethod": "PUT",
+"id": "dfareporting.advertisers.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/advertisers",
+"request": {
+"$ref": "Advertiser"
+},
+"response": {
+"$ref": "Advertiser"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"billingAssignments": {
+"methods": {
+"insert": {
+"description": "Inserts a new billing assignment and returns the new assignment. Only one of advertiser_id or campaign_id is support per request. If the new assignment has no effect (assigning a campaign to the parent advertiser billing profile or assigning an advertiser to the account billing profile), no assignment will be returned.",
+"flatPath": "userprofiles/{userprofilesId}/billingProfiles/{billingProfilesId}/billingAssignments",
+"httpMethod": "POST",
+"id": "dfareporting.billingAssignments.insert",
+"parameterOrder": [
+"profileId",
+"billingProfileId"
+],
+"parameters": {
+"billingProfileId": {
+"description": "Billing profile ID of this billing assignment.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/billingProfiles/{+billingProfileId}/billingAssignments",
+"request": {
+"$ref": "BillingAssignment"
+},
+"response": {
+"$ref": "BillingAssignment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of billing assignments.",
+"flatPath": "userprofiles/{userprofilesId}/billingProfiles/{billingProfilesId}/billingAssignments",
+"httpMethod": "GET",
+"id": "dfareporting.billingAssignments.list",
+"parameterOrder": [
+"profileId",
+"billingProfileId"
+],
+"parameters": {
+"billingProfileId": {
+"description": "Billing profile ID of this billing assignment.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/billingProfiles/{+billingProfileId}/billingAssignments",
+"response": {
+"$ref": "BillingAssignmentsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"billingProfiles": {
+"methods": {
+"get": {
+"description": "Gets one billing profile by ID.",
+"flatPath": "userprofiles/{userprofilesId}/billingProfiles/{billingProfilesId}",
+"httpMethod": "GET",
+"id": "dfareporting.billingProfiles.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Billing Profile ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/billingProfiles/{+id}",
+"response": {
+"$ref": "BillingProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of billing profiles, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/billingProfiles",
+"httpMethod": "GET",
+"id": "dfareporting.billingProfiles.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"currency_code": {
+"description": "Select only billing profile with currency.",
+"location": "query",
+"type": "string"
+},
+"ids": {
+"description": "Select only billing profile with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"name": {
+"description": "Allows searching for billing profiles by name. Wildcards (*) are allowed. For example, \"profile*2020\" will return objects with names like \"profile June 2020\", \"profile April 2020\", or simply \"profile 2020\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"profile\" will match objects with name \"my profile\", \"profile 2021\", or simply \"profile\".",
+"location": "query",
+"type": "string"
+},
+"onlySuggestion": {
+"description": "Select only billing profile which is suggested for the currency_code & subaccount_id using the Billing Suggestion API.",
+"location": "query",
+"type": "boolean"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"status": {
+"description": "Select only billing profile with the specified status.",
+"enum": [
+"UNDER_REVIEW",
+"ACTIVE",
+"ARCHIVED"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"subaccountIds": {
+"description": "Select only billing profile with the specified subaccount.When only_suggestion is true, only a single subaccount_id is supported.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/billingProfiles",
+"response": {
+"$ref": "BillingProfilesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing billing profile.",
+"flatPath": "userprofiles/{userprofilesId}/billingProfiles",
+"httpMethod": "PUT",
+"id": "dfareporting.billingProfiles.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/billingProfiles",
+"request": {
+"$ref": "BillingProfile"
+},
+"response": {
+"$ref": "BillingProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"billingRates": {
+"methods": {
+"list": {
+"description": "Retrieves a list of billing rates. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/billingProfiles/{billingProfilesId}/billingRates",
+"httpMethod": "GET",
+"id": "dfareporting.billingRates.list",
+"parameterOrder": [
+"profileId",
+"billingProfileId"
+],
+"parameters": {
+"billingProfileId": {
+"description": "Billing profile ID of this billing rate.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/billingProfiles/{+billingProfileId}/billingRates",
+"response": {
+"$ref": "BillingRatesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"browsers": {
+"methods": {
+"list": {
+"description": "Retrieves a list of browsers.",
+"flatPath": "userprofiles/{userprofilesId}/browsers",
+"httpMethod": "GET",
+"id": "dfareporting.browsers.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/browsers",
+"response": {
+"$ref": "BrowsersListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"campaignCreativeAssociations": {
+"methods": {
+"insert": {
+"description": "Associates a creative with the specified campaign. This method creates a default ad with dimensions matching the creative in the campaign if such a default ad does not exist already.",
+"flatPath": "userprofiles/{userprofilesId}/campaigns/{campaignsId}/campaignCreativeAssociations",
+"httpMethod": "POST",
+"id": "dfareporting.campaignCreativeAssociations.insert",
+"parameterOrder": [
+"profileId",
+"campaignId"
+],
+"parameters": {
+"campaignId": {
+"description": "Campaign ID in this association.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/campaigns/{+campaignId}/campaignCreativeAssociations",
+"request": {
+"$ref": "CampaignCreativeAssociation"
+},
+"response": {
+"$ref": "CampaignCreativeAssociation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves the list of creative IDs associated with the specified campaign. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/campaigns/{campaignsId}/campaignCreativeAssociations",
+"httpMethod": "GET",
+"id": "dfareporting.campaignCreativeAssociations.list",
+"parameterOrder": [
+"profileId",
+"campaignId"
+],
+"parameters": {
+"campaignId": {
+"description": "Campaign ID in this association.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/campaigns/{+campaignId}/campaignCreativeAssociations",
+"response": {
+"$ref": "CampaignCreativeAssociationsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"campaigns": {
+"methods": {
+"get": {
+"description": "Gets one campaign by ID.",
+"flatPath": "userprofiles/{userprofilesId}/campaigns/{campaignsId}",
+"httpMethod": "GET",
+"id": "dfareporting.campaigns.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Campaign ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/campaigns/{+id}",
+"response": {
+"$ref": "Campaign"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new campaign.",
+"flatPath": "userprofiles/{userprofilesId}/campaigns",
+"httpMethod": "POST",
+"id": "dfareporting.campaigns.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/campaigns",
+"request": {
+"$ref": "Campaign"
+},
+"response": {
+"$ref": "Campaign"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of campaigns, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/campaigns",
+"httpMethod": "GET",
+"id": "dfareporting.campaigns.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserGroupIds": {
+"description": "Select only campaigns whose advertisers belong to these advertiser groups.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"advertiserIds": {
+"description": "Select only campaigns that belong to these advertisers.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"archived": {
+"description": "Select only archived campaigns. Don't set this field to select both archived and non-archived campaigns.",
+"location": "query",
+"type": "boolean"
+},
+"atLeastOneOptimizationActivity": {
+"description": "Select only campaigns that have at least one optimization activity.",
+"location": "query",
+"type": "boolean"
+},
+"excludedIds": {
+"description": "Exclude campaigns with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only campaigns with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"overriddenEventTagId": {
+"description": "Select only campaigns that have overridden this event tag ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for campaigns by name or ID. Wildcards (*) are allowed. For example, \"campaign*2015\" will return campaigns with names like \"campaign June 2015\", \"campaign April 2015\", or simply \"campaign 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"campaign\" will match campaigns with name \"my campaign\", \"campaign 2015\", or simply \"campaign\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"subaccountId": {
+"description": "Select only campaigns that belong to this subaccount.",
+"format": "int64",
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/campaigns",
+"response": {
+"$ref": "CampaignsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing campaign. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/campaigns",
+"httpMethod": "PATCH",
+"id": "dfareporting.campaigns.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Campaign ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/campaigns",
+"request": {
+"$ref": "Campaign"
+},
+"response": {
+"$ref": "Campaign"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing campaign.",
+"flatPath": "userprofiles/{userprofilesId}/campaigns",
+"httpMethod": "PUT",
+"id": "dfareporting.campaigns.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/campaigns",
+"request": {
+"$ref": "Campaign"
+},
+"response": {
+"$ref": "Campaign"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"changeLogs": {
+"methods": {
+"get": {
+"description": "Gets one change log by ID.",
+"flatPath": "userprofiles/{userprofilesId}/changeLogs/{changeLogsId}",
+"httpMethod": "GET",
+"id": "dfareporting.changeLogs.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Change log ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/changeLogs/{+id}",
+"response": {
+"$ref": "ChangeLog"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of change logs. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/changeLogs",
+"httpMethod": "GET",
+"id": "dfareporting.changeLogs.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"action": {
+"description": "Select only change logs with the specified action.",
+"enum": [
+"ACTION_CREATE",
+"ACTION_UPDATE",
+"ACTION_DELETE",
+"ACTION_ENABLE",
+"ACTION_DISABLE",
+"ACTION_ADD",
+"ACTION_REMOVE",
+"ACTION_MARK_AS_DEFAULT",
+"ACTION_ASSOCIATE",
+"ACTION_ASSIGN",
+"ACTION_UNASSIGN",
+"ACTION_SEND",
+"ACTION_LINK",
+"ACTION_UNLINK",
+"ACTION_PUSH",
+"ACTION_EMAIL_TAGS",
+"ACTION_SHARE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"ids": {
+"description": "Select only change logs with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxChangeTime": {
+"description": "Select only change logs whose change time is before the specified maxChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is \"2015-07-18T22:54:00-04:00\". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.",
+"location": "query",
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"minChangeTime": {
+"description": "Select only change logs whose change time is after the specified minChangeTime.The time should be formatted as an RFC3339 date/time string. For example, for 10:54 PM on July 18th, 2015, in the America/New York time zone, the format is \"2015-07-18T22:54:00-04:00\". In other words, the year, month, day, the letter T, the hour (24-hour clock system), minute, second, and then the time zone offset.",
+"location": "query",
+"type": "string"
+},
+"objectIds": {
+"description": "Select only change logs with these object IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"objectType": {
+"description": "Select only change logs with the specified object type.",
+"enum": [
+"OBJECT_ADVERTISER",
+"OBJECT_FLOODLIGHT_CONFIGURATION",
+"OBJECT_AD",
+"OBJECT_FLOODLIGHT_ACTVITY",
+"OBJECT_CAMPAIGN",
+"OBJECT_FLOODLIGHT_ACTIVITY_GROUP",
+"OBJECT_CREATIVE",
+"OBJECT_PLACEMENT",
+"OBJECT_DFA_SITE",
+"OBJECT_USER_ROLE",
+"OBJECT_USER_PROFILE",
+"OBJECT_ADVERTISER_GROUP",
+"OBJECT_ACCOUNT",
+"OBJECT_SUBACCOUNT",
+"OBJECT_RICHMEDIA_CREATIVE",
+"OBJECT_INSTREAM_CREATIVE",
+"OBJECT_MEDIA_ORDER",
+"OBJECT_CONTENT_CATEGORY",
+"OBJECT_PLACEMENT_STRATEGY",
+"OBJECT_SD_SITE",
+"OBJECT_SIZE",
+"OBJECT_CREATIVE_GROUP",
+"OBJECT_CREATIVE_ASSET",
+"OBJECT_USER_PROFILE_FILTER",
+"OBJECT_LANDING_PAGE",
+"OBJECT_CREATIVE_FIELD",
+"OBJECT_REMARKETING_LIST",
+"OBJECT_PROVIDED_LIST_CLIENT",
+"OBJECT_EVENT_TAG",
+"OBJECT_CREATIVE_BUNDLE",
+"OBJECT_BILLING_ACCOUNT_GROUP",
+"OBJECT_BILLING_FEATURE",
+"OBJECT_RATE_CARD",
+"OBJECT_ACCOUNT_BILLING_FEATURE",
+"OBJECT_BILLING_MINIMUM_FEE",
+"OBJECT_BILLING_PROFILE",
+"OBJECT_PLAYSTORE_LINK",
+"OBJECT_TARGETING_TEMPLATE",
+"OBJECT_SEARCH_LIFT_STUDY",
+"OBJECT_FLOODLIGHT_DV360_LINK",
+"OBJECT_ADVERTISER_CUSTOMER_LINK",
+"OBJECT_CONVERSION_DOMAIN",
+"OBJECT_ACCOUNT_CONVERSION_DOMAIN"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Select only change logs whose object ID, user name, old or new values match the search string.",
+"location": "query",
+"type": "string"
+},
+"userProfileIds": {
+"description": "Select only change logs with these user profile IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/changeLogs",
+"response": {
+"$ref": "ChangeLogsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"cities": {
+"methods": {
+"list": {
+"description": "Retrieves a list of cities, possibly filtered.",
+"flatPath": "userprofiles/{userprofilesId}/cities",
+"httpMethod": "GET",
+"id": "dfareporting.cities.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"countryDartIds": {
+"description": "Select only cities from these countries.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"dartIds": {
+"description": "Select only cities with these DART IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"namePrefix": {
+"description": "Select only cities with names starting with this prefix.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"regionDartIds": {
+"description": "Select only cities from these regions.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/cities",
+"response": {
+"$ref": "CitiesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"connectionTypes": {
+"methods": {
+"get": {
+"description": "Gets one connection type by ID.",
+"flatPath": "userprofiles/{userprofilesId}/connectionTypes/{connectionTypesId}",
+"httpMethod": "GET",
+"id": "dfareporting.connectionTypes.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Connection type ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/connectionTypes/{+id}",
+"response": {
+"$ref": "ConnectionType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of connection types.",
+"flatPath": "userprofiles/{userprofilesId}/connectionTypes",
+"httpMethod": "GET",
+"id": "dfareporting.connectionTypes.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/connectionTypes",
+"response": {
+"$ref": "ConnectionTypesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"contentCategories": {
+"methods": {
+"delete": {
+"description": "Deletes an existing content category.",
+"flatPath": "userprofiles/{userprofilesId}/contentCategories/{contentCategoriesId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.contentCategories.delete",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Content category ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/contentCategories/{+id}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one content category by ID.",
+"flatPath": "userprofiles/{userprofilesId}/contentCategories/{contentCategoriesId}",
+"httpMethod": "GET",
+"id": "dfareporting.contentCategories.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Content category ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/contentCategories/{+id}",
+"response": {
+"$ref": "ContentCategory"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new content category.",
+"flatPath": "userprofiles/{userprofilesId}/contentCategories",
+"httpMethod": "POST",
+"id": "dfareporting.contentCategories.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/contentCategories",
+"request": {
+"$ref": "ContentCategory"
+},
+"response": {
+"$ref": "ContentCategory"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of content categories, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/contentCategories",
+"httpMethod": "GET",
+"id": "dfareporting.contentCategories.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"ids": {
+"description": "Select only content categories with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"contentcategory*2015\" will return objects with names like \"contentcategory June 2015\", \"contentcategory April 2015\", or simply \"contentcategory 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"contentcategory\" will match objects with name \"my contentcategory\", \"contentcategory 2015\", or simply \"contentcategory\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/contentCategories",
+"response": {
+"$ref": "ContentCategoriesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing content category. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/contentCategories",
+"httpMethod": "PATCH",
+"id": "dfareporting.contentCategories.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. ContentCategory ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/contentCategories",
+"request": {
+"$ref": "ContentCategory"
+},
+"response": {
+"$ref": "ContentCategory"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing content category.",
+"flatPath": "userprofiles/{userprofilesId}/contentCategories",
+"httpMethod": "PUT",
+"id": "dfareporting.contentCategories.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/contentCategories",
+"request": {
+"$ref": "ContentCategory"
+},
+"response": {
+"$ref": "ContentCategory"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"conversions": {
+"methods": {
+"batchinsert": {
+"description": "Inserts conversions.",
+"flatPath": "userprofiles/{profileId}/conversions/batchinsert",
+"httpMethod": "POST",
+"id": "dfareporting.conversions.batchinsert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/conversions/batchinsert",
+"request": {
+"$ref": "ConversionsBatchInsertRequest"
+},
+"response": {
+"$ref": "ConversionsBatchInsertResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/ddmconversions"
+]
+},
+"batchupdate": {
+"description": "Updates existing conversions.",
+"flatPath": "userprofiles/{profileId}/conversions/batchupdate",
+"httpMethod": "POST",
+"id": "dfareporting.conversions.batchupdate",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/conversions/batchupdate",
+"request": {
+"$ref": "ConversionsBatchUpdateRequest"
+},
+"response": {
+"$ref": "ConversionsBatchUpdateResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/ddmconversions"
+]
+}
+}
+},
+"countries": {
+"methods": {
+"get": {
+"description": "Gets one country by ID.",
+"flatPath": "userprofiles/{userprofilesId}/countries/{countriesId}",
+"httpMethod": "GET",
+"id": "dfareporting.countries.get",
+"parameterOrder": [
+"profileId",
+"dartId"
+],
+"parameters": {
+"dartId": {
+"description": "Country DART ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/countries/{+dartId}",
+"response": {
+"$ref": "Country"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of countries.",
+"flatPath": "userprofiles/{userprofilesId}/countries",
+"httpMethod": "GET",
+"id": "dfareporting.countries.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/countries",
+"response": {
+"$ref": "CountriesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"creativeAssets": {
+"methods": {
+"insert": {
+"description": "Inserts a new creative asset.",
+"flatPath": "userprofiles/{userprofilesId}/creativeAssets/{creativeAssetsId}/creativeAssets",
+"httpMethod": "POST",
+"id": "dfareporting.creativeAssets.insert",
+"mediaUpload": {
+"accept": [
+"*/*"
+],
+"maxSize": "1073741824",
+"protocols": {
+"simple": {
+"multipart": true,
+"path": "/upload/dfareporting/v4/userprofiles/{+profileId}/creativeAssets/{+advertiserId}/creativeAssets"
+}
+}
+},
+"parameterOrder": [
+"profileId",
+"advertiserId"
+],
+"parameters": {
+"advertiserId": {
+"description": "Advertiser ID of this creative. This is a required field.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeAssets/{+advertiserId}/creativeAssets",
+"request": {
+"$ref": "CreativeAssetMetadata"
+},
+"response": {
+"$ref": "CreativeAssetMetadata"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+],
+"supportsMediaUpload": true
+}
+}
+},
+"creativeFieldValues": {
+"methods": {
+"delete": {
+"description": "Deletes an existing creative field value.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields/{creativeFieldsId}/creativeFieldValues/{creativeFieldValuesId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.creativeFieldValues.delete",
+"parameterOrder": [
+"profileId",
+"creativeFieldId",
+"id"
+],
+"parameters": {
+"creativeFieldId": {
+"description": "Creative field ID for this creative field value.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"id": {
+"description": "Creative Field Value ID",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields/{+creativeFieldId}/creativeFieldValues/{+id}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one creative field value by ID.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields/{creativeFieldsId}/creativeFieldValues/{creativeFieldValuesId}",
+"httpMethod": "GET",
+"id": "dfareporting.creativeFieldValues.get",
+"parameterOrder": [
+"profileId",
+"creativeFieldId",
+"id"
+],
+"parameters": {
+"creativeFieldId": {
+"description": "Creative field ID for this creative field value.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"id": {
+"description": "Creative Field Value ID",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields/{+creativeFieldId}/creativeFieldValues/{+id}",
+"response": {
+"$ref": "CreativeFieldValue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new creative field value.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields/{creativeFieldsId}/creativeFieldValues",
+"httpMethod": "POST",
+"id": "dfareporting.creativeFieldValues.insert",
+"parameterOrder": [
+"profileId",
+"creativeFieldId"
+],
+"parameters": {
+"creativeFieldId": {
+"description": "Creative field ID for this creative field value.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields/{+creativeFieldId}/creativeFieldValues",
+"request": {
+"$ref": "CreativeFieldValue"
+},
+"response": {
+"$ref": "CreativeFieldValue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of creative field values, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields/{creativeFieldsId}/creativeFieldValues",
+"httpMethod": "GET",
+"id": "dfareporting.creativeFieldValues.list",
+"parameterOrder": [
+"profileId",
+"creativeFieldId"
+],
+"parameters": {
+"creativeFieldId": {
+"description": "Creative field ID for this creative field value.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only creative field values with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for creative field values by their values. Wildcards (e.g. *) are not allowed.",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"VALUE"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields/{+creativeFieldId}/creativeFieldValues",
+"response": {
+"$ref": "CreativeFieldValuesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing creative field value. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields/{creativeFieldsId}/creativeFieldValues",
+"httpMethod": "PATCH",
+"id": "dfareporting.creativeFieldValues.patch",
+"parameterOrder": [
+"profileId",
+"creativeFieldId",
+"id"
+],
+"parameters": {
+"creativeFieldId": {
+"description": "CreativeField ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"id": {
+"description": "CreativeFieldValue ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields/{+creativeFieldId}/creativeFieldValues",
+"request": {
+"$ref": "CreativeFieldValue"
+},
+"response": {
+"$ref": "CreativeFieldValue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing creative field value.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields/{creativeFieldsId}/creativeFieldValues",
+"httpMethod": "PUT",
+"id": "dfareporting.creativeFieldValues.update",
+"parameterOrder": [
+"profileId",
+"creativeFieldId"
+],
+"parameters": {
+"creativeFieldId": {
+"description": "Creative field ID for this creative field value.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields/{+creativeFieldId}/creativeFieldValues",
+"request": {
+"$ref": "CreativeFieldValue"
+},
+"response": {
+"$ref": "CreativeFieldValue"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"creativeFields": {
+"methods": {
+"delete": {
+"description": "Deletes an existing creative field.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields/{creativeFieldsId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.creativeFields.delete",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Creative Field ID",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields/{+id}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one creative field by ID.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields/{creativeFieldsId}",
+"httpMethod": "GET",
+"id": "dfareporting.creativeFields.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Creative Field ID",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields/{+id}",
+"response": {
+"$ref": "CreativeField"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new creative field.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields",
+"httpMethod": "POST",
+"id": "dfareporting.creativeFields.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields",
+"request": {
+"$ref": "CreativeField"
+},
+"response": {
+"$ref": "CreativeField"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of creative fields, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields",
+"httpMethod": "GET",
+"id": "dfareporting.creativeFields.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserIds": {
+"description": "Select only creative fields that belong to these advertisers.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only creative fields with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for creative fields by name or ID. Wildcards (*) are allowed. For example, \"creativefield*2015\" will return creative fields with names like \"creativefield June 2015\", \"creativefield April 2015\", or simply \"creativefield 2015\". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of \"creativefield\" will match creative fields with the name \"my creativefield\", \"creativefield 2015\", or simply \"creativefield\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields",
+"response": {
+"$ref": "CreativeFieldsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing creative field. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields",
+"httpMethod": "PATCH",
+"id": "dfareporting.creativeFields.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "CreativeField ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields",
+"request": {
+"$ref": "CreativeField"
+},
+"response": {
+"$ref": "CreativeField"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing creative field.",
+"flatPath": "userprofiles/{userprofilesId}/creativeFields",
+"httpMethod": "PUT",
+"id": "dfareporting.creativeFields.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeFields",
+"request": {
+"$ref": "CreativeField"
+},
+"response": {
+"$ref": "CreativeField"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"creativeGroups": {
+"methods": {
+"get": {
+"description": "Gets one creative group by ID.",
+"flatPath": "userprofiles/{userprofilesId}/creativeGroups/{creativeGroupsId}",
+"httpMethod": "GET",
+"id": "dfareporting.creativeGroups.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Creative group ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeGroups/{+id}",
+"response": {
+"$ref": "CreativeGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new creative group.",
+"flatPath": "userprofiles/{userprofilesId}/creativeGroups",
+"httpMethod": "POST",
+"id": "dfareporting.creativeGroups.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeGroups",
+"request": {
+"$ref": "CreativeGroup"
+},
+"response": {
+"$ref": "CreativeGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of creative groups, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/creativeGroups",
+"httpMethod": "GET",
+"id": "dfareporting.creativeGroups.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserIds": {
+"description": "Select only creative groups that belong to these advertisers.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"groupNumber": {
+"description": "Select only creative groups that belong to this subgroup.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"ids": {
+"description": "Select only creative groups with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for creative groups by name or ID. Wildcards (*) are allowed. For example, \"creativegroup*2015\" will return creative groups with names like \"creativegroup June 2015\", \"creativegroup April 2015\", or simply \"creativegroup 2015\". Most of the searches also add wild-cards implicitly at the start and the end of the search string. For example, a search string of \"creativegroup\" will match creative groups with the name \"my creativegroup\", \"creativegroup 2015\", or simply \"creativegroup\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeGroups",
+"response": {
+"$ref": "CreativeGroupsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing creative group. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/creativeGroups",
+"httpMethod": "PATCH",
+"id": "dfareporting.creativeGroups.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Creative Group ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeGroups",
+"request": {
+"$ref": "CreativeGroup"
+},
+"response": {
+"$ref": "CreativeGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing creative group.",
+"flatPath": "userprofiles/{userprofilesId}/creativeGroups",
+"httpMethod": "PUT",
+"id": "dfareporting.creativeGroups.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creativeGroups",
+"request": {
+"$ref": "CreativeGroup"
+},
+"response": {
+"$ref": "CreativeGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"creatives": {
+"methods": {
+"get": {
+"description": "Gets one creative by ID.",
+"flatPath": "userprofiles/{userprofilesId}/creatives/{creativesId}",
+"httpMethod": "GET",
+"id": "dfareporting.creatives.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Creative ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creatives/{+id}",
+"response": {
+"$ref": "Creative"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new creative.",
+"flatPath": "userprofiles/{userprofilesId}/creatives",
+"httpMethod": "POST",
+"id": "dfareporting.creatives.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creatives",
+"request": {
+"$ref": "Creative"
+},
+"response": {
+"$ref": "Creative"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of creatives, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/creatives",
+"httpMethod": "GET",
+"id": "dfareporting.creatives.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"active": {
+"description": "Select only active creatives. Leave blank to select active and inactive creatives.",
+"location": "query",
+"type": "boolean"
+},
+"advertiserId": {
+"description": "Select only creatives with this advertiser ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"archived": {
+"description": "Select only archived creatives. Leave blank to select archived and unarchived creatives.",
+"location": "query",
+"type": "boolean"
+},
+"campaignId": {
+"description": "Select only creatives with this campaign ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"companionCreativeIds": {
+"description": "Select only in-stream video creatives with these companion IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"creativeFieldIds": {
+"description": "Select only creatives with these creative field IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only creatives with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"renderingIds": {
+"description": "Select only creatives with these rendering IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"creative*2015\" will return objects with names like \"creative June 2015\", \"creative April 2015\", or simply \"creative 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"creative\" will match objects with name \"my creative\", \"creative 2015\", or simply \"creative\".",
+"location": "query",
+"type": "string"
+},
+"sizeIds": {
+"description": "Select only creatives with these size IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"studioCreativeId": {
+"description": "Select only creatives corresponding to this Studio creative ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"types": {
+"description": "Select only creatives with these creative types.",
+"enum": [
+"IMAGE",
+"DISPLAY_REDIRECT",
+"CUSTOM_DISPLAY",
+"INTERNAL_REDIRECT",
+"CUSTOM_DISPLAY_INTERSTITIAL",
+"INTERSTITIAL_INTERNAL_REDIRECT",
+"TRACKING_TEXT",
+"RICH_MEDIA_DISPLAY_BANNER",
+"RICH_MEDIA_INPAGE_FLOATING",
+"RICH_MEDIA_IM_EXPAND",
+"RICH_MEDIA_DISPLAY_EXPANDING",
+"RICH_MEDIA_DISPLAY_INTERSTITIAL",
+"RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL",
+"RICH_MEDIA_MOBILE_IN_APP",
+"FLASH_INPAGE",
+"INSTREAM_VIDEO",
+"VPAID_LINEAR_VIDEO",
+"VPAID_NON_LINEAR_VIDEO",
+"INSTREAM_VIDEO_REDIRECT",
+"RICH_MEDIA_PEEL_DOWN",
+"HTML5_BANNER",
+"DISPLAY",
+"DISPLAY_IMAGE_GALLERY",
+"BRAND_SAFE_DEFAULT_INSTREAM_VIDEO",
+"INSTREAM_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creatives",
+"response": {
+"$ref": "CreativesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing creative. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/creatives",
+"httpMethod": "PATCH",
+"id": "dfareporting.creatives.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Creative ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creatives",
+"request": {
+"$ref": "Creative"
+},
+"response": {
+"$ref": "Creative"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing creative.",
+"flatPath": "userprofiles/{userprofilesId}/creatives",
+"httpMethod": "PUT",
+"id": "dfareporting.creatives.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/creatives",
+"request": {
+"$ref": "Creative"
+},
+"response": {
+"$ref": "Creative"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"dimensionValues": {
+"methods": {
+"query": {
+"description": "Retrieves list of report dimension values for a list of filters.",
+"flatPath": "userprofiles/{profileId}/dimensionvalues/query",
+"httpMethod": "POST",
+"id": "dfareporting.dimensionValues.query",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"maxResults": {
+"default": "100",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value of the nextToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/dimensionvalues/query",
+"request": {
+"$ref": "DimensionValueRequest"
+},
+"response": {
+"$ref": "DimensionValueList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+}
+}
+},
+"directorySites": {
+"methods": {
+"get": {
+"description": "Gets one directory site by ID.",
+"flatPath": "userprofiles/{userprofilesId}/directorySites/{directorySitesId}",
+"httpMethod": "GET",
+"id": "dfareporting.directorySites.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Directory site ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/directorySites/{+id}",
+"response": {
+"$ref": "DirectorySite"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new directory site.",
+"flatPath": "userprofiles/{userprofilesId}/directorySites",
+"httpMethod": "POST",
+"id": "dfareporting.directorySites.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/directorySites",
+"request": {
+"$ref": "DirectorySite"
+},
+"response": {
+"$ref": "DirectorySite"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of directory sites, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/directorySites",
+"httpMethod": "GET",
+"id": "dfareporting.directorySites.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"acceptsInStreamVideoPlacements": {
+"description": "This search filter is no longer supported and will have no effect on the results returned.",
+"location": "query",
+"type": "boolean"
+},
+"acceptsInterstitialPlacements": {
+"description": "This search filter is no longer supported and will have no effect on the results returned.",
+"location": "query",
+"type": "boolean"
+},
+"acceptsPublisherPaidPlacements": {
+"description": "Select only directory sites that accept publisher paid placements. This field can be left blank.",
+"location": "query",
+"type": "boolean"
+},
+"active": {
+"description": "Select only active directory sites. Leave blank to retrieve both active and inactive directory sites.",
+"location": "query",
+"type": "boolean"
+},
+"dfpNetworkCode": {
+"description": "Select only directory sites with this Ad Manager network code.",
+"location": "query",
+"type": "string"
+},
+"ids": {
+"description": "Select only directory sites with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name, ID or URL. Wildcards (*) are allowed. For example, \"directory site*2015\" will return objects with names like \"directory site June 2015\", \"directory site April 2015\", or simply \"directory site 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"directory site\" will match objects with name \"my directory site\", \"directory site 2015\" or simply, \"directory site\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/directorySites",
+"response": {
+"$ref": "DirectorySitesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"dynamicTargetingKeys": {
+"methods": {
+"delete": {
+"description": "Deletes an existing dynamic targeting key.",
+"flatPath": "userprofiles/{userprofilesId}/dynamicTargetingKeys/{dynamicTargetingKeysId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.dynamicTargetingKeys.delete",
+"parameterOrder": [
+"profileId",
+"objectId",
+"name",
+"objectType"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of this dynamic targeting key. This is a required field. Must be less than 256 characters long and cannot contain commas. All characters are converted to lowercase.",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"objectId": {
+"description": "ID of the object of this dynamic targeting key. This is a required field.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"objectType": {
+"description": "Required. Type of the object of this dynamic targeting key. This is a required field.",
+"enum": [
+"OBJECT_ADVERTISER",
+"OBJECT_AD",
+"OBJECT_CREATIVE",
+"OBJECT_PLACEMENT"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/dynamicTargetingKeys/{+objectId}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new dynamic targeting key. Keys must be created at the advertiser level before being assigned to the advertiser's ads, creatives, or placements. There is a maximum of 1000 keys per advertiser, out of which a maximum of 20 keys can be assigned per ad, creative, or placement.",
+"flatPath": "userprofiles/{userprofilesId}/dynamicTargetingKeys",
+"httpMethod": "POST",
+"id": "dfareporting.dynamicTargetingKeys.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/dynamicTargetingKeys",
+"request": {
+"$ref": "DynamicTargetingKey"
+},
+"response": {
+"$ref": "DynamicTargetingKey"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of dynamic targeting keys.",
+"flatPath": "userprofiles/{userprofilesId}/dynamicTargetingKeys",
+"httpMethod": "GET",
+"id": "dfareporting.dynamicTargetingKeys.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserId": {
+"description": "Select only dynamic targeting keys whose object has this advertiser ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"names": {
+"description": "Select only dynamic targeting keys exactly matching these names.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"objectId": {
+"description": "Select only dynamic targeting keys with this object ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"objectType": {
+"description": "Select only dynamic targeting keys with this object type.",
+"enum": [
+"OBJECT_ADVERTISER",
+"OBJECT_AD",
+"OBJECT_CREATIVE",
+"OBJECT_PLACEMENT"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/dynamicTargetingKeys",
+"response": {
+"$ref": "DynamicTargetingKeysListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"eventTags": {
+"methods": {
+"delete": {
+"description": "Deletes an existing event tag.",
+"flatPath": "userprofiles/{userprofilesId}/eventTags/{eventTagsId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.eventTags.delete",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Event tag ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/eventTags/{+id}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one event tag by ID.",
+"flatPath": "userprofiles/{userprofilesId}/eventTags/{eventTagsId}",
+"httpMethod": "GET",
+"id": "dfareporting.eventTags.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Event tag ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/eventTags/{+id}",
+"response": {
+"$ref": "EventTag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new event tag.",
+"flatPath": "userprofiles/{userprofilesId}/eventTags",
+"httpMethod": "POST",
+"id": "dfareporting.eventTags.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/eventTags",
+"request": {
+"$ref": "EventTag"
+},
+"response": {
+"$ref": "EventTag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of event tags, possibly filtered.",
+"flatPath": "userprofiles/{userprofilesId}/eventTags",
+"httpMethod": "GET",
+"id": "dfareporting.eventTags.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"adId": {
+"description": "Select only event tags that belong to this ad.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"advertiserId": {
+"description": "Select only event tags that belong to this advertiser.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"campaignId": {
+"description": "Select only event tags that belong to this campaign.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"definitionsOnly": {
+"description": "Examine only the specified campaign or advertiser's event tags for matching selector criteria. When set to false, the parent advertiser and parent campaign of the specified ad or campaign is examined as well. In addition, when set to false, the status field is examined as well, along with the enabledByDefault field. This parameter can not be set to true when adId is specified as ads do not define their own even tags.",
+"location": "query",
+"type": "boolean"
+},
+"enabled": {
+"description": "Select only enabled event tags. What is considered enabled or disabled depends on the definitionsOnly parameter. When definitionsOnly is set to true, only the specified advertiser or campaign's event tags' enabledByDefault field is examined. When definitionsOnly is set to false, the specified ad or specified campaign's parent advertiser's or parent campaign's event tags' enabledByDefault and status fields are examined as well.",
+"location": "query",
+"type": "boolean"
+},
+"eventTagTypes": {
+"description": "Select only event tags with the specified event tag types. Event tag types can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking.",
+"enum": [
+"IMPRESSION_IMAGE_EVENT_TAG",
+"IMPRESSION_JAVASCRIPT_EVENT_TAG",
+"CLICK_THROUGH_EVENT_TAG"
+],
+"enumDescriptions": [
+"A third-party pixel for impression tracking.",
+"A third-party JavaScript URL for impression tracking.",
+"A third-party URL for click tracking that redirects to the landing page."
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only event tags with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"eventtag*2015\" will return objects with names like \"eventtag June 2015\", \"eventtag April 2015\", or simply \"eventtag 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"eventtag\" will match objects with name \"my eventtag\", \"eventtag 2015\", or simply \"eventtag\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/eventTags",
+"response": {
+"$ref": "EventTagsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing event tag. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/eventTags",
+"httpMethod": "PATCH",
+"id": "dfareporting.eventTags.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. EventTag ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/eventTags",
+"request": {
+"$ref": "EventTag"
+},
+"response": {
+"$ref": "EventTag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing event tag.",
+"flatPath": "userprofiles/{userprofilesId}/eventTags",
+"httpMethod": "PUT",
+"id": "dfareporting.eventTags.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/eventTags",
+"request": {
+"$ref": "EventTag"
+},
+"response": {
+"$ref": "EventTag"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"files": {
+"methods": {
+"get": {
+"description": "Retrieves a report file by its report ID and file ID. This method supports media download.",
+"flatPath": "reports/{reportId}/files/{fileId}",
+"httpMethod": "GET",
+"id": "dfareporting.files.get",
+"parameterOrder": [
+"reportId",
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the report file.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the report.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "reports/{reportId}/files/{fileId}",
+"response": {
+"$ref": "File"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+],
+"supportsMediaDownload": true
+},
+"list": {
+"description": "Lists files for a user profile.",
+"flatPath": "userprofiles/{profileId}/files",
+"httpMethod": "GET",
+"id": "dfareporting.files.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"maxResults": {
+"default": "10",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value of the nextToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"scope": {
+"default": "MINE",
+"description": "The scope that defines which results are returned.",
+"enum": [
+"ALL",
+"MINE",
+"SHARED_WITH_ME"
+],
+"enumDescriptions": [
+"All files in account.",
+"My files.",
+"Files shared with me."
+],
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "LAST_MODIFIED_TIME",
+"description": "The field by which to sort the list.",
+"enum": [
+"ID",
+"LAST_MODIFIED_TIME"
+],
+"enumDescriptions": [
+"Sort by file ID.",
+"Sort by 'lastmodifiedAt' field."
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "DESCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/files",
+"response": {
+"$ref": "FileList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+}
+}
+},
+"floodlightActivities": {
+"methods": {
+"delete": {
+"description": "Deletes an existing floodlight activity.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivities/{floodlightActivitiesId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.floodlightActivities.delete",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Floodlight activity ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivities/{+id}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"generatetag": {
+"description": "Generates a tag for a floodlight activity.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivities/generatetag",
+"httpMethod": "POST",
+"id": "dfareporting.floodlightActivities.generatetag",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"floodlightActivityId": {
+"description": "Floodlight activity ID for which we want to generate a tag.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivities/generatetag",
+"response": {
+"$ref": "FloodlightActivitiesGenerateTagResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one floodlight activity by ID.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivities/{floodlightActivitiesId}",
+"httpMethod": "GET",
+"id": "dfareporting.floodlightActivities.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Floodlight activity ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivities/{+id}",
+"response": {
+"$ref": "FloodlightActivity"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new floodlight activity.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivities",
+"httpMethod": "POST",
+"id": "dfareporting.floodlightActivities.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivities",
+"request": {
+"$ref": "FloodlightActivity"
+},
+"response": {
+"$ref": "FloodlightActivity"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of floodlight activities, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivities",
+"httpMethod": "GET",
+"id": "dfareporting.floodlightActivities.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserId": {
+"description": "Select only floodlight activities for the specified advertiser ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"floodlightActivityGroupIds": {
+"description": "Select only floodlight activities with the specified floodlight activity group IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"floodlightActivityGroupName": {
+"description": "Select only floodlight activities with the specified floodlight activity group name.",
+"location": "query",
+"type": "string"
+},
+"floodlightActivityGroupTagString": {
+"description": "Select only floodlight activities with the specified floodlight activity group tag string.",
+"location": "query",
+"type": "string"
+},
+"floodlightActivityGroupType": {
+"description": "Select only floodlight activities with the specified floodlight activity group type.",
+"enum": [
+"COUNTER",
+"SALE"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"floodlightConfigurationId": {
+"description": "Select only floodlight activities for the specified floodlight configuration ID. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"ids": {
+"description": "Select only floodlight activities with the specified IDs. Must specify either ids, advertiserId, or floodlightConfigurationId for a non-empty result.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"floodlightactivity*2015\" will return objects with names like \"floodlightactivity June 2015\", \"floodlightactivity April 2015\", or simply \"floodlightactivity 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"floodlightactivity\" will match objects with name \"my floodlightactivity activity\", \"floodlightactivity 2015\", or simply \"floodlightactivity\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"tagString": {
+"description": "Select only floodlight activities with the specified tag string.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivities",
+"response": {
+"$ref": "FloodlightActivitiesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing floodlight activity. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivities",
+"httpMethod": "PATCH",
+"id": "dfareporting.floodlightActivities.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. EventTag ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivities",
+"request": {
+"$ref": "FloodlightActivity"
+},
+"response": {
+"$ref": "FloodlightActivity"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing floodlight activity.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivities",
+"httpMethod": "PUT",
+"id": "dfareporting.floodlightActivities.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivities",
+"request": {
+"$ref": "FloodlightActivity"
+},
+"response": {
+"$ref": "FloodlightActivity"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"floodlightActivityGroups": {
+"methods": {
+"get": {
+"description": "Gets one floodlight activity group by ID.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivityGroups/{floodlightActivityGroupsId}",
+"httpMethod": "GET",
+"id": "dfareporting.floodlightActivityGroups.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Floodlight activity Group ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivityGroups/{+id}",
+"response": {
+"$ref": "FloodlightActivityGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new floodlight activity group.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivityGroups",
+"httpMethod": "POST",
+"id": "dfareporting.floodlightActivityGroups.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivityGroups",
+"request": {
+"$ref": "FloodlightActivityGroup"
+},
+"response": {
+"$ref": "FloodlightActivityGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of floodlight activity groups, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivityGroups",
+"httpMethod": "GET",
+"id": "dfareporting.floodlightActivityGroups.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserId": {
+"description": "Select only floodlight activity groups with the specified advertiser ID. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"floodlightConfigurationId": {
+"description": "Select only floodlight activity groups with the specified floodlight configuration ID. Must specify either advertiserId, or floodlightConfigurationId for a non-empty result.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"ids": {
+"description": "Select only floodlight activity groups with the specified IDs. Must specify either advertiserId or floodlightConfigurationId for a non-empty result.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"floodlightactivitygroup*2015\" will return objects with names like \"floodlightactivitygroup June 2015\", \"floodlightactivitygroup April 2015\", or simply \"floodlightactivitygroup 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"floodlightactivitygroup\" will match objects with name \"my floodlightactivitygroup activity\", \"floodlightactivitygroup 2015\", or simply \"floodlightactivitygroup\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"type": {
+"description": "Select only floodlight activity groups with the specified floodlight activity group type.",
+"enum": [
+"COUNTER",
+"SALE"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivityGroups",
+"response": {
+"$ref": "FloodlightActivityGroupsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing floodlight activity group. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivityGroups",
+"httpMethod": "PATCH",
+"id": "dfareporting.floodlightActivityGroups.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. EventTag ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivityGroups",
+"request": {
+"$ref": "FloodlightActivityGroup"
+},
+"response": {
+"$ref": "FloodlightActivityGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing floodlight activity group.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightActivityGroups",
+"httpMethod": "PUT",
+"id": "dfareporting.floodlightActivityGroups.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightActivityGroups",
+"request": {
+"$ref": "FloodlightActivityGroup"
+},
+"response": {
+"$ref": "FloodlightActivityGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"floodlightConfigurations": {
+"methods": {
+"get": {
+"description": "Gets one floodlight configuration by ID.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightConfigurations/{floodlightConfigurationsId}",
+"httpMethod": "GET",
+"id": "dfareporting.floodlightConfigurations.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Floodlight configuration ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightConfigurations/{+id}",
+"response": {
+"$ref": "FloodlightConfiguration"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of floodlight configurations, possibly filtered.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightConfigurations",
+"httpMethod": "GET",
+"id": "dfareporting.floodlightConfigurations.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"ids": {
+"description": "Set of IDs of floodlight configurations to retrieve. Required field; otherwise an empty list will be returned.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightConfigurations",
+"response": {
+"$ref": "FloodlightConfigurationsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing floodlight configuration. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightConfigurations",
+"httpMethod": "PATCH",
+"id": "dfareporting.floodlightConfigurations.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. EventTag ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightConfigurations",
+"request": {
+"$ref": "FloodlightConfiguration"
+},
+"response": {
+"$ref": "FloodlightConfiguration"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing floodlight configuration.",
+"flatPath": "userprofiles/{userprofilesId}/floodlightConfigurations",
+"httpMethod": "PUT",
+"id": "dfareporting.floodlightConfigurations.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/floodlightConfigurations",
+"request": {
+"$ref": "FloodlightConfiguration"
+},
+"response": {
+"$ref": "FloodlightConfiguration"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"inventoryItems": {
+"methods": {
+"get": {
+"description": "Gets one inventory item by ID.",
+"flatPath": "userprofiles/{userprofilesId}/projects/{projectId}/inventoryItems/{inventoryItemsId}",
+"httpMethod": "GET",
+"id": "dfareporting.inventoryItems.get",
+"parameterOrder": [
+"profileId",
+"projectId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Inventory item ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"projectId": {
+"description": "Project ID for order documents.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/projects/{projectId}/inventoryItems/{+id}",
+"response": {
+"$ref": "InventoryItem"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of inventory items, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/projects/{projectId}/inventoryItems",
+"httpMethod": "GET",
+"id": "dfareporting.inventoryItems.list",
+"parameterOrder": [
+"profileId",
+"projectId"
+],
+"parameters": {
+"ids": {
+"description": "Select only inventory items with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"inPlan": {
+"description": "Select only inventory items that are in plan.",
+"location": "query",
+"type": "boolean"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"orderId": {
+"description": "Select only inventory items that belong to specified orders.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"projectId": {
+"description": "Project ID for order documents.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"siteId": {
+"description": "Select only inventory items that are associated with these sites.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"type": {
+"description": "Select only inventory items with this type.",
+"enum": [
+"PLANNING_PLACEMENT_TYPE_REGULAR",
+"PLANNING_PLACEMENT_TYPE_CREDIT"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/projects/{projectId}/inventoryItems",
+"response": {
+"$ref": "InventoryItemsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"languages": {
+"methods": {
+"list": {
+"description": "Retrieves a list of languages.",
+"flatPath": "userprofiles/{userprofilesId}/languages",
+"httpMethod": "GET",
+"id": "dfareporting.languages.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/languages",
+"response": {
+"$ref": "LanguagesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"metros": {
+"methods": {
+"list": {
+"description": "Retrieves a list of metros.",
+"flatPath": "userprofiles/{userprofilesId}/metros",
+"httpMethod": "GET",
+"id": "dfareporting.metros.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/metros",
+"response": {
+"$ref": "MetrosListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"mobileApps": {
+"methods": {
+"get": {
+"description": "Gets one mobile app by ID.",
+"flatPath": "userprofiles/{userprofilesId}/mobileApps/{mobileAppsId}",
+"httpMethod": "GET",
+"id": "dfareporting.mobileApps.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Mobile app ID.",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/mobileApps/{+id}",
+"response": {
+"$ref": "MobileApp"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves list of available mobile apps.",
+"flatPath": "userprofiles/{userprofilesId}/mobileApps",
+"httpMethod": "GET",
+"id": "dfareporting.mobileApps.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"directories": {
+"description": "Select only apps from these directories.",
+"enum": [
+"UNKNOWN",
+"APPLE_APP_STORE",
+"GOOGLE_PLAY_STORE",
+"ROKU_APP_STORE",
+"AMAZON_FIRETV_APP_STORE",
+"PLAYSTATION_APP_STORE",
+"APPLE_TV_APP_STORE",
+"XBOX_APP_STORE",
+"SAMSUNG_TV_APP_STORE",
+"ANDROID_TV_APP_STORE",
+"GENERIC_CTV_APP_STORE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only apps with these IDs.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"app*2015\" will return objects with names like \"app Jan 2018\", \"app Jan 2018\", or simply \"app 2018\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"app\" will match objects with name \"my app\", \"app 2018\", or simply \"app\".",
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/mobileApps",
+"response": {
+"$ref": "MobileAppsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"mobileCarriers": {
+"methods": {
+"get": {
+"description": "Gets one mobile carrier by ID.",
+"flatPath": "userprofiles/{userprofilesId}/mobileCarriers/{mobileCarriersId}",
+"httpMethod": "GET",
+"id": "dfareporting.mobileCarriers.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Mobile carrier ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/mobileCarriers/{+id}",
+"response": {
+"$ref": "MobileCarrier"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of mobile carriers.",
+"flatPath": "userprofiles/{userprofilesId}/mobileCarriers",
+"httpMethod": "GET",
+"id": "dfareporting.mobileCarriers.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/mobileCarriers",
+"response": {
+"$ref": "MobileCarriersListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"operatingSystemVersions": {
+"methods": {
+"get": {
+"description": "Gets one operating system version by ID.",
+"flatPath": "userprofiles/{userprofilesId}/operatingSystemVersions/{operatingSystemVersionsId}",
+"httpMethod": "GET",
+"id": "dfareporting.operatingSystemVersions.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Operating system version ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/operatingSystemVersions/{+id}",
+"response": {
+"$ref": "OperatingSystemVersion"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of operating system versions.",
+"flatPath": "userprofiles/{userprofilesId}/operatingSystemVersions",
+"httpMethod": "GET",
+"id": "dfareporting.operatingSystemVersions.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/operatingSystemVersions",
+"response": {
+"$ref": "OperatingSystemVersionsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"operatingSystems": {
+"methods": {
+"get": {
+"description": "Gets one operating system by DART ID.",
+"flatPath": "userprofiles/{userprofilesId}/operatingSystems/{operatingSystemsId}",
+"httpMethod": "GET",
+"id": "dfareporting.operatingSystems.get",
+"parameterOrder": [
+"profileId",
+"dartId"
+],
+"parameters": {
+"dartId": {
+"description": "Operating system DART ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/operatingSystems/{+dartId}",
+"response": {
+"$ref": "OperatingSystem"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of operating systems.",
+"flatPath": "userprofiles/{userprofilesId}/operatingSystems",
+"httpMethod": "GET",
+"id": "dfareporting.operatingSystems.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/operatingSystems",
+"response": {
+"$ref": "OperatingSystemsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"orders": {
+"methods": {
+"get": {
+"description": "Gets one order by ID.",
+"flatPath": "userprofiles/{userprofilesId}/projects/{projectId}/orders/{ordersId}",
+"httpMethod": "GET",
+"id": "dfareporting.orders.get",
+"parameterOrder": [
+"profileId",
+"projectId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Order ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"projectId": {
+"description": "Project ID for orders.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/projects/{projectId}/orders/{+id}",
+"response": {
+"$ref": "Order"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of orders, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/projects/{projectId}/orders",
+"httpMethod": "GET",
+"id": "dfareporting.orders.list",
+"parameterOrder": [
+"profileId",
+"projectId"
+],
+"parameters": {
+"ids": {
+"description": "Select only orders with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"projectId": {
+"description": "Project ID for orders.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for orders by name or ID. Wildcards (*) are allowed. For example, \"order*2015\" will return orders with names like \"order June 2015\", \"order April 2015\", or simply \"order 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"order\" will match orders with name \"my order\", \"order 2015\", or simply \"order\".",
+"location": "query",
+"type": "string"
+},
+"siteId": {
+"description": "Select only orders that are associated with these site IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/projects/{projectId}/orders",
+"response": {
+"$ref": "OrdersListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"placementGroups": {
+"methods": {
+"get": {
+"description": "Gets one placement group by ID.",
+"flatPath": "userprofiles/{userprofilesId}/placementGroups/{placementGroupsId}",
+"httpMethod": "GET",
+"id": "dfareporting.placementGroups.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Placement group ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementGroups/{+id}",
+"response": {
+"$ref": "PlacementGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new placement group.",
+"flatPath": "userprofiles/{userprofilesId}/placementGroups",
+"httpMethod": "POST",
+"id": "dfareporting.placementGroups.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementGroups",
+"request": {
+"$ref": "PlacementGroup"
+},
+"response": {
+"$ref": "PlacementGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of placement groups, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/placementGroups",
+"httpMethod": "GET",
+"id": "dfareporting.placementGroups.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"activeStatus": {
+"description": "Select only placements with these active statuses.",
+"enum": [
+"PLACEMENT_STATUS_UNKNOWN",
+"PLACEMENT_STATUS_ACTIVE",
+"PLACEMENT_STATUS_INACTIVE",
+"PLACEMENT_STATUS_ARCHIVED",
+"PLACEMENT_STATUS_PERMANENTLY_ARCHIVED"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"advertiserIds": {
+"description": "Select only placement groups that belong to these advertisers.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"campaignIds": {
+"description": "Select only placement groups that belong to these campaigns.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"contentCategoryIds": {
+"description": "Select only placement groups that are associated with these content categories.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"directorySiteIds": {
+"description": "Select only placement groups that are associated with these directory sites.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only placement groups with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxEndDate": {
+"description": "Select only placements or placement groups whose end date is on or before the specified maxEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+"location": "query",
+"type": "string"
+},
+"maxResults": {
+"default": "800",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"maxStartDate": {
+"description": "Select only placements or placement groups whose start date is on or before the specified maxStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+"location": "query",
+"type": "string"
+},
+"minEndDate": {
+"description": "Select only placements or placement groups whose end date is on or after the specified minEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+"location": "query",
+"type": "string"
+},
+"minStartDate": {
+"description": "Select only placements or placement groups whose start date is on or after the specified minStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"placementGroupType": {
+"description": "Select only placement groups belonging with this group type. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting.",
+"enum": [
+"PLACEMENT_PACKAGE",
+"PLACEMENT_ROADBLOCK"
+],
+"enumDescriptions": [
+"A simple group of site-placements (tags). Basically acts as a single pricing point for a group of tags.",
+"A group of site-placements (tags) that not only acts as a single pricing point but also assumes that all the tags in it will be served at the same time. This kind of group requires one of its assigned site-placements to be marked as primary for reporting purposes."
+],
+"location": "query",
+"type": "string"
+},
+"placementStrategyIds": {
+"description": "Select only placement groups that are associated with these placement strategies.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"pricingTypes": {
+"description": "Select only placement groups with these pricing types.",
+"enum": [
+"PRICING_TYPE_CPM",
+"PRICING_TYPE_CPC",
+"PRICING_TYPE_CPA",
+"PRICING_TYPE_FLAT_RATE_IMPRESSIONS",
+"PRICING_TYPE_FLAT_RATE_CLICKS",
+"PRICING_TYPE_CPM_ACTIVEVIEW"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for placement groups by name or ID. Wildcards (*) are allowed. For example, \"placement*2015\" will return placement groups with names like \"placement group June 2015\", \"placement group May 2015\", or simply \"placements 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"placementgroup\" will match placement groups with name \"my placementgroup\", \"placementgroup 2015\", or simply \"placementgroup\".",
+"location": "query",
+"type": "string"
+},
+"siteIds": {
+"description": "Select only placement groups that are associated with these sites.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementGroups",
+"response": {
+"$ref": "PlacementGroupsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing placement group. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/placementGroups",
+"httpMethod": "PATCH",
+"id": "dfareporting.placementGroups.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Placement ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementGroups",
+"request": {
+"$ref": "PlacementGroup"
+},
+"response": {
+"$ref": "PlacementGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing placement group.",
+"flatPath": "userprofiles/{userprofilesId}/placementGroups",
+"httpMethod": "PUT",
+"id": "dfareporting.placementGroups.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementGroups",
+"request": {
+"$ref": "PlacementGroup"
+},
+"response": {
+"$ref": "PlacementGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"placementStrategies": {
+"methods": {
+"delete": {
+"description": "Deletes an existing placement strategy.",
+"flatPath": "userprofiles/{userprofilesId}/placementStrategies/{placementStrategiesId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.placementStrategies.delete",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Placement strategy ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementStrategies/{+id}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one placement strategy by ID.",
+"flatPath": "userprofiles/{userprofilesId}/placementStrategies/{placementStrategiesId}",
+"httpMethod": "GET",
+"id": "dfareporting.placementStrategies.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Placement strategy ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementStrategies/{+id}",
+"response": {
+"$ref": "PlacementStrategy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new placement strategy.",
+"flatPath": "userprofiles/{userprofilesId}/placementStrategies",
+"httpMethod": "POST",
+"id": "dfareporting.placementStrategies.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementStrategies",
+"request": {
+"$ref": "PlacementStrategy"
+},
+"response": {
+"$ref": "PlacementStrategy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of placement strategies, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/placementStrategies",
+"httpMethod": "GET",
+"id": "dfareporting.placementStrategies.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"ids": {
+"description": "Select only placement strategies with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"placementstrategy*2015\" will return objects with names like \"placementstrategy June 2015\", \"placementstrategy April 2015\", or simply \"placementstrategy 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"placementstrategy\" will match objects with name \"my placementstrategy\", \"placementstrategy 2015\", or simply \"placementstrategy\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementStrategies",
+"response": {
+"$ref": "PlacementStrategiesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing placement strategy. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/placementStrategies",
+"httpMethod": "PATCH",
+"id": "dfareporting.placementStrategies.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. PlacementStrategy ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementStrategies",
+"request": {
+"$ref": "PlacementStrategy"
+},
+"response": {
+"$ref": "PlacementStrategy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing placement strategy.",
+"flatPath": "userprofiles/{userprofilesId}/placementStrategies",
+"httpMethod": "PUT",
+"id": "dfareporting.placementStrategies.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placementStrategies",
+"request": {
+"$ref": "PlacementStrategy"
+},
+"response": {
+"$ref": "PlacementStrategy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"placements": {
+"methods": {
+"generatetags": {
+"description": "Generates tags for a placement.",
+"flatPath": "userprofiles/{userprofilesId}/placements/generatetags",
+"httpMethod": "POST",
+"id": "dfareporting.placements.generatetags",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"campaignId": {
+"description": "Generate placements belonging to this campaign. This is a required field.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"placementIds": {
+"description": "Generate tags for these placements.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"tagFormats": {
+"description": "Tag formats to generate for these placements. *Note:* PLACEMENT_TAG_STANDARD can only be generated for 1x1 placements.",
+"enum": [
+"PLACEMENT_TAG_STANDARD",
+"PLACEMENT_TAG_IFRAME_JAVASCRIPT",
+"PLACEMENT_TAG_IFRAME_ILAYER",
+"PLACEMENT_TAG_INTERNAL_REDIRECT",
+"PLACEMENT_TAG_JAVASCRIPT",
+"PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT",
+"PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT",
+"PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT",
+"PLACEMENT_TAG_CLICK_COMMANDS",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH",
+"PLACEMENT_TAG_TRACKING",
+"PLACEMENT_TAG_TRACKING_IFRAME",
+"PLACEMENT_TAG_TRACKING_JAVASCRIPT",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3",
+"PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_4",
+"PLACEMENT_TAG_TRACKING_THIRD_PARTY_MEASUREMENT"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placements/generatetags",
+"response": {
+"$ref": "PlacementsGenerateTagsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one placement by ID.",
+"flatPath": "userprofiles/{userprofilesId}/placements/{placementsId}",
+"httpMethod": "GET",
+"id": "dfareporting.placements.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Placement ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placements/{+id}",
+"response": {
+"$ref": "Placement"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new placement.",
+"flatPath": "userprofiles/{userprofilesId}/placements",
+"httpMethod": "POST",
+"id": "dfareporting.placements.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placements",
+"request": {
+"$ref": "Placement"
+},
+"response": {
+"$ref": "Placement"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of placements, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/placements",
+"httpMethod": "GET",
+"id": "dfareporting.placements.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"activeStatus": {
+"description": "Select only placements with these active statuses.",
+"enum": [
+"PLACEMENT_STATUS_UNKNOWN",
+"PLACEMENT_STATUS_ACTIVE",
+"PLACEMENT_STATUS_INACTIVE",
+"PLACEMENT_STATUS_ARCHIVED",
+"PLACEMENT_STATUS_PERMANENTLY_ARCHIVED"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"advertiserIds": {
+"description": "Select only placements that belong to these advertisers.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"campaignIds": {
+"description": "Select only placements that belong to these campaigns.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"compatibilities": {
+"description": "Select only placements that are associated with these compatibilities. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard.",
+"enum": [
+"DISPLAY",
+"DISPLAY_INTERSTITIAL",
+"APP",
+"APP_INTERSTITIAL",
+"IN_STREAM_VIDEO",
+"IN_STREAM_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"Deprecated enum value. No longer supported.",
+"Deprecated enum value. No longer supported.",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"contentCategoryIds": {
+"description": "Select only placements that are associated with these content categories.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"directorySiteIds": {
+"description": "Select only placements that are associated with these directory sites.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"groupIds": {
+"description": "Select only placements that belong to these placement groups.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only placements with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxEndDate": {
+"description": "Select only placements or placement groups whose end date is on or before the specified maxEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+"location": "query",
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"maxStartDate": {
+"description": "Select only placements or placement groups whose start date is on or before the specified maxStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+"location": "query",
+"type": "string"
+},
+"minEndDate": {
+"description": "Select only placements or placement groups whose end date is on or after the specified minEndDate. The date should be formatted as \"yyyy-MM-dd\".",
+"location": "query",
+"type": "string"
+},
+"minStartDate": {
+"description": "Select only placements or placement groups whose start date is on or after the specified minStartDate. The date should be formatted as \"yyyy-MM-dd\".",
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"paymentSource": {
+"description": "Select only placements with this payment source.",
+"enum": [
+"PLACEMENT_AGENCY_PAID",
+"PLACEMENT_PUBLISHER_PAID"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"placementStrategyIds": {
+"description": "Select only placements that are associated with these placement strategies.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"pricingTypes": {
+"description": "Select only placements with these pricing types.",
+"enum": [
+"PRICING_TYPE_CPM",
+"PRICING_TYPE_CPC",
+"PRICING_TYPE_CPA",
+"PRICING_TYPE_FLAT_RATE_IMPRESSIONS",
+"PRICING_TYPE_FLAT_RATE_CLICKS",
+"PRICING_TYPE_CPM_ACTIVEVIEW"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for placements by name or ID. Wildcards (*) are allowed. For example, \"placement*2015\" will return placements with names like \"placement June 2015\", \"placement May 2015\", or simply \"placements 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"placement\" will match placements with name \"my placement\", \"placement 2015\", or simply \"placement\" .",
+"location": "query",
+"type": "string"
+},
+"siteIds": {
+"description": "Select only placements that are associated with these sites.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"sizeIds": {
+"description": "Select only placements that are associated with these sizes.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placements",
+"response": {
+"$ref": "PlacementsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing placement. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/placements",
+"httpMethod": "PATCH",
+"id": "dfareporting.placements.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Placement ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placements",
+"request": {
+"$ref": "Placement"
+},
+"response": {
+"$ref": "Placement"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing placement.",
+"flatPath": "userprofiles/{userprofilesId}/placements",
+"httpMethod": "PUT",
+"id": "dfareporting.placements.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/placements",
+"request": {
+"$ref": "Placement"
+},
+"response": {
+"$ref": "Placement"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"platformTypes": {
+"methods": {
+"get": {
+"description": "Gets one platform type by ID.",
+"flatPath": "userprofiles/{userprofilesId}/platformTypes/{platformTypesId}",
+"httpMethod": "GET",
+"id": "dfareporting.platformTypes.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Platform type ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/platformTypes/{+id}",
+"response": {
+"$ref": "PlatformType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of platform types.",
+"flatPath": "userprofiles/{userprofilesId}/platformTypes",
+"httpMethod": "GET",
+"id": "dfareporting.platformTypes.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/platformTypes",
+"response": {
+"$ref": "PlatformTypesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"postalCodes": {
+"methods": {
+"get": {
+"description": "Gets one postal code by ID.",
+"flatPath": "userprofiles/{userprofilesId}/postalCodes/{postalCodesId}",
+"httpMethod": "GET",
+"id": "dfareporting.postalCodes.get",
+"parameterOrder": [
+"profileId",
+"code"
+],
+"parameters": {
+"code": {
+"description": "Postal code ID.",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/postalCodes/{+code}",
+"response": {
+"$ref": "PostalCode"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of postal codes.",
+"flatPath": "userprofiles/{userprofilesId}/postalCodes",
+"httpMethod": "GET",
+"id": "dfareporting.postalCodes.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/postalCodes",
+"response": {
+"$ref": "PostalCodesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"projects": {
+"methods": {
+"get": {
+"description": "Gets one project by ID.",
+"flatPath": "userprofiles/{userprofilesId}/projects/{projectsId}",
+"httpMethod": "GET",
+"id": "dfareporting.projects.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Project ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/projects/{+id}",
+"response": {
+"$ref": "Project"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of projects, possibly filtered. This method supports paging .",
+"flatPath": "userprofiles/{userprofilesId}/projects",
+"httpMethod": "GET",
+"id": "dfareporting.projects.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserIds": {
+"description": "Select only projects with these advertiser IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only projects with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for projects by name or ID. Wildcards (*) are allowed. For example, \"project*2015\" will return projects with names like \"project June 2015\", \"project April 2015\", or simply \"project 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"project\" will match projects with name \"my project\", \"project 2015\", or simply \"project\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/projects",
+"response": {
+"$ref": "ProjectsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"regions": {
+"methods": {
+"list": {
+"description": "Retrieves a list of regions.",
+"flatPath": "userprofiles/{userprofilesId}/regions",
+"httpMethod": "GET",
+"id": "dfareporting.regions.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/regions",
+"response": {
+"$ref": "RegionsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"remarketingListShares": {
+"methods": {
+"get": {
+"description": "Gets one remarketing list share by remarketing list ID.",
+"flatPath": "userprofiles/{userprofilesId}/remarketingListShares/{remarketingListSharesId}",
+"httpMethod": "GET",
+"id": "dfareporting.remarketingListShares.get",
+"parameterOrder": [
+"profileId",
+"remarketingListId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"remarketingListId": {
+"description": "Remarketing list ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/remarketingListShares/{+remarketingListId}",
+"response": {
+"$ref": "RemarketingListShare"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing remarketing list share. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/remarketingListShares",
+"httpMethod": "PATCH",
+"id": "dfareporting.remarketingListShares.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. RemarketingList ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/remarketingListShares",
+"request": {
+"$ref": "RemarketingListShare"
+},
+"response": {
+"$ref": "RemarketingListShare"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing remarketing list share.",
+"flatPath": "userprofiles/{userprofilesId}/remarketingListShares",
+"httpMethod": "PUT",
+"id": "dfareporting.remarketingListShares.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/remarketingListShares",
+"request": {
+"$ref": "RemarketingListShare"
+},
+"response": {
+"$ref": "RemarketingListShare"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"remarketingLists": {
+"methods": {
+"get": {
+"description": "Gets one remarketing list by ID.",
+"flatPath": "userprofiles/{userprofilesId}/remarketingLists/{remarketingListsId}",
+"httpMethod": "GET",
+"id": "dfareporting.remarketingLists.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Remarketing list ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/remarketingLists/{+id}",
+"response": {
+"$ref": "RemarketingList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new remarketing list.",
+"flatPath": "userprofiles/{userprofilesId}/remarketingLists",
+"httpMethod": "POST",
+"id": "dfareporting.remarketingLists.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/remarketingLists",
+"request": {
+"$ref": "RemarketingList"
+},
+"response": {
+"$ref": "RemarketingList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of remarketing lists, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/remarketingLists",
+"httpMethod": "GET",
+"id": "dfareporting.remarketingLists.list",
+"parameterOrder": [
+"profileId",
+"advertiserId"
+],
+"parameters": {
+"active": {
+"description": "Select only active or only inactive remarketing lists.",
+"location": "query",
+"type": "boolean"
+},
+"advertiserId": {
+"description": "Required. Select only remarketing lists owned by this advertiser.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"floodlightActivityId": {
+"description": "Select only remarketing lists that have this floodlight activity ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"name": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"remarketing list*2015\" will return objects with names like \"remarketing list June 2015\", \"remarketing list April 2015\", or simply \"remarketing list 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"remarketing list\" will match objects with name \"my remarketing list\", \"remarketing list 2015\", or simply \"remarketing list\".",
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/remarketingLists",
+"response": {
+"$ref": "RemarketingListsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing remarketing list. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/remarketingLists",
+"httpMethod": "PATCH",
+"id": "dfareporting.remarketingLists.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. RemarketingList ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/remarketingLists",
+"request": {
+"$ref": "RemarketingList"
+},
+"response": {
+"$ref": "RemarketingList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing remarketing list.",
+"flatPath": "userprofiles/{userprofilesId}/remarketingLists",
+"httpMethod": "PUT",
+"id": "dfareporting.remarketingLists.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/remarketingLists",
+"request": {
+"$ref": "RemarketingList"
+},
+"response": {
+"$ref": "RemarketingList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"reports": {
+"methods": {
+"delete": {
+"description": "Deletes a report by its ID.",
+"flatPath": "userprofiles/{profileId}/reports/{reportId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.reports.delete",
+"parameterOrder": [
+"profileId",
+"reportId"
+],
+"parameters": {
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the report.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports/{reportId}",
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+},
+"get": {
+"description": "Retrieves a report by its ID.",
+"flatPath": "userprofiles/{profileId}/reports/{reportId}",
+"httpMethod": "GET",
+"id": "dfareporting.reports.get",
+"parameterOrder": [
+"profileId",
+"reportId"
+],
+"parameters": {
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the report.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports/{reportId}",
+"response": {
+"$ref": "Report"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+},
+"insert": {
+"description": "Creates a report.",
+"flatPath": "userprofiles/{profileId}/reports",
+"httpMethod": "POST",
+"id": "dfareporting.reports.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports",
+"request": {
+"$ref": "Report"
+},
+"response": {
+"$ref": "Report"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+},
+"list": {
+"description": "Retrieves list of reports.",
+"flatPath": "userprofiles/{profileId}/reports",
+"httpMethod": "GET",
+"id": "dfareporting.reports.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"maxResults": {
+"default": "10",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value of the nextToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"scope": {
+"default": "MINE",
+"description": "The scope that defines which results are returned.",
+"enum": [
+"ALL",
+"MINE"
+],
+"enumDescriptions": [
+"All reports in account.",
+"My reports."
+],
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "LAST_MODIFIED_TIME",
+"description": "The field by which to sort the list.",
+"enum": [
+"ID",
+"LAST_MODIFIED_TIME",
+"NAME"
+],
+"enumDescriptions": [
+"Sort by report ID.",
+"Sort by 'lastModifiedTime' field.",
+"Sort by name of reports."
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "DESCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports",
+"response": {
+"$ref": "ReportList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+},
+"patch": {
+"description": "Updates an existing report. This method supports patch semantics.",
+"flatPath": "userprofiles/{profileId}/reports/{reportId}",
+"httpMethod": "PATCH",
+"id": "dfareporting.reports.patch",
+"parameterOrder": [
+"profileId",
+"reportId"
+],
+"parameters": {
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the report.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports/{reportId}",
+"request": {
+"$ref": "Report"
+},
+"response": {
+"$ref": "Report"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+},
+"run": {
+"description": "Runs a report.",
+"flatPath": "userprofiles/{profileId}/reports/{reportId}/run",
+"httpMethod": "POST",
+"id": "dfareporting.reports.run",
+"parameterOrder": [
+"profileId",
+"reportId"
+],
+"parameters": {
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the report.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"synchronous": {
+"default": "false",
+"description": "If set and true, tries to run the report synchronously.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "userprofiles/{profileId}/reports/{reportId}/run",
+"response": {
+"$ref": "File"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+},
+"update": {
+"description": "Updates a report.",
+"flatPath": "userprofiles/{profileId}/reports/{reportId}",
+"httpMethod": "PUT",
+"id": "dfareporting.reports.update",
+"parameterOrder": [
+"profileId",
+"reportId"
+],
+"parameters": {
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the report.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports/{reportId}",
+"request": {
+"$ref": "Report"
+},
+"response": {
+"$ref": "Report"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+}
+},
+"resources": {
+"compatibleFields": {
+"methods": {
+"query": {
+"description": "Returns the fields that are compatible to be selected in the respective sections of a report criteria, given the fields already selected in the input report and user permissions.",
+"flatPath": "userprofiles/{profileId}/reports/compatiblefields/query",
+"httpMethod": "POST",
+"id": "dfareporting.reports.compatibleFields.query",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports/compatiblefields/query",
+"request": {
+"$ref": "Report"
+},
+"response": {
+"$ref": "CompatibleFields"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+}
+}
+},
+"files": {
+"methods": {
+"get": {
+"description": "Retrieves a report file by its report ID and file ID. This method supports media download.",
+"flatPath": "userprofiles/{profileId}/reports/{reportId}/files/{fileId}",
+"httpMethod": "GET",
+"id": "dfareporting.reports.files.get",
+"parameterOrder": [
+"profileId",
+"reportId",
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the report file.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the report.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports/{reportId}/files/{fileId}",
+"response": {
+"$ref": "File"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+],
+"supportsMediaDownload": true
+},
+"list": {
+"description": "Lists files for a report.",
+"flatPath": "userprofiles/{profileId}/reports/{reportId}/files",
+"httpMethod": "GET",
+"id": "dfareporting.reports.files.list",
+"parameterOrder": [
+"profileId",
+"reportId"
+],
+"parameters": {
+"maxResults": {
+"default": "10",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value of the nextToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "The Campaign Manager 360 user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the parent report.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"sortField": {
+"default": "LAST_MODIFIED_TIME",
+"description": "The field by which to sort the list.",
+"enum": [
+"ID",
+"LAST_MODIFIED_TIME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "DESCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}/reports/{reportId}/files",
+"response": {
+"$ref": "FileList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfareporting"
+]
+}
+}
+}
+}
+},
+"sites": {
+"methods": {
+"get": {
+"description": "Gets one site by ID.",
+"flatPath": "userprofiles/{userprofilesId}/sites/{sitesId}",
+"httpMethod": "GET",
+"id": "dfareporting.sites.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Site ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/sites/{+id}",
+"response": {
+"$ref": "Site"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new site.",
+"flatPath": "userprofiles/{userprofilesId}/sites",
+"httpMethod": "POST",
+"id": "dfareporting.sites.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/sites",
+"request": {
+"$ref": "Site"
+},
+"response": {
+"$ref": "Site"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of sites, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/sites",
+"httpMethod": "GET",
+"id": "dfareporting.sites.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"acceptsInStreamVideoPlacements": {
+"description": "This search filter is no longer supported and will have no effect on the results returned.",
+"location": "query",
+"type": "boolean"
+},
+"acceptsInterstitialPlacements": {
+"description": "This search filter is no longer supported and will have no effect on the results returned.",
+"location": "query",
+"type": "boolean"
+},
+"acceptsPublisherPaidPlacements": {
+"description": "Select only sites that accept publisher paid placements.",
+"location": "query",
+"type": "boolean"
+},
+"adWordsSite": {
+"description": "Select only AdWords sites.",
+"location": "query",
+"type": "boolean"
+},
+"approved": {
+"description": "Select only approved sites.",
+"location": "query",
+"type": "boolean"
+},
+"campaignIds": {
+"description": "Select only sites with these campaign IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"directorySiteIds": {
+"description": "Select only sites with these directory site IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"ids": {
+"description": "Select only sites with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name, ID or keyName. Wildcards (*) are allowed. For example, \"site*2015\" will return objects with names like \"site June 2015\", \"site April 2015\", or simply \"site 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"site\" will match objects with name \"my site\", \"site 2015\", or simply \"site\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"subaccountId": {
+"description": "Select only sites with this subaccount ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"unmappedSite": {
+"description": "Select only sites that have not been mapped to a directory site.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "userprofiles/{+profileId}/sites",
+"response": {
+"$ref": "SitesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing site. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/sites",
+"httpMethod": "PATCH",
+"id": "dfareporting.sites.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Site ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/sites",
+"request": {
+"$ref": "Site"
+},
+"response": {
+"$ref": "Site"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing site.",
+"flatPath": "userprofiles/{userprofilesId}/sites",
+"httpMethod": "PUT",
+"id": "dfareporting.sites.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/sites",
+"request": {
+"$ref": "Site"
+},
+"response": {
+"$ref": "Site"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"sizes": {
+"methods": {
+"get": {
+"description": "Gets one size by ID.",
+"flatPath": "userprofiles/{userprofilesId}/sizes/{sizesId}",
+"httpMethod": "GET",
+"id": "dfareporting.sizes.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Size ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/sizes/{+id}",
+"response": {
+"$ref": "Size"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new size.",
+"flatPath": "userprofiles/{userprofilesId}/sizes",
+"httpMethod": "POST",
+"id": "dfareporting.sizes.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/sizes",
+"request": {
+"$ref": "Size"
+},
+"response": {
+"$ref": "Size"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of sizes, possibly filtered. Retrieved sizes are globally unique and may include values not currently in use by your account. Due to this, the list of sizes returned by this method may differ from the list seen in the Trafficking UI.",
+"flatPath": "userprofiles/{userprofilesId}/sizes",
+"httpMethod": "GET",
+"id": "dfareporting.sizes.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"height": {
+"description": "Select only sizes with this height.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"iabStandard": {
+"description": "Select only IAB standard sizes.",
+"location": "query",
+"type": "boolean"
+},
+"ids": {
+"description": "Select only sizes with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"width": {
+"description": "Select only sizes with this width.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+}
+},
+"path": "userprofiles/{+profileId}/sizes",
+"response": {
+"$ref": "SizesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"subaccounts": {
+"methods": {
+"get": {
+"description": "Gets one subaccount by ID.",
+"flatPath": "userprofiles/{userprofilesId}/subaccounts/{subaccountsId}",
+"httpMethod": "GET",
+"id": "dfareporting.subaccounts.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Subaccount ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/subaccounts/{+id}",
+"response": {
+"$ref": "Subaccount"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new subaccount.",
+"flatPath": "userprofiles/{userprofilesId}/subaccounts",
+"httpMethod": "POST",
+"id": "dfareporting.subaccounts.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/subaccounts",
+"request": {
+"$ref": "Subaccount"
+},
+"response": {
+"$ref": "Subaccount"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Gets a list of subaccounts, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/subaccounts",
+"httpMethod": "GET",
+"id": "dfareporting.subaccounts.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"ids": {
+"description": "Select only subaccounts with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"subaccount*2015\" will return objects with names like \"subaccount June 2015\", \"subaccount April 2015\", or simply \"subaccount 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"subaccount\" will match objects with name \"my subaccount\", \"subaccount 2015\", or simply \"subaccount\" .",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/subaccounts",
+"response": {
+"$ref": "SubaccountsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing subaccount. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/subaccounts",
+"httpMethod": "PATCH",
+"id": "dfareporting.subaccounts.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. Subaccount ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/subaccounts",
+"request": {
+"$ref": "Subaccount"
+},
+"response": {
+"$ref": "Subaccount"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing subaccount.",
+"flatPath": "userprofiles/{userprofilesId}/subaccounts",
+"httpMethod": "PUT",
+"id": "dfareporting.subaccounts.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/subaccounts",
+"request": {
+"$ref": "Subaccount"
+},
+"response": {
+"$ref": "Subaccount"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"targetableRemarketingLists": {
+"methods": {
+"get": {
+"description": "Gets one remarketing list by ID.",
+"flatPath": "userprofiles/{userprofilesId}/targetableRemarketingLists/{targetableRemarketingListsId}",
+"httpMethod": "GET",
+"id": "dfareporting.targetableRemarketingLists.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Remarketing list ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/targetableRemarketingLists/{+id}",
+"response": {
+"$ref": "TargetableRemarketingList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of targetable remarketing lists, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/targetableRemarketingLists",
+"httpMethod": "GET",
+"id": "dfareporting.targetableRemarketingLists.list",
+"parameterOrder": [
+"profileId",
+"advertiserId"
+],
+"parameters": {
+"active": {
+"description": "Select only active or only inactive targetable remarketing lists.",
+"location": "query",
+"type": "boolean"
+},
+"advertiserId": {
+"description": "Required. Select only targetable remarketing lists targetable by these advertisers.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"name": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"remarketing list*2015\" will return objects with names like \"remarketing list June 2015\", \"remarketing list April 2015\", or simply \"remarketing list 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"remarketing list\" will match objects with name \"my remarketing list\", \"remarketing list 2015\", or simply \"remarketing list\".",
+"location": "query",
+"type": "string"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/targetableRemarketingLists",
+"response": {
+"$ref": "TargetableRemarketingListsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"targetingTemplates": {
+"methods": {
+"get": {
+"description": "Gets one targeting template by ID.",
+"flatPath": "userprofiles/{userprofilesId}/targetingTemplates/{targetingTemplatesId}",
+"httpMethod": "GET",
+"id": "dfareporting.targetingTemplates.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Targeting template ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/targetingTemplates/{+id}",
+"response": {
+"$ref": "TargetingTemplate"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new targeting template.",
+"flatPath": "userprofiles/{userprofilesId}/targetingTemplates",
+"httpMethod": "POST",
+"id": "dfareporting.targetingTemplates.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/targetingTemplates",
+"request": {
+"$ref": "TargetingTemplate"
+},
+"response": {
+"$ref": "TargetingTemplate"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of targeting templates, optionally filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/targetingTemplates",
+"httpMethod": "GET",
+"id": "dfareporting.targetingTemplates.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"advertiserId": {
+"description": "Select only targeting templates with this advertiser ID.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"ids": {
+"description": "Select only targeting templates with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"template*2015\" will return objects with names like \"template June 2015\", \"template April 2015\", or simply \"template 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"template\" will match objects with name \"my template\", \"template 2015\", or simply \"template\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/targetingTemplates",
+"response": {
+"$ref": "TargetingTemplatesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing targeting template. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/targetingTemplates",
+"httpMethod": "PATCH",
+"id": "dfareporting.targetingTemplates.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. RemarketingList ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/targetingTemplates",
+"request": {
+"$ref": "TargetingTemplate"
+},
+"response": {
+"$ref": "TargetingTemplate"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing targeting template.",
+"flatPath": "userprofiles/{userprofilesId}/targetingTemplates",
+"httpMethod": "PUT",
+"id": "dfareporting.targetingTemplates.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/targetingTemplates",
+"request": {
+"$ref": "TargetingTemplate"
+},
+"response": {
+"$ref": "TargetingTemplate"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"tvCampaignDetails": {
+"methods": {
+"get": {
+"description": "Gets one TvCampaignDetail by ID.",
+"flatPath": "userprofiles/{userprofilesId}/tvCampaignDetails/{tvCampaignDetailsId}",
+"httpMethod": "GET",
+"id": "dfareporting.tvCampaignDetails.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"accountId": {
+"description": "Required. Account ID associated with this request.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"id": {
+"description": "Required. TV Campaign ID.",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "Required. User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/tvCampaignDetails/{+id}",
+"response": {
+"$ref": "TvCampaignDetail"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"tvCampaignSummaries": {
+"methods": {
+"list": {
+"description": "Retrieves a list of TV campaign summaries.",
+"flatPath": "userprofiles/{userprofilesId}/tvCampaignSummaries",
+"httpMethod": "GET",
+"id": "dfareporting.tvCampaignSummaries.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"accountId": {
+"description": "Required. Account ID associated with this request.",
+"format": "int64",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Search string to filter the list of TV campaign summaries. Matches any substring. Required field.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "Required. User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/tvCampaignSummaries",
+"response": {
+"$ref": "TvCampaignSummariesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"userProfiles": {
+"methods": {
+"get": {
+"description": "Gets one user profile by ID.",
+"flatPath": "userprofiles/{profileId}",
+"httpMethod": "GET",
+"id": "dfareporting.userProfiles.get",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "The user profile ID.",
+"format": "int64",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{profileId}",
+"response": {
+"$ref": "UserProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/ddmconversions",
+"https://www.googleapis.com/auth/dfareporting",
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves list of user profiles for a user.",
+"flatPath": "userprofiles",
+"httpMethod": "GET",
+"id": "dfareporting.userProfiles.list",
+"parameterOrder": [],
+"parameters": {},
+"path": "userprofiles",
+"response": {
+"$ref": "UserProfileList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/ddmconversions",
+"https://www.googleapis.com/auth/dfareporting",
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"userRolePermissionGroups": {
+"methods": {
+"get": {
+"description": "Gets one user role permission group by ID.",
+"flatPath": "userprofiles/{userprofilesId}/userRolePermissionGroups/{userRolePermissionGroupsId}",
+"httpMethod": "GET",
+"id": "dfareporting.userRolePermissionGroups.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "User role permission group ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRolePermissionGroups/{+id}",
+"response": {
+"$ref": "UserRolePermissionGroup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Gets a list of all supported user role permission groups.",
+"flatPath": "userprofiles/{userprofilesId}/userRolePermissionGroups",
+"httpMethod": "GET",
+"id": "dfareporting.userRolePermissionGroups.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRolePermissionGroups",
+"response": {
+"$ref": "UserRolePermissionGroupsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"userRolePermissions": {
+"methods": {
+"get": {
+"description": "Gets one user role permission by ID.",
+"flatPath": "userprofiles/{userprofilesId}/userRolePermissions/{userRolePermissionsId}",
+"httpMethod": "GET",
+"id": "dfareporting.userRolePermissions.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "User role permission ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRolePermissions/{+id}",
+"response": {
+"$ref": "UserRolePermission"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Gets a list of user role permissions, possibly filtered.",
+"flatPath": "userprofiles/{userprofilesId}/userRolePermissions",
+"httpMethod": "GET",
+"id": "dfareporting.userRolePermissions.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"ids": {
+"description": "Select only user role permissions with these IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRolePermissions",
+"response": {
+"$ref": "UserRolePermissionsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"userRoles": {
+"methods": {
+"delete": {
+"description": "Deletes an existing user role.",
+"flatPath": "userprofiles/{userprofilesId}/userRoles/{userRolesId}",
+"httpMethod": "DELETE",
+"id": "dfareporting.userRoles.delete",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "User role ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRoles/{+id}",
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"get": {
+"description": "Gets one user role by ID.",
+"flatPath": "userprofiles/{userprofilesId}/userRoles/{userRolesId}",
+"httpMethod": "GET",
+"id": "dfareporting.userRoles.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "User role ID.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRoles/{+id}",
+"response": {
+"$ref": "UserRole"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"insert": {
+"description": "Inserts a new user role.",
+"flatPath": "userprofiles/{userprofilesId}/userRoles",
+"httpMethod": "POST",
+"id": "dfareporting.userRoles.insert",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRoles",
+"request": {
+"$ref": "UserRole"
+},
+"response": {
+"$ref": "UserRole"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Retrieves a list of user roles, possibly filtered. This method supports paging.",
+"flatPath": "userprofiles/{userprofilesId}/userRoles",
+"httpMethod": "GET",
+"id": "dfareporting.userRoles.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"accountUserRoleOnly": {
+"description": "Select only account level user roles not associated with any specific subaccount.",
+"location": "query",
+"type": "boolean"
+},
+"ids": {
+"description": "Select only user roles with the specified IDs.",
+"format": "int64",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"maxResults": {
+"default": "1000",
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Value of the nextPageToken from the previous result page.",
+"location": "query",
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+},
+"searchString": {
+"description": "Allows searching for objects by name or ID. Wildcards (*) are allowed. For example, \"userrole*2015\" will return objects with names like \"userrole June 2015\", \"userrole April 2015\", or simply \"userrole 2015\". Most of the searches also add wildcards implicitly at the start and the end of the search string. For example, a search string of \"userrole\" will match objects with name \"my userrole\", \"userrole 2015\", or simply \"userrole\".",
+"location": "query",
+"type": "string"
+},
+"sortField": {
+"default": "ID",
+"description": "Field by which to sort the list.",
+"enum": [
+"ID",
+"NAME"
+],
+"enumDescriptions": [
+"",
+""
+],
+"location": "query",
+"type": "string"
+},
+"sortOrder": {
+"default": "ASCENDING",
+"description": "Order of sorted results.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"Ascending order.",
+"Descending order."
+],
+"location": "query",
+"type": "string"
+},
+"subaccountId": {
+"description": "Select only user roles that belong to this subaccount.",
+"format": "int64",
+"location": "query",
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRoles",
+"response": {
+"$ref": "UserRolesListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"patch": {
+"description": "Updates an existing user role. This method supports patch semantics.",
+"flatPath": "userprofiles/{userprofilesId}/userRoles",
+"httpMethod": "PATCH",
+"id": "dfareporting.userRoles.patch",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Required. UserRole ID.",
+"format": "int64",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRoles",
+"request": {
+"$ref": "UserRole"
+},
+"response": {
+"$ref": "UserRole"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"update": {
+"description": "Updates an existing user role.",
+"flatPath": "userprofiles/{userprofilesId}/userRoles",
+"httpMethod": "PUT",
+"id": "dfareporting.userRoles.update",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/userRoles",
+"request": {
+"$ref": "UserRole"
+},
+"response": {
+"$ref": "UserRole"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+},
+"videoFormats": {
+"methods": {
+"get": {
+"description": "Gets one video format by ID.",
+"flatPath": "userprofiles/{userprofilesId}/videoFormats/{videoFormatsId}",
+"httpMethod": "GET",
+"id": "dfareporting.videoFormats.get",
+"parameterOrder": [
+"profileId",
+"id"
+],
+"parameters": {
+"id": {
+"description": "Video format ID.",
+"format": "int32",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "integer"
+},
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/videoFormats/{+id}",
+"response": {
+"$ref": "VideoFormat"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+},
+"list": {
+"description": "Lists available video formats.",
+"flatPath": "userprofiles/{userprofilesId}/videoFormats",
+"httpMethod": "GET",
+"id": "dfareporting.videoFormats.list",
+"parameterOrder": [
+"profileId"
+],
+"parameters": {
+"profileId": {
+"description": "User profile ID associated with this request.",
+"format": "int64",
+"location": "path",
+"pattern": "^[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "userprofiles/{+profileId}/videoFormats",
+"response": {
+"$ref": "VideoFormatsListResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/dfatrafficking"
+]
+}
+}
+}
+},
+"revision": "20240926",
+"rootUrl": "https://dfareporting.googleapis.com/",
+"schemas": {
+"Account": {
+"description": "Contains properties of a Campaign Manager account.",
+"id": "Account",
+"properties": {
+"accountPermissionIds": {
+"description": "Account permissions assigned to this account.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"accountProfile": {
+"description": "Profile for this account. This is a read-only field that can be left blank.",
+"enum": [
+"ACCOUNT_PROFILE_BASIC",
+"ACCOUNT_PROFILE_STANDARD"
+],
+"enumDescriptions": [
+"Basic profile has fewer features and lower CPM.",
+"Standard profile as a higher CPM and all the features."
+],
+"type": "string"
+},
+"active": {
+"description": "Whether this account is active.",
+"type": "boolean"
+},
+"activeAdsLimitTier": {
+"description": "Maximum number of active ads allowed for this account.",
+"enum": [
+"ACTIVE_ADS_TIER_40K",
+"ACTIVE_ADS_TIER_75K",
+"ACTIVE_ADS_TIER_100K",
+"ACTIVE_ADS_TIER_200K",
+"ACTIVE_ADS_TIER_300K",
+"ACTIVE_ADS_TIER_500K",
+"ACTIVE_ADS_TIER_750K",
+"ACTIVE_ADS_TIER_1M"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"activeViewOptOut": {
+"description": "Whether to serve creatives with Active View tags. If disabled, viewability data will not be available for any impressions.",
+"type": "boolean"
+},
+"availablePermissionIds": {
+"description": "User role permissions available to the user roles of this account.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"countryId": {
+"description": "ID of the country associated with this account.",
+"format": "int64",
+"type": "string"
+},
+"currencyId": {
+"description": "ID of currency associated with this account. This is a required field. Acceptable values are: - \"1\" for USD - \"2\" for GBP - \"3\" for ESP - \"4\" for SEK - \"5\" for CAD - \"6\" for JPY - \"7\" for DEM - \"8\" for AUD - \"9\" for FRF - \"10\" for ITL - \"11\" for DKK - \"12\" for NOK - \"13\" for FIM - \"14\" for ZAR - \"15\" for IEP - \"16\" for NLG - \"17\" for EUR - \"18\" for KRW - \"19\" for TWD - \"20\" for SGD - \"21\" for CNY - \"22\" for HKD - \"23\" for NZD - \"24\" for MYR - \"25\" for BRL - \"26\" for PTE - \"28\" for CLP - \"29\" for TRY - \"30\" for ARS - \"31\" for PEN - \"32\" for ILS - \"33\" for CHF - \"34\" for VEF - \"35\" for COP - \"36\" for GTQ - \"37\" for PLN - \"39\" for INR - \"40\" for THB - \"41\" for IDR - \"42\" for CZK - \"43\" for RON - \"44\" for HUF - \"45\" for RUB - \"46\" for AED - \"47\" for BGN - \"48\" for HRK - \"49\" for MXN - \"50\" for NGN - \"51\" for EGP ",
+"format": "int64",
+"type": "string"
+},
+"defaultCreativeSizeId": {
+"description": "Default placement dimensions for this account.",
+"format": "int64",
+"type": "string"
+},
+"description": {
+"description": "Description of this account.",
+"type": "string"
+},
+"id": {
+"description": "ID of this account. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#account\".",
+"type": "string"
+},
+"locale": {
+"description": "Locale of this account. Acceptable values are: - \"cs\" (Czech) - \"de\" (German) - \"en\" (English) - \"en-GB\" (English United Kingdom) - \"es\" (Spanish) - \"fr\" (French) - \"it\" (Italian) - \"ja\" (Japanese) - \"ko\" (Korean) - \"pl\" (Polish) - \"pt-BR\" (Portuguese Brazil) - \"ru\" (Russian) - \"sv\" (Swedish) - \"tr\" (Turkish) - \"zh-CN\" (Chinese Simplified) - \"zh-TW\" (Chinese Traditional) ",
+"type": "string"
+},
+"maximumImageSize": {
+"description": "Maximum image size allowed for this account, in kilobytes. Value must be greater than or equal to 1.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of this account. This is a required field, and must be less than 128 characters long and be globally unique.",
+"type": "string"
+},
+"nielsenOcrEnabled": {
+"description": "Whether campaigns created in this account will be enabled for Nielsen OCR reach ratings by default.",
+"type": "boolean"
+},
+"reportsConfiguration": {
+"$ref": "ReportsConfiguration",
+"description": "Reporting configuration of this account."
+},
+"shareReportsWithTwitter": {
+"description": "Share Path to Conversion reports with Twitter.",
+"type": "boolean"
+},
+"teaserSizeLimit": {
+"description": "File size limit in kilobytes of Rich Media teaser creatives. Acceptable values are 1 to 10240, inclusive.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountActiveAdSummary": {
+"description": "Gets a summary of active ads in an account.",
+"id": "AccountActiveAdSummary",
+"properties": {
+"accountId": {
+"description": "ID of the account.",
+"format": "int64",
+"type": "string"
+},
+"activeAds": {
+"description": "Ads that have been activated for the account",
+"format": "int64",
+"type": "string"
+},
+"activeAdsLimitTier": {
+"description": "Maximum number of active ads allowed for the account.",
+"enum": [
+"ACTIVE_ADS_TIER_40K",
+"ACTIVE_ADS_TIER_75K",
+"ACTIVE_ADS_TIER_100K",
+"ACTIVE_ADS_TIER_200K",
+"ACTIVE_ADS_TIER_300K",
+"ACTIVE_ADS_TIER_500K",
+"ACTIVE_ADS_TIER_750K",
+"ACTIVE_ADS_TIER_1M"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"availableAds": {
+"description": "Ads that can be activated for the account.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountActiveAdSummary\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountPermission": {
+"description": "AccountPermissions contains information about a particular account permission. Some features of Campaign Manager require an account permission to be present in the account.",
+"id": "AccountPermission",
+"properties": {
+"accountProfiles": {
+"description": "Account profiles associated with this account permission. Possible values are: - \"ACCOUNT_PROFILE_BASIC\" - \"ACCOUNT_PROFILE_STANDARD\" ",
+"items": {
+"enum": [
+"ACCOUNT_PROFILE_BASIC",
+"ACCOUNT_PROFILE_STANDARD"
+],
+"enumDescriptions": [
+"Basic profile has fewer features and lower CPM.",
+"Standard profile as a higher CPM and all the features."
+],
+"type": "string"
+},
+"type": "array"
+},
+"id": {
+"description": "ID of this account permission.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountPermission\".",
+"type": "string"
+},
+"level": {
+"description": "Administrative level required to enable this account permission.",
+"enum": [
+"USER",
+"ADMINISTRATOR"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"name": {
+"description": "Name of this account permission.",
+"type": "string"
+},
+"permissionGroupId": {
+"description": "Permission group of this account permission.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountPermissionGroup": {
+"description": "AccountPermissionGroups contains a mapping of permission group IDs to names. A permission group is a grouping of account permissions.",
+"id": "AccountPermissionGroup",
+"properties": {
+"id": {
+"description": "ID of this account permission group.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountPermissionGroup\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this account permission group.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountPermissionGroupsListResponse": {
+"description": "Account Permission Group List Response",
+"id": "AccountPermissionGroupsListResponse",
+"properties": {
+"accountPermissionGroups": {
+"description": "Account permission group collection.",
+"items": {
+"$ref": "AccountPermissionGroup"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountPermissionGroupGroupsListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountPermissionsListResponse": {
+"description": "Account Permission List Response",
+"id": "AccountPermissionsListResponse",
+"properties": {
+"accountPermissions": {
+"description": "Account permission collection.",
+"items": {
+"$ref": "AccountPermission"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountPermissionsListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountUserProfile": {
+"description": "AccountUserProfiles contains properties of a Campaign Manager user profile. This resource is specifically for managing user profiles, whereas UserProfiles is for accessing the API.",
+"id": "AccountUserProfile",
+"properties": {
+"accountId": {
+"description": "Account ID of the user profile. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"active": {
+"description": "Whether this user profile is active. This defaults to false, and must be set true on insert for the user profile to be usable.",
+"type": "boolean"
+},
+"advertiserFilter": {
+"$ref": "ObjectFilter",
+"description": "Filter that describes which advertisers are visible to the user profile."
+},
+"campaignFilter": {
+"$ref": "ObjectFilter",
+"description": "Filter that describes which campaigns are visible to the user profile."
+},
+"comments": {
+"description": "Comments for this user profile.",
+"type": "string"
+},
+"email": {
+"description": "Email of the user profile. The email address must be linked to a Google Account. This field is required on insertion and is read-only after insertion.",
+"type": "string"
+},
+"id": {
+"description": "ID of the user profile. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountUserProfile\".",
+"type": "string"
+},
+"locale": {
+"description": "Locale of the user profile. This is a required field. Acceptable values are: - \"cs\" (Czech) - \"de\" (German) - \"en\" (English) - \"en-GB\" (English United Kingdom) - \"es\" (Spanish) - \"fr\" (French) - \"it\" (Italian) - \"ja\" (Japanese) - \"ko\" (Korean) - \"pl\" (Polish) - \"pt-BR\" (Portuguese Brazil) - \"ru\" (Russian) - \"sv\" (Swedish) - \"tr\" (Turkish) - \"zh-CN\" (Chinese Simplified) - \"zh-TW\" (Chinese Traditional) ",
+"type": "string"
+},
+"name": {
+"description": "Name of the user profile. This is a required field. Must be less than 64 characters long, must be globally unique, and cannot contain whitespace or any of the following characters: \"&;<>\"#%,\".",
+"type": "string"
+},
+"siteFilter": {
+"$ref": "ObjectFilter",
+"description": "Filter that describes which sites are visible to the user profile."
+},
+"subaccountId": {
+"description": "Subaccount ID of the user profile. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"traffickerType": {
+"description": "Trafficker type of this user profile. This is a read-only field.",
+"enum": [
+"INTERNAL_NON_TRAFFICKER",
+"INTERNAL_TRAFFICKER",
+"EXTERNAL_TRAFFICKER"
+],
+"enumDescriptions": [
+"Internal profile, but is not a trafficker.",
+"Internal profile who is a trafficker.",
+"External profile who is a trafficker."
+],
+"type": "string"
+},
+"userAccessType": {
+"description": "User type of the user profile. This is a read-only field that can be left blank.",
+"enum": [
+"NORMAL_USER",
+"SUPER_USER",
+"INTERNAL_ADMINISTRATOR",
+"READ_ONLY_SUPER_USER"
+],
+"enumDescriptions": [
+"Normal user managed by the customer.",
+"Super user managed by internal support teams.",
+"Internal administrator having super user access to only a specific set of networks.",
+"A super-user without permission to mutate any data."
+],
+"type": "string"
+},
+"userRoleFilter": {
+"$ref": "ObjectFilter",
+"description": "Filter that describes which user roles are visible to the user profile."
+},
+"userRoleId": {
+"description": "User role ID of the user profile. This is a required field.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountUserProfilesListResponse": {
+"description": "Account User Profile List Response",
+"id": "AccountUserProfilesListResponse",
+"properties": {
+"accountUserProfiles": {
+"description": "Account user profile collection.",
+"items": {
+"$ref": "AccountUserProfile"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountUserProfilesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AccountsListResponse": {
+"description": "Account List Response",
+"id": "AccountsListResponse",
+"properties": {
+"accounts": {
+"description": "Account collection.",
+"items": {
+"$ref": "Account"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#accountsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Activities": {
+"description": "Represents an activity group.",
+"id": "Activities",
+"properties": {
+"filters": {
+"description": "List of activity filters. The dimension values need to be all either of type \"dfa:activity\" or \"dfa:activityGroup\".",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#activities.",
+"type": "string"
+},
+"metricNames": {
+"description": "List of names of floodlight activity metrics.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Ad": {
+"description": "Contains properties of a Campaign Manager ad.",
+"id": "Ad",
+"properties": {
+"accountId": {
+"description": "Account ID of this ad. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"active": {
+"description": "Whether this ad is active. When true, archived must be false.",
+"type": "boolean"
+},
+"advertiserId": {
+"description": "Advertiser ID of this ad. This is a required field on insertion.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"archived": {
+"description": "Whether this ad is archived. When true, active must be false.",
+"type": "boolean"
+},
+"audienceSegmentId": {
+"description": "Audience segment ID that is being targeted for this ad. Applicable when type is AD_SERVING_STANDARD_AD.",
+"format": "int64",
+"type": "string"
+},
+"campaignId": {
+"description": "Campaign ID of this ad. This is a required field on insertion.",
+"format": "int64",
+"type": "string"
+},
+"campaignIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the campaign. This is a read-only, auto-generated field."
+},
+"clickThroughUrl": {
+"$ref": "ClickThroughUrl",
+"description": "Click-through URL for this ad. This is a required field on insertion. Applicable when type is AD_SERVING_CLICK_TRACKER."
+},
+"clickThroughUrlSuffixProperties": {
+"$ref": "ClickThroughUrlSuffixProperties",
+"description": "Click-through URL suffix properties for this ad. Applies to the URL in the ad or (if overriding ad properties) the URL in the creative."
+},
+"comments": {
+"description": "Comments for this ad.",
+"type": "string"
+},
+"compatibility": {
+"description": "Compatibility of this ad. Applicable when type is AD_SERVING_DEFAULT_AD. DISPLAY and DISPLAY_INTERSTITIAL refer to either rendering on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are only used for existing default ads. New mobile placements must be assigned DISPLAY or DISPLAY_INTERSTITIAL and default ads created for those placements will be limited to those compatibility types. IN_STREAM_VIDEO refers to rendering in-stream video ads developed with the VAST standard.",
+"enum": [
+"DISPLAY",
+"DISPLAY_INTERSTITIAL",
+"APP",
+"APP_INTERSTITIAL",
+"IN_STREAM_VIDEO",
+"IN_STREAM_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"Deprecated enum value. No longer supported.",
+"Deprecated enum value. No longer supported.",
+"",
+""
+],
+"type": "string"
+},
+"createInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the creation of this ad. This is a read-only field."
+},
+"creativeGroupAssignments": {
+"description": "Creative group assignments for this ad. Applicable when type is AD_SERVING_CLICK_TRACKER. Only one assignment per creative group number is allowed for a maximum of two assignments.",
+"items": {
+"$ref": "CreativeGroupAssignment"
+},
+"type": "array"
+},
+"creativeRotation": {
+"$ref": "CreativeRotation",
+"description": "Creative rotation for this ad. Applicable when type is AD_SERVING_DEFAULT_AD, AD_SERVING_STANDARD_AD, or AD_SERVING_TRACKING. When type is AD_SERVING_DEFAULT_AD, this field should have exactly one creativeAssignment ."
+},
+"dayPartTargeting": {
+"$ref": "DayPartTargeting",
+"description": "Time and day targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD."
+},
+"defaultClickThroughEventTagProperties": {
+"$ref": "DefaultClickThroughEventTagProperties",
+"description": "Default click-through event tag properties for this ad."
+},
+"deliverySchedule": {
+"$ref": "DeliverySchedule",
+"description": "Delivery schedule information for this ad. Applicable when type is AD_SERVING_STANDARD_AD or AD_SERVING_TRACKING. This field along with subfields priority and impressionRatio are required on insertion when type is AD_SERVING_STANDARD_AD."
+},
+"dynamicClickTracker": {
+"description": "Whether this ad is a dynamic click tracker. Applicable when type is AD_SERVING_CLICK_TRACKER. This is a required field on insert, and is read-only after insert.",
+"type": "boolean"
+},
+"endTime": {
+"format": "date-time",
+"type": "string"
+},
+"eventTagOverrides": {
+"description": "Event tag overrides for this ad.",
+"items": {
+"$ref": "EventTagOverride"
+},
+"type": "array"
+},
+"geoTargeting": {
+"$ref": "GeoTargeting",
+"description": "Geographical targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD."
+},
+"id": {
+"description": "ID of this ad. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this ad. This is a read-only, auto-generated field."
+},
+"keyValueTargetingExpression": {
+"$ref": "KeyValueTargetingExpression",
+"description": "Key-value targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#ad\".",
+"type": "string"
+},
+"languageTargeting": {
+"$ref": "LanguageTargeting",
+"description": "Language targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD."
+},
+"lastModifiedInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the most recent modification of this ad. This is a read-only field."
+},
+"name": {
+"description": "Name of this ad. This is a required field and must be less than 256 characters long.",
+"type": "string"
+},
+"placementAssignments": {
+"description": "Placement assignments for this ad.",
+"items": {
+"$ref": "PlacementAssignment"
+},
+"type": "array"
+},
+"remarketingListExpression": {
+"$ref": "ListTargetingExpression",
+"description": "Remarketing list targeting expression for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD."
+},
+"size": {
+"$ref": "Size",
+"description": "Size of this ad. Applicable when type is AD_SERVING_DEFAULT_AD."
+},
+"sslCompliant": {
+"description": "Whether this ad is ssl compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.",
+"type": "boolean"
+},
+"sslRequired": {
+"description": "Whether this ad requires ssl. This is a read-only field that is auto-generated when the ad is inserted or updated.",
+"type": "boolean"
+},
+"startTime": {
+"format": "date-time",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this ad. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"targetingTemplateId": {
+"description": "Targeting template ID, used to apply preconfigured targeting information to this ad. This cannot be set while any of dayPartTargeting, geoTargeting, keyValueTargetingExpression, languageTargeting, remarketingListExpression, or technologyTargeting are set. Applicable when type is AD_SERVING_STANDARD_AD.",
+"format": "int64",
+"type": "string"
+},
+"technologyTargeting": {
+"$ref": "TechnologyTargeting",
+"description": "Technology platform targeting information for this ad. This field must be left blank if the ad is using a targeting template. Applicable when type is AD_SERVING_STANDARD_AD."
+},
+"type": {
+"description": "Type of ad. This is a required field on insertion. Note that default ads ( AD_SERVING_DEFAULT_AD) cannot be created directly (see Creative resource).",
+"enum": [
+"AD_SERVING_STANDARD_AD",
+"AD_SERVING_DEFAULT_AD",
+"AD_SERVING_CLICK_TRACKER",
+"AD_SERVING_TRACKING",
+"AD_SERVING_BRAND_SAFE_AD"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AdBlockingConfiguration": {
+"description": "Campaign ad blocking settings.",
+"id": "AdBlockingConfiguration",
+"properties": {
+"enabled": {
+"description": "Whether this campaign has enabled ad blocking. When true, ad blocking is enabled for placements in the campaign, but this may be overridden by site and placement settings. When false, ad blocking is disabled for all placements under the campaign, regardless of site and placement settings.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"AdSlot": {
+"description": "Ad Slot",
+"id": "AdSlot",
+"properties": {
+"comment": {
+"description": "Comment for this ad slot.",
+"type": "string"
+},
+"compatibility": {
+"description": "Ad slot compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop, mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard.",
+"enum": [
+"DISPLAY",
+"DISPLAY_INTERSTITIAL",
+"APP",
+"APP_INTERSTITIAL",
+"IN_STREAM_VIDEO",
+"IN_STREAM_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"Deprecated enum value. No longer supported.",
+"Deprecated enum value. No longer supported.",
+"",
+""
+],
+"type": "string"
+},
+"height": {
+"description": "Height of this ad slot.",
+"format": "int64",
+"type": "string"
+},
+"linkedPlacementId": {
+"description": "ID of the placement from an external platform that is linked to this ad slot.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of this ad slot.",
+"type": "string"
+},
+"paymentSourceType": {
+"description": "Payment source type of this ad slot.",
+"enum": [
+"PLANNING_PAYMENT_SOURCE_TYPE_AGENCY_PAID",
+"PLANNING_PAYMENT_SOURCE_TYPE_PUBLISHER_PAID"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"primary": {
+"description": "Primary ad slot of a roadblock inventory item.",
+"type": "boolean"
+},
+"width": {
+"description": "Width of this ad slot.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AdsListResponse": {
+"description": "Ad List Response",
+"id": "AdsListResponse",
+"properties": {
+"ads": {
+"description": "Ad collection.",
+"items": {
+"$ref": "Ad"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#adsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Advertiser": {
+"description": "Contains properties of a Campaign Manager advertiser.",
+"id": "Advertiser",
+"properties": {
+"accountId": {
+"description": "Account ID of this advertiser.This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"advertiserGroupId": {
+"description": "ID of the advertiser group this advertiser belongs to. You can group advertisers for reporting purposes, allowing you to see aggregated information for all advertisers in each group.",
+"format": "int64",
+"type": "string"
+},
+"clickThroughUrlSuffix": {
+"description": "Suffix added to click-through URL of ad creative associations under this advertiser. Must be less than 129 characters long.",
+"type": "string"
+},
+"defaultClickThroughEventTagId": {
+"description": "ID of the click-through event tag to apply by default to the landing pages of this advertiser's campaigns.",
+"format": "int64",
+"type": "string"
+},
+"defaultEmail": {
+"description": "Default email address used in sender field for tag emails.",
+"type": "string"
+},
+"floodlightConfigurationId": {
+"description": "Floodlight configuration ID of this advertiser. The floodlight configuration ID will be created automatically, so on insert this field should be left blank. This field can be set to another advertiser's floodlight configuration ID in order to share that advertiser's floodlight configuration with this advertiser, so long as: - This advertiser's original floodlight configuration is not already associated with floodlight activities or floodlight activity groups. - This advertiser's original floodlight configuration is not already shared with another advertiser. ",
+"format": "int64",
+"type": "string"
+},
+"floodlightConfigurationIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field."
+},
+"id": {
+"description": "ID of this advertiser. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this advertiser. This is a read-only, auto-generated field."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertiser\".",
+"type": "string"
+},
+"measurementPartnerLink": {
+"$ref": "MeasurementPartnerAdvertiserLink",
+"description": "Measurement partner advertiser link for tag wrapping."
+},
+"name": {
+"description": "Name of this advertiser. This is a required field and must be less than 256 characters long and unique among advertisers of the same account.",
+"type": "string"
+},
+"originalFloodlightConfigurationId": {
+"description": "Original floodlight configuration before any sharing occurred. Set the floodlightConfigurationId of this advertiser to originalFloodlightConfigurationId to unshare the advertiser's current floodlight configuration. You cannot unshare an advertiser's floodlight configuration if the shared configuration has activities associated with any campaign or placement.",
+"format": "int64",
+"type": "string"
+},
+"status": {
+"description": "Status of this advertiser.",
+"enum": [
+"APPROVED",
+"ON_HOLD"
+],
+"enumDescriptions": [
+"Approved (ads can deliver)",
+"On-hold (all ads are stopped)"
+],
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this advertiser.This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"suspended": {
+"description": "Suspension status of this advertiser.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"AdvertiserGroup": {
+"description": "Groups advertisers together so that reports can be generated for the entire group at once.",
+"id": "AdvertiserGroup",
+"properties": {
+"accountId": {
+"description": "Account ID of this advertiser group. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"id": {
+"description": "ID of this advertiser group. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertiserGroup\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this advertiser group. This is a required field and must be less than 256 characters long and unique among advertiser groups of the same account.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AdvertiserGroupsListResponse": {
+"description": "Advertiser Group List Response",
+"id": "AdvertiserGroupsListResponse",
+"properties": {
+"advertiserGroups": {
+"description": "Advertiser group collection.",
+"items": {
+"$ref": "AdvertiserGroup"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertiserGroupsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AdvertiserInvoicesListResponse": {
+"description": "Invoice List Response",
+"id": "AdvertiserInvoicesListResponse",
+"properties": {
+"invoices": {
+"description": "Invoice collection",
+"items": {
+"$ref": "Invoice"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertiserInvoicesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AdvertiserLandingPagesListResponse": {
+"description": "Landing Page List Response",
+"id": "AdvertiserLandingPagesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertiserLandingPagesListResponse\".",
+"type": "string"
+},
+"landingPages": {
+"description": "Landing page collection",
+"items": {
+"$ref": "LandingPage"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AdvertisersListResponse": {
+"description": "Advertiser List Response",
+"id": "AdvertisersListResponse",
+"properties": {
+"advertisers": {
+"description": "Advertiser collection.",
+"items": {
+"$ref": "Advertiser"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#advertisersListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AudienceSegment": {
+"description": "Audience Segment.",
+"id": "AudienceSegment",
+"properties": {
+"allocation": {
+"description": "Weight allocated to this segment. The weight assigned will be understood in proportion to the weights assigned to other segments in the same segment group. Acceptable values are 1 to 1000, inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"id": {
+"description": "ID of this audience segment. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of this audience segment. This is a required field and must be less than 65 characters long.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AudienceSegmentGroup": {
+"description": "Audience Segment Group.",
+"id": "AudienceSegmentGroup",
+"properties": {
+"audienceSegments": {
+"description": "Audience segments assigned to this group. The number of segments must be between 2 and 100.",
+"items": {
+"$ref": "AudienceSegment"
+},
+"type": "array"
+},
+"id": {
+"description": "ID of this audience segment group. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of this audience segment group. This is a required field and must be less than 65 characters long.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BillingAssignment": {
+"description": "List account, subaccount, advertiser, and campaign associated with a given Billing Profile.",
+"id": "BillingAssignment",
+"properties": {
+"accountId": {
+"description": "ID of the account associated with the billing assignment.This is a read-only, auto-generated field.",
+"type": "string"
+},
+"advertiserId": {
+"description": "ID of the advertiser associated with the billing assignment.Wildcard (*) means this assignment is not limited to a single advertiser",
+"type": "string"
+},
+"campaignId": {
+"description": "ID of the campaign associated with the billing assignment. Wildcard (*) means this assignment is not limited to a single campaign",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#billingAssignment\".",
+"type": "string"
+},
+"subaccountId": {
+"description": "ID of the subaccount associated with the billing assignment.Wildcard (*) means this assignment is not limited to a single subaccountThis is a read-only, auto-generated field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BillingAssignmentsListResponse": {
+"description": "Billing assignment List Response",
+"id": "BillingAssignmentsListResponse",
+"properties": {
+"billingAssignments": {
+"description": "Billing assignments collection.",
+"items": {
+"$ref": "BillingAssignment"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#billingAssignmentsListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BillingProfile": {
+"description": "Contains properties of a Campaign Manager Billing Profile.",
+"id": "BillingProfile",
+"properties": {
+"consolidatedInvoice": {
+"description": "Consolidated invoice option for this billing profile. Used to get a single, consolidated invoice across the chosen invoice level.",
+"type": "boolean"
+},
+"countryCode": {
+"description": "Country code of this billing profile.This is a read-only field.",
+"type": "string"
+},
+"currencyCode": {
+"description": "Billing currency code in ISO 4217 format.This is a read-only field.",
+"type": "string"
+},
+"id": {
+"description": "ID of this billing profile. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"invoiceLevel": {
+"description": "Invoice level for this billing profile. Used to group fees into separate invoices by account, advertiser, or campaign.",
+"enum": [
+"ACCOUNT_LEVEL",
+"ADVERTISER_LEVEL",
+"CAMPAIGN_LEVEL"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"isDefault": {
+"description": "True if the billing profile is the account default profile. This is a read-only field.",
+"type": "boolean"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#billingProfile\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this billing profile. This is a required field and must be less than 256 characters long and must be unique among billing profile in the same account.",
+"type": "string"
+},
+"paymentsAccountId": {
+"description": "The ID of the payment account the billing profile belongs to. This is a read-only field.",
+"type": "string"
+},
+"paymentsCustomerId": {
+"description": "The ID of the payment customer the billing profile belongs to. This is a read-only field.",
+"type": "string"
+},
+"purchaseOrder": {
+"description": "Purchase order (PO) for this billing profile. This PO number is used in the invoices for all of the advertisers in this billing profile.",
+"type": "string"
+},
+"secondaryPaymentsCustomerId": {
+"description": "The ID of the secondary payment customer the billing profile belongs to. This is a read-only field.",
+"type": "string"
+},
+"status": {
+"description": "Status of this billing profile.This is a read-only field.",
+"enum": [
+"UNDER_REVIEW",
+"ACTIVE",
+"ARCHIVED"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"BillingProfilesListResponse": {
+"description": "Billing profile List Response",
+"id": "BillingProfilesListResponse",
+"properties": {
+"billingProfiles": {
+"description": "Billing profiles collection.",
+"items": {
+"$ref": "BillingProfile"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#billingProfilesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BillingRate": {
+"id": "BillingRate",
+"properties": {
+"currencyCode": {
+"description": "Billing currency code in ISO 4217 format.",
+"type": "string"
+},
+"endDate": {
+"description": "End date of this billing rate.",
+"type": "string"
+},
+"id": {
+"description": "ID of this billing rate.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of this billing rate. This must be less than 256 characters long.",
+"type": "string"
+},
+"rateInMicros": {
+"description": "Flat rate in micros of this billing rate. This cannot co-exist with tiered rate.",
+"format": "int64",
+"type": "string"
+},
+"startDate": {
+"description": "Start date of this billing rate.",
+"type": "string"
+},
+"tieredRates": {
+"description": "Tiered rate of this billing rate. This cannot co-exist with flat rate.",
+"items": {
+"$ref": "BillingRateTieredRate"
+},
+"type": "array"
+},
+"type": {
+"description": "Type of this billing rate.",
+"enum": [
+"AD_SERVING",
+"CLICKS",
+"MINIMUM_SERVICE",
+"PATH_TO_CONVERSION",
+"RICH_MEDIA_INPAGE",
+"RICH_MEDIA_EXPANDING",
+"RICH_MEDIA_FLOATING",
+"RICH_MEDIA_VIDEO",
+"RICH_MEDIA_TEASER",
+"RICH_MEDIA_VPAID",
+"INSTREAM_VIDEO",
+"PIXEL",
+"TRACKING",
+"TRAFFICKING_FEATURE",
+"CUSTOM_REPORTS",
+"EXPOSURE_TO_CONVERSION",
+"DATA_TRANSFER",
+"DATA_TRANSFER_SETUP",
+"STARTUP",
+"STATEMENT_OF_WORK",
+"PROVIDED_LIST",
+"PROVIDED_LIST_SETUP",
+"ENHANCED_FORMATS",
+"TRACKING_AD_IMPRESSIONS",
+"TRACKING_AD_CLICKS",
+"NIELSEN_DIGITAL_AD_RATINGS_FEE",
+"INSTREAM_VIDEO_REDIRECT",
+"INSTREAM_VIDEO_VPAID",
+"DISPLAY_AD_SERVING",
+"VIDEO_AD_SERVING",
+"AUDIO_AD_SERVING",
+"ADVANCED_DISPLAY_AD_SERVING"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"unitOfMeasure": {
+"description": "Unit of measure for this billing rate.",
+"enum": [
+"CPM",
+"CPC",
+"EA",
+"P2C"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"BillingRateTieredRate": {
+"id": "BillingRateTieredRate",
+"properties": {
+"highValue": {
+"description": "The maximum for this tier range.",
+"format": "int64",
+"type": "string"
+},
+"lowValue": {
+"description": "The minimum for this tier range.",
+"format": "int64",
+"type": "string"
+},
+"rateInMicros": {
+"description": "Rate in micros for this tier.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BillingRatesListResponse": {
+"description": "Billing Rate List Response",
+"id": "BillingRatesListResponse",
+"properties": {
+"billingRates": {
+"description": "Billing rates collection.",
+"items": {
+"$ref": "BillingRate"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#billingRatesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Browser": {
+"description": "Contains information about a browser that can be targeted by ads.",
+"id": "Browser",
+"properties": {
+"browserVersionId": {
+"description": "ID referring to this grouping of browser and version numbers. This is the ID used for targeting.",
+"format": "int64",
+"type": "string"
+},
+"dartId": {
+"description": "DART ID of this browser. This is the ID used when generating reports.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#browser\".",
+"type": "string"
+},
+"majorVersion": {
+"description": "Major version number (leftmost number) of this browser. For example, for Chrome 5.0.376.86 beta, this field should be set to 5. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.",
+"type": "string"
+},
+"minorVersion": {
+"description": "Minor version number (number after first dot on left) of this browser. For example, for Chrome 5.0.375.86 beta, this field should be set to 0. An asterisk (*) may be used to target any version number, and a question mark (?) may be used to target cases where the version number cannot be identified. For example, Chrome *.* targets any version of Chrome: 1.2, 2.5, 3.5, and so on. Chrome 3.* targets Chrome 3.1, 3.5, but not 4.0. Firefox ?.? targets cases where the ad server knows the browser is Firefox but can't tell which version it is.",
+"type": "string"
+},
+"name": {
+"description": "Name of this browser.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BrowsersListResponse": {
+"description": "Browser List Response",
+"id": "BrowsersListResponse",
+"properties": {
+"browsers": {
+"description": "Browser collection.",
+"items": {
+"$ref": "Browser"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#browsersListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Campaign": {
+"description": "Contains properties of a Campaign Manager campaign.",
+"id": "Campaign",
+"properties": {
+"accountId": {
+"description": "Account ID of this campaign. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"adBlockingConfiguration": {
+"$ref": "AdBlockingConfiguration",
+"description": "Ad blocking settings for this campaign."
+},
+"additionalCreativeOptimizationConfigurations": {
+"description": "Additional creative optimization configurations for the campaign.",
+"items": {
+"$ref": "CreativeOptimizationConfiguration"
+},
+"type": "array"
+},
+"advertiserGroupId": {
+"description": "Advertiser group ID of the associated advertiser.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this campaign. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the advertiser ID of this campaign. This is a read-only, auto-generated field."
+},
+"archived": {
+"description": "Whether this campaign has been archived.",
+"type": "boolean"
+},
+"audienceSegmentGroups": {
+"description": "Audience segment groups assigned to this campaign. Cannot have more than 300 segment groups.",
+"items": {
+"$ref": "AudienceSegmentGroup"
+},
+"type": "array"
+},
+"billingInvoiceCode": {
+"description": "Billing invoice code included in the Campaign Manager client billing invoices associated with the campaign.",
+"type": "string"
+},
+"clickThroughUrlSuffixProperties": {
+"$ref": "ClickThroughUrlSuffixProperties",
+"description": "Click-through URL suffix override properties for this campaign."
+},
+"comment": {
+"description": "Arbitrary comments about this campaign. Must be less than 256 characters long.",
+"type": "string"
+},
+"createInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the creation of this campaign. This is a read-only field."
+},
+"creativeGroupIds": {
+"description": "List of creative group IDs that are assigned to the campaign.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"creativeOptimizationConfiguration": {
+"$ref": "CreativeOptimizationConfiguration",
+"description": "Creative optimization configuration for the campaign."
+},
+"defaultClickThroughEventTagProperties": {
+"$ref": "DefaultClickThroughEventTagProperties",
+"description": "Click-through event tag ID override properties for this campaign."
+},
+"defaultLandingPageId": {
+"description": "The default landing page ID for this campaign.",
+"format": "int64",
+"type": "string"
+},
+"endDate": {
+"format": "date",
+"type": "string"
+},
+"eventTagOverrides": {
+"description": "Overrides that can be used to activate or deactivate advertiser event tags.",
+"items": {
+"$ref": "EventTagOverride"
+},
+"type": "array"
+},
+"externalId": {
+"description": "External ID for this campaign.",
+"type": "string"
+},
+"id": {
+"description": "ID of this campaign. This is a read-only auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this campaign. This is a read-only, auto-generated field."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#campaign\".",
+"type": "string"
+},
+"lastModifiedInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the most recent modification of this campaign. This is a read-only field."
+},
+"measurementPartnerLink": {
+"$ref": "MeasurementPartnerCampaignLink",
+"description": "Measurement partner campaign link for tag wrapping."
+},
+"name": {
+"description": "Name of this campaign. This is a required field and must be less than 512 characters long and unique among campaigns of the same advertiser.",
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this campaign. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CampaignCreativeAssociation": {
+"description": "Identifies a creative which has been associated with a given campaign.",
+"id": "CampaignCreativeAssociation",
+"properties": {
+"creativeId": {
+"description": "ID of the creative associated with the campaign. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#campaignCreativeAssociation\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CampaignCreativeAssociationsListResponse": {
+"description": "Campaign Creative Association List Response",
+"id": "CampaignCreativeAssociationsListResponse",
+"properties": {
+"campaignCreativeAssociations": {
+"description": "Campaign creative association collection",
+"items": {
+"$ref": "CampaignCreativeAssociation"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#campaignCreativeAssociationsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CampaignSummary": {
+"description": "Represents a summarized campaign information associated with this invoice.",
+"id": "CampaignSummary",
+"properties": {
+"billingInvoiceCode": {
+"description": "Campaign billing invoice code.",
+"type": "string"
+},
+"campaignId": {
+"description": "Campaign ID.",
+"format": "int64",
+"type": "string"
+},
+"preTaxAmountMicros": {
+"description": "The pre-tax amount for this campaign, in micros of the invoice's currency.",
+"format": "int64",
+"type": "string"
+},
+"taxAmountMicros": {
+"description": "The tax amount for this campaign, in micros of the invoice's currency.",
+"format": "int64",
+"type": "string"
+},
+"totalAmountMicros": {
+"description": "The total amount of charges for this campaign, in micros of the invoice's currency.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CampaignsListResponse": {
+"description": "Campaign List Response",
+"id": "CampaignsListResponse",
+"properties": {
+"campaigns": {
+"description": "Campaign collection.",
+"items": {
+"$ref": "Campaign"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#campaignsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CartData": {
+"description": "Contains additional information about cart data. This field may only be used when calling batchinsert; it is not supported by batchupdate.",
+"id": "CartData",
+"properties": {
+"items": {
+"description": "Data of the items purchased.",
+"items": {
+"$ref": "CartDataItem"
+},
+"type": "array"
+},
+"merchantFeedLabel": {
+"description": "The feed labels associated with the feed where your items are uploaded. For more information, please refer to \u200b\u200b https://support.google.com/merchants/answer/12453549. This is a required field.",
+"type": "string"
+},
+"merchantFeedLanguage": {
+"description": "The language associated with the feed where your items are uploaded. Use ISO 639-1 language codes. This field is needed only when item IDs are not unique across multiple Merchant Center feeds.",
+"type": "string"
+},
+"merchantId": {
+"description": "The Merchant Center ID where the items are uploaded. This is a required field.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CartDataItem": {
+"description": "Contains data of the items purchased.",
+"id": "CartDataItem",
+"properties": {
+"itemId": {
+"description": "The shopping id of the item. Must be equal to the Merchant Center product identifier. This is a required field.",
+"type": "string"
+},
+"quantity": {
+"description": "Number of items sold. This is a required field.",
+"format": "int32",
+"type": "integer"
+},
+"unitPrice": {
+"description": "Unit price excluding tax, shipping, and any transaction level discounts. Interpreted in CM360 Floodlight config parent advertiser's currency code. This is a required field.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"ChangeLog": {
+"description": "Describes a change that a user has made to a resource.",
+"id": "ChangeLog",
+"properties": {
+"accountId": {
+"description": "Account ID of the modified object.",
+"format": "int64",
+"type": "string"
+},
+"action": {
+"description": "Action which caused the change.",
+"type": "string"
+},
+"changeTime": {
+"format": "date-time",
+"type": "string"
+},
+"fieldName": {
+"description": "Field name of the object which changed.",
+"type": "string"
+},
+"id": {
+"description": "ID of this change log.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#changeLog\".",
+"type": "string"
+},
+"newValue": {
+"description": "New value of the object field.",
+"type": "string"
+},
+"objectId": {
+"description": "ID of the object of this change log. The object could be a campaign, placement, ad, or other type.",
+"format": "int64",
+"type": "string"
+},
+"objectType": {
+"description": "Object type of the change log.",
+"type": "string"
+},
+"oldValue": {
+"description": "Old value of the object field.",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of the modified object.",
+"format": "int64",
+"type": "string"
+},
+"transactionId": {
+"description": "Transaction ID of this change log. When a single API call results in many changes, each change will have a separate ID in the change log but will share the same transactionId.",
+"format": "int64",
+"type": "string"
+},
+"userProfileId": {
+"description": "ID of the user who modified the object.",
+"format": "int64",
+"type": "string"
+},
+"userProfileName": {
+"description": "User profile name of the user who modified the object.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ChangeLogsListResponse": {
+"description": "Change Log List Response",
+"id": "ChangeLogsListResponse",
+"properties": {
+"changeLogs": {
+"description": "Change log collection.",
+"items": {
+"$ref": "ChangeLog"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#changeLogsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CitiesListResponse": {
+"description": "City List Response",
+"id": "CitiesListResponse",
+"properties": {
+"cities": {
+"description": "City collection.",
+"items": {
+"$ref": "City"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#citiesListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"City": {
+"description": "Contains information about a city that can be targeted by ads.",
+"id": "City",
+"properties": {
+"countryCode": {
+"description": "Country code of the country to which this city belongs.",
+"type": "string"
+},
+"countryDartId": {
+"description": "DART ID of the country to which this city belongs.",
+"format": "int64",
+"type": "string"
+},
+"dartId": {
+"description": "DART ID of this city. This is the ID used for targeting and generating reports.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#city\".",
+"type": "string"
+},
+"metroCode": {
+"description": "Metro region code of the metro region (DMA) to which this city belongs.",
+"type": "string"
+},
+"metroDmaId": {
+"description": "ID of the metro region (DMA) to which this city belongs.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of this city.",
+"type": "string"
+},
+"regionCode": {
+"description": "Region code of the region to which this city belongs.",
+"type": "string"
+},
+"regionDartId": {
+"description": "DART ID of the region to which this city belongs.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClickTag": {
+"description": "Creative Click Tag.",
+"id": "ClickTag",
+"properties": {
+"clickThroughUrl": {
+"$ref": "CreativeClickThroughUrl",
+"description": "Parameter value for the specified click tag. This field contains a click-through url."
+},
+"eventName": {
+"description": "Advertiser event name associated with the click tag. This field is used by DISPLAY_IMAGE_GALLERY and HTML5_BANNER creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"type": "string"
+},
+"name": {
+"description": "Parameter name for the specified click tag. For DISPLAY_IMAGE_GALLERY creative assets, this field must match the value of the creative asset's creativeAssetId.name field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClickThroughUrl": {
+"description": "Click-through URL",
+"id": "ClickThroughUrl",
+"properties": {
+"computedClickThroughUrl": {
+"description": "Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows: - If defaultLandingPage is enabled then the campaign's default landing page URL is assigned to this field. - If defaultLandingPage is not enabled and a landingPageId is specified then that landing page's URL is assigned to this field. - If neither of the above cases apply, then the customClickThroughUrl is assigned to this field. ",
+"type": "string"
+},
+"customClickThroughUrl": {
+"description": "Custom click-through URL. Applicable if the defaultLandingPage field is set to false and the landingPageId field is left unset.",
+"type": "string"
+},
+"defaultLandingPage": {
+"description": "Whether the campaign default landing page is used.",
+"type": "boolean"
+},
+"landingPageId": {
+"description": "ID of the landing page for the click-through URL. Applicable if the defaultLandingPage field is set to false.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClickThroughUrlSuffixProperties": {
+"description": "Click Through URL Suffix settings.",
+"id": "ClickThroughUrlSuffixProperties",
+"properties": {
+"clickThroughUrlSuffix": {
+"description": "Click-through URL suffix to apply to all ads in this entity's scope. Must be less than 128 characters long.",
+"type": "string"
+},
+"overrideInheritedSuffix": {
+"description": "Whether this entity should override the inherited click-through URL suffix with its own defined value.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"CompanionClickThroughOverride": {
+"description": "Companion Click-through override.",
+"id": "CompanionClickThroughOverride",
+"properties": {
+"clickThroughUrl": {
+"$ref": "ClickThroughUrl",
+"description": "Click-through URL of this companion click-through override."
+},
+"creativeId": {
+"description": "ID of the creative for this companion click-through override.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CompanionSetting": {
+"description": "Companion Settings",
+"id": "CompanionSetting",
+"properties": {
+"companionsDisabled": {
+"description": "Whether companions are disabled for this placement.",
+"type": "boolean"
+},
+"enabledSizes": {
+"description": "Allowlist of companion sizes to be served to this placement. Set this list to null or empty to serve all companion sizes.",
+"items": {
+"$ref": "Size"
+},
+"type": "array"
+},
+"imageOnly": {
+"description": "Whether to serve only static images as companions.",
+"type": "boolean"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#companionSetting\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CompatibleFields": {
+"description": "Represents a response to the queryCompatibleFields method. Next ID: 10",
+"id": "CompatibleFields",
+"properties": {
+"crossDimensionReachReportCompatibleFields": {
+"$ref": "CrossDimensionReachReportCompatibleFields",
+"description": "Contains items that are compatible to be selected for a report of type \"CROSS_DIMENSION_REACH\"."
+},
+"crossMediaReachReportCompatibleFields": {
+"$ref": "CrossMediaReachReportCompatibleFields",
+"description": "Contains items that are compatible to be selected for a report of type \"CROSS_MEDIA_REACH\"."
+},
+"floodlightReportCompatibleFields": {
+"$ref": "FloodlightReportCompatibleFields",
+"description": "Contains items that are compatible to be selected for a report of type \"FLOODLIGHT\"."
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#compatibleFields.",
+"type": "string"
+},
+"pathToConversionReportCompatibleFields": {
+"$ref": "PathToConversionReportCompatibleFields",
+"description": "Contains items that are compatible to be selected for a report of type \"PATH_TO_CONVERSION\"."
+},
+"reachReportCompatibleFields": {
+"$ref": "ReachReportCompatibleFields",
+"description": "Contains items that are compatible to be selected for a report of type \"REACH\"."
+},
+"reportCompatibleFields": {
+"$ref": "ReportCompatibleFields",
+"description": "Contains items that are compatible to be selected for a report of type \"STANDARD\"."
+}
+},
+"type": "object"
+},
+"ConnectionType": {
+"description": "Contains information about an internet connection type that can be targeted by ads. Clients can use the connection type to target mobile vs. broadband users.",
+"id": "ConnectionType",
+"properties": {
+"id": {
+"description": "ID of this connection type.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#connectionType\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this connection type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConnectionTypesListResponse": {
+"description": "Connection Type List Response",
+"id": "ConnectionTypesListResponse",
+"properties": {
+"connectionTypes": {
+"description": "Collection of connection types such as broadband and mobile.",
+"items": {
+"$ref": "ConnectionType"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#connectionTypesListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContentCategoriesListResponse": {
+"description": "Content Category List Response",
+"id": "ContentCategoriesListResponse",
+"properties": {
+"contentCategories": {
+"description": "Content category collection.",
+"items": {
+"$ref": "ContentCategory"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#contentCategoriesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContentCategory": {
+"id": "ContentCategory",
+"properties": {
+"accountId": {
+"description": "Account ID of this content category. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"id": {
+"description": "ID of this content category. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#contentCategory\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this content category. This is a required field and must be less than 256 characters long and unique among content categories of the same account.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Conversion": {
+"description": "A Conversion represents when a user successfully performs a desired action after seeing an ad.",
+"id": "Conversion",
+"properties": {
+"adUserDataConsent": {
+"description": "This represents consent for ad user data.",
+"enum": [
+"GRANTED",
+"DENIED"
+],
+"enumDescriptions": [
+"Granted.",
+"Denied."
+],
+"type": "string"
+},
+"cartData": {
+"$ref": "CartData",
+"description": "The cart data associated with this conversion."
+},
+"childDirectedTreatment": {
+"description": "Whether this particular request may come from a user under the age of 13, under COPPA compliance.",
+"type": "boolean"
+},
+"customVariables": {
+"description": "Custom floodlight variables.",
+"items": {
+"$ref": "CustomFloodlightVariable"
+},
+"type": "array"
+},
+"dclid": {
+"description": "The display click ID. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[], matchId, mobileDeviceId, gclid, and impressionId. This or encryptedUserId or encryptedUserIdCandidates[] or matchId or mobileDeviceId or gclid or impressionId is a required field.",
+"type": "string"
+},
+"encryptedUserId": {
+"description": "The alphanumeric encrypted user ID. When set, encryptionInfo should also be specified. This field is mutually exclusive with encryptedUserIdCandidates[], matchId, mobileDeviceId, gclid, dclid, and impressionId. This or encryptedUserIdCandidates[] or matchId or mobileDeviceId or gclid or dclid or impressionId is a required field.",
+"type": "string"
+},
+"encryptedUserIdCandidates": {
+"description": "A list of the alphanumeric encrypted user IDs. Any user ID with exposure prior to the conversion timestamp will be used in the inserted conversion. If no such user ID is found then the conversion will be rejected with INVALID_ARGUMENT error. When set, encryptionInfo should also be specified. This field may only be used when calling batchinsert; it is not supported by batchupdate. This field is mutually exclusive with encryptedUserId, matchId, mobileDeviceId, gclid dclid, and impressionId. This or encryptedUserId or matchId or mobileDeviceId or gclid or dclid or impressionId is a required field.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"floodlightActivityId": {
+"description": "Floodlight Activity ID of this conversion. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"floodlightConfigurationId": {
+"description": "Floodlight Configuration ID of this conversion. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"gclid": {
+"description": "The Google click ID. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[], matchId, mobileDeviceId, dclid, and impressionId. This or encryptedUserId or encryptedUserIdCandidates[] or matchId or mobileDeviceId or dclid or impressionId is a required field.",
+"type": "string"
+},
+"impressionId": {
+"description": "The impression ID. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[], matchId, mobileDeviceId, and gclid. One of these identifiers must be set.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversion\".",
+"type": "string"
+},
+"limitAdTracking": {
+"description": "Whether Limit Ad Tracking is enabled. When set to true, the conversion will be used for reporting but not targeting. This will prevent remarketing.",
+"type": "boolean"
+},
+"matchId": {
+"description": "The match ID field. A match ID is your own first-party identifier that has been synced with Google using the match ID feature in Floodlight. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[],mobileDeviceId, gclid, dclid, and impressionId. This or encryptedUserId orencryptedUserIdCandidates[] or mobileDeviceId or gclid or dclid or impressionIdis a required field.",
+"type": "string"
+},
+"mobileDeviceId": {
+"description": "The mobile device ID. This field is mutually exclusive with encryptedUserId, encryptedUserIdCandidates[], matchId, gclid, dclid, and impressionId. This or encryptedUserId or encryptedUserIdCandidates[] or matchId or gclid or dclid or impressionId is a required field.",
+"type": "string"
+},
+"nonPersonalizedAd": {
+"description": "Whether the conversion was for a non personalized ad.",
+"type": "boolean"
+},
+"ordinal": {
+"description": "The ordinal of the conversion. Use this field to control how conversions of the same user and day are de-duplicated. This is a required field.",
+"type": "string"
+},
+"quantity": {
+"description": "The quantity of the conversion. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"timestampMicros": {
+"description": "The timestamp of conversion, in Unix epoch micros. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"treatmentForUnderage": {
+"description": "Whether this particular request may come from a user under the age of 16 (may differ by country), under compliance with the European Union's General Data Protection Regulation (GDPR).",
+"type": "boolean"
+},
+"userIdentifiers": {
+"description": "The user identifiers to enhance the conversion. The maximum number of user identifiers for each conversion is 5.",
+"items": {
+"$ref": "UserIdentifier"
+},
+"type": "array"
+},
+"value": {
+"description": "The value of the conversion. This is a required field.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"ConversionError": {
+"description": "The error code and description for a conversion that failed to insert or update.",
+"id": "ConversionError",
+"properties": {
+"code": {
+"description": "The error code.",
+"enum": [
+"INVALID_ARGUMENT",
+"INTERNAL",
+"PERMISSION_DENIED",
+"NOT_FOUND"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversionError\".",
+"type": "string"
+},
+"message": {
+"description": "A description of the error.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConversionStatus": {
+"description": "The original conversion that was inserted or updated and whether there were any errors.",
+"id": "ConversionStatus",
+"properties": {
+"conversion": {
+"$ref": "Conversion",
+"description": "The original conversion that was inserted or updated."
+},
+"errors": {
+"description": "A list of errors related to this conversion.",
+"items": {
+"$ref": "ConversionError"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversionStatus\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConversionsBatchInsertRequest": {
+"description": "Insert Conversions Request.",
+"id": "ConversionsBatchInsertRequest",
+"properties": {
+"conversions": {
+"description": "The set of conversions to insert.",
+"items": {
+"$ref": "Conversion"
+},
+"type": "array"
+},
+"encryptionInfo": {
+"$ref": "EncryptionInfo",
+"description": "Describes how encryptedUserId or encryptedUserIdCandidates[] is encrypted. This is a required field if encryptedUserId or encryptedUserIdCandidates[] is used."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversionsBatchInsertRequest\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConversionsBatchInsertResponse": {
+"description": "Insert Conversions Response.",
+"id": "ConversionsBatchInsertResponse",
+"properties": {
+"hasFailures": {
+"description": "Indicates that some or all conversions failed to insert.",
+"type": "boolean"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversionsBatchInsertResponse\".",
+"type": "string"
+},
+"status": {
+"description": "The insert status of each conversion. Statuses are returned in the same order that conversions are inserted.",
+"items": {
+"$ref": "ConversionStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ConversionsBatchUpdateRequest": {
+"description": "Update Conversions Request.",
+"id": "ConversionsBatchUpdateRequest",
+"properties": {
+"conversions": {
+"description": "The set of conversions to update.",
+"items": {
+"$ref": "Conversion"
+},
+"type": "array"
+},
+"encryptionInfo": {
+"$ref": "EncryptionInfo",
+"description": "Describes how encryptedUserId is encrypted. This is a required field if encryptedUserId is used."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversionsBatchUpdateRequest\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConversionsBatchUpdateResponse": {
+"description": "Update Conversions Response.",
+"id": "ConversionsBatchUpdateResponse",
+"properties": {
+"hasFailures": {
+"description": "Indicates that some or all conversions failed to update.",
+"type": "boolean"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#conversionsBatchUpdateResponse\".",
+"type": "string"
+},
+"status": {
+"description": "The update status of each conversion. Statuses are returned in the same order that conversions are updated.",
+"items": {
+"$ref": "ConversionStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CountriesListResponse": {
+"description": "Country List Response",
+"id": "CountriesListResponse",
+"properties": {
+"countries": {
+"description": "Country collection.",
+"items": {
+"$ref": "Country"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#countriesListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Country": {
+"description": "Contains information about a country that can be targeted by ads.",
+"id": "Country",
+"properties": {
+"countryCode": {
+"description": "Country code.",
+"type": "string"
+},
+"dartId": {
+"description": "DART ID of this country. This is the ID used for targeting and generating reports.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#country\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this country.",
+"type": "string"
+},
+"sslEnabled": {
+"description": "Whether ad serving supports secure servers in this country.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Creative": {
+"description": "Contains properties of a Creative.",
+"id": "Creative",
+"properties": {
+"accountId": {
+"description": "Account ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.",
+"format": "int64",
+"type": "string"
+},
+"active": {
+"description": "Whether the creative is active. Applicable to all creative types.",
+"type": "boolean"
+},
+"adParameters": {
+"description": "Ad parameters user for VPAID creative. This is a read-only field. Applicable to the following creative types: all VPAID.",
+"type": "string"
+},
+"adTagKeys": {
+"description": "Keywords for a Rich Media creative. Keywords let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use keywords to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"additionalSizes": {
+"description": "Additional sizes associated with a responsive creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. Applicable to DISPLAY creatives when the primary asset type is HTML_IMAGE.",
+"items": {
+"$ref": "Size"
+},
+"type": "array"
+},
+"advertiserId": {
+"description": "Required. Advertiser ID of this creative. This is a required field. Applicable to all creative types.",
+"format": "int64",
+"type": "string"
+},
+"allowScriptAccess": {
+"description": "Whether script access is allowed for this creative. This is a read-only and deprecated field which will automatically be set to true on update. Applicable to the following creative types: FLASH_INPAGE.",
+"type": "boolean"
+},
+"archived": {
+"description": "Whether the creative is archived. Applicable to all creative types.",
+"type": "boolean"
+},
+"artworkType": {
+"description": "Type of artwork used for the creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"enum": [
+"ARTWORK_TYPE_FLASH",
+"ARTWORK_TYPE_HTML5",
+"ARTWORK_TYPE_MIXED",
+"ARTWORK_TYPE_IMAGE"
+],
+"enumDescriptions": [
+"The creative is a Flash creative.",
+"The creative is HTML5.",
+"The creative is HTML5 if available, Flash otherwise.",
+"The creative is Image."
+],
+"type": "string"
+},
+"authoringSource": {
+"description": "Source application where creative was authored. Presently, only DBM authored creatives will have this field set. Applicable to all creative types.",
+"enum": [
+"CREATIVE_AUTHORING_SOURCE_DCM",
+"CREATIVE_AUTHORING_SOURCE_DBM",
+"CREATIVE_AUTHORING_SOURCE_STUDIO",
+"CREATIVE_AUTHORING_SOURCE_GWD",
+"CREATIVE_AUTHORING_SOURCE_ACS"
+],
+"enumDescriptions": [
+"DCM-UI or external API used to author the creative.",
+"DBM-UI used to author the creative.",
+"Studio-UI used to author the creative.",
+"Google Web Designer used to author the creative.",
+"ACS-UI used to author the creative."
+],
+"type": "string"
+},
+"authoringTool": {
+"description": "Authoring tool for HTML5 banner creatives. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.",
+"enum": [
+"NINJA",
+"SWIFFY"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"autoAdvanceImages": {
+"description": "Whether images are automatically advanced for image gallery creatives. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY.",
+"type": "boolean"
+},
+"backgroundColor": {
+"description": "The 6-character HTML color code, beginning with #, for the background of the window area where the Flash file is displayed. Default is white. Applicable to the following creative types: FLASH_INPAGE.",
+"type": "string"
+},
+"backupImageClickThroughUrl": {
+"$ref": "CreativeClickThroughUrl",
+"description": "Click-through URL for backup image. Applicable to ENHANCED_BANNER when the primary asset type is not HTML_IMAGE."
+},
+"backupImageFeatures": {
+"description": "List of feature dependencies that will cause a backup image to be served if the browser that serves the ad does not support them. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative asset correctly. This field is initially auto-generated to contain all features detected by Campaign Manager for all the assets of this creative and can then be modified by the client. To reset this field, copy over all the creativeAssets' detected features. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"items": {
+"enum": [
+"CSS_FONT_FACE",
+"CSS_BACKGROUND_SIZE",
+"CSS_BORDER_IMAGE",
+"CSS_BORDER_RADIUS",
+"CSS_BOX_SHADOW",
+"CSS_FLEX_BOX",
+"CSS_HSLA",
+"CSS_MULTIPLE_BGS",
+"CSS_OPACITY",
+"CSS_RGBA",
+"CSS_TEXT_SHADOW",
+"CSS_ANIMATIONS",
+"CSS_COLUMNS",
+"CSS_GENERATED_CONTENT",
+"CSS_GRADIENTS",
+"CSS_REFLECTIONS",
+"CSS_TRANSFORMS",
+"CSS_TRANSFORMS3D",
+"CSS_TRANSITIONS",
+"APPLICATION_CACHE",
+"CANVAS",
+"CANVAS_TEXT",
+"DRAG_AND_DROP",
+"HASH_CHANGE",
+"HISTORY",
+"AUDIO",
+"VIDEO",
+"INDEXED_DB",
+"INPUT_ATTR_AUTOCOMPLETE",
+"INPUT_ATTR_AUTOFOCUS",
+"INPUT_ATTR_LIST",
+"INPUT_ATTR_PLACEHOLDER",
+"INPUT_ATTR_MAX",
+"INPUT_ATTR_MIN",
+"INPUT_ATTR_MULTIPLE",
+"INPUT_ATTR_PATTERN",
+"INPUT_ATTR_REQUIRED",
+"INPUT_ATTR_STEP",
+"INPUT_TYPE_SEARCH",
+"INPUT_TYPE_TEL",
+"INPUT_TYPE_URL",
+"INPUT_TYPE_EMAIL",
+"INPUT_TYPE_DATETIME",
+"INPUT_TYPE_DATE",
+"INPUT_TYPE_MONTH",
+"INPUT_TYPE_WEEK",
+"INPUT_TYPE_TIME",
+"INPUT_TYPE_DATETIME_LOCAL",
+"INPUT_TYPE_NUMBER",
+"INPUT_TYPE_RANGE",
+"INPUT_TYPE_COLOR",
+"LOCAL_STORAGE",
+"POST_MESSAGE",
+"SESSION_STORAGE",
+"WEB_SOCKETS",
+"WEB_SQL_DATABASE",
+"WEB_WORKERS",
+"GEO_LOCATION",
+"INLINE_SVG",
+"SMIL",
+"SVG_HREF",
+"SVG_CLIP_PATHS",
+"TOUCH",
+"WEBGL",
+"SVG_FILTERS",
+"SVG_FE_IMAGE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"POST_MESSAGE always required due to html5 implementation.",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"backupImageReportingLabel": {
+"description": "Reporting label used for HTML5 banner backup image. Applicable to the following creative types: DISPLAY when the primary asset type is not HTML_IMAGE.",
+"type": "string"
+},
+"backupImageTargetWindow": {
+"$ref": "TargetWindow",
+"description": "Target window for backup image. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE."
+},
+"clickTags": {
+"description": "Click tags of the creative. For DISPLAY, FLASH_INPAGE, and HTML5_BANNER creatives, this is a subset of detected click tags for the assets associated with this creative. After creating a flash asset, detected click tags will be returned in the creativeAssetMetadata. When inserting the creative, populate the creative clickTags field using the creativeAssetMetadata.clickTags field. For DISPLAY_IMAGE_GALLERY creatives, there should be exactly one entry in this list for each image creative asset. A click tag is matched with a corresponding creative asset by matching the clickTag.name field with the creativeAsset.assetIdentifier.name field. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"items": {
+"$ref": "ClickTag"
+},
+"type": "array"
+},
+"commercialId": {
+"description": "Industry standard ID assigned to creative for reach and frequency. Applicable to INSTREAM_VIDEO_REDIRECT creatives.",
+"type": "string"
+},
+"companionCreatives": {
+"description": "List of companion creatives assigned to an in-Stream video creative. Acceptable values include IDs of existing flash and image creatives. Applicable to the following creative types: all VPAID, all INSTREAM_AUDIO and all INSTREAM_VIDEO with dynamicAssetSelection set to false.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"compatibility": {
+"description": "Compatibilities associated with this creative. This is a read-only field. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering either on desktop or on mobile devices or in mobile apps for regular or interstitial ads, respectively. APP and APP_INTERSTITIAL are for rendering in mobile apps. Only pre-existing creatives may have these compatibilities since new creatives will either be assigned DISPLAY or DISPLAY_INTERSTITIAL instead. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. IN_STREAM_AUDIO refers to rendering in in-stream audio ads developed with the VAST standard. Applicable to all creative types. Acceptable values are: - \"APP\" - \"APP_INTERSTITIAL\" - \"IN_STREAM_VIDEO\" - \"IN_STREAM_AUDIO\" - \"DISPLAY\" - \"DISPLAY_INTERSTITIAL\" ",
+"items": {
+"enum": [
+"DISPLAY",
+"DISPLAY_INTERSTITIAL",
+"APP",
+"APP_INTERSTITIAL",
+"IN_STREAM_VIDEO",
+"IN_STREAM_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"Deprecated enum value. No longer supported.",
+"Deprecated enum value. No longer supported.",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"convertFlashToHtml5": {
+"description": "Whether Flash assets associated with the creative need to be automatically converted to HTML5. This flag is enabled by default and users can choose to disable it if they don't want the system to generate and use HTML5 asset for this creative. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"type": "boolean"
+},
+"counterCustomEvents": {
+"description": "List of counter events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"creativeAssetSelection": {
+"$ref": "CreativeAssetSelection",
+"description": "Required if dynamicAssetSelection is true."
+},
+"creativeAssets": {
+"description": "Assets associated with a creative. Applicable to all but the following creative types: INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and REDIRECT",
+"items": {
+"$ref": "CreativeAsset"
+},
+"type": "array"
+},
+"creativeFieldAssignments": {
+"description": "Creative field assignments for this creative. Applicable to all creative types.",
+"items": {
+"$ref": "CreativeFieldAssignment"
+},
+"type": "array"
+},
+"customKeyValues": {
+"description": "Custom key-values for a Rich Media creative. Key-values let you customize the creative settings of a Rich Media ad running on your site without having to contact the advertiser. You can use key-values to dynamically change the look or functionality of a creative. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"dynamicAssetSelection": {
+"description": "Set this to true to enable the use of rules to target individual assets in this creative. When set to true creativeAssetSelection must be set. This also controls asset-level companions. When this is true, companion creatives should be assigned to creative assets. Learn more. Applicable to INSTREAM_VIDEO creatives.",
+"type": "boolean"
+},
+"exitCustomEvents": {
+"description": "List of exit events configured for the creative. For DISPLAY and DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags, For DISPLAY, an event is also created from the backupImageReportingLabel. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"fsCommand": {
+"$ref": "FsCommand",
+"description": "OpenWindow FSCommand of this creative. This lets the SWF file communicate with either Flash Player or the program hosting Flash Player, such as a web browser. This is only triggered if allowScriptAccess field is true. Applicable to the following creative types: FLASH_INPAGE."
+},
+"htmlCode": {
+"description": "HTML code for the creative. This is a required field when applicable. This field is ignored if htmlCodeLocked is true. Applicable to the following creative types: all CUSTOM, FLASH_INPAGE, and HTML5_BANNER, and all RICH_MEDIA.",
+"type": "string"
+},
+"htmlCodeLocked": {
+"description": "Whether HTML code is generated by Campaign Manager or manually entered. Set to true to ignore changes to htmlCode. Applicable to the following creative types: FLASH_INPAGE and HTML5_BANNER.",
+"type": "boolean"
+},
+"id": {
+"description": "ID of this creative. This is a read-only, auto-generated field. Applicable to all creative types.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this creative. This is a read-only field. Applicable to all creative types."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creative\".",
+"type": "string"
+},
+"lastModifiedInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Creative last modification information. This is a read-only field. Applicable to all creative types."
+},
+"latestTraffickedCreativeId": {
+"description": "Latest Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"format": "int64",
+"type": "string"
+},
+"mediaDescription": {
+"description": "Description of the audio or video ad. Applicable to the following creative types: all INSTREAM_VIDEO, INSTREAM_AUDIO, and all VPAID.",
+"type": "string"
+},
+"mediaDuration": {
+"description": "Creative audio or video duration in seconds. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO, INSTREAM_AUDIO, all RICH_MEDIA, and all VPAID.",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "Required. Name of the creative. This must be less than 256 characters long. Applicable to all creative types.",
+"type": "string"
+},
+"obaIcon": {
+"$ref": "ObaIcon",
+"description": "Online behavioral advertising icon to be added to the creative. Applicable to the following creative types: all INSTREAM_VIDEO."
+},
+"overrideCss": {
+"description": "Override CSS value for rich media creatives. Applicable to the following creative types: all RICH_MEDIA.",
+"type": "string"
+},
+"progressOffset": {
+"$ref": "VideoOffset",
+"description": "Amount of time to play the video before counting a view. Applicable to the following creative types: all INSTREAM_VIDEO."
+},
+"redirectUrl": {
+"description": "URL of hosted image or hosted video or another ad tag. For INSTREAM_VIDEO_REDIRECT creatives this is the in-stream video redirect URL. The standard for a VAST (Video Ad Serving Template) ad response allows for a redirect link to another VAST 2.0 or 3.0 call. This is a required field when applicable. Applicable to the following creative types: DISPLAY_REDIRECT, INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO_REDIRECT",
+"type": "string"
+},
+"renderingId": {
+"description": "ID of current rendering version. This is a read-only field. Applicable to all creative types.",
+"format": "int64",
+"type": "string"
+},
+"renderingIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the rendering ID of this creative. This is a read-only field. Applicable to all creative types."
+},
+"requiredFlashPluginVersion": {
+"description": "The minimum required Flash plugin version for this creative. For example, 11.2.202.235. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"type": "string"
+},
+"requiredFlashVersion": {
+"description": "The internal Flash version for this creative as calculated by Studio. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"format": "int32",
+"type": "integer"
+},
+"size": {
+"$ref": "Size",
+"description": "Size associated with this creative. When inserting or updating a creative either the size ID field or size width and height fields can be used. This is a required field when applicable; however for IMAGE, FLASH_INPAGE creatives, and for DISPLAY creatives with a primary asset of type HTML_IMAGE, if left blank, this field will be automatically set using the actual size of the associated image assets. Applicable to the following creative types: DISPLAY, DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA."
+},
+"skipOffset": {
+"$ref": "VideoOffset",
+"description": "Amount of time to play the video before the skip button appears. Applicable to the following creative types: all INSTREAM_VIDEO."
+},
+"skippable": {
+"description": "Whether the user can choose to skip the creative. Applicable to the following creative types: all INSTREAM_VIDEO and all VPAID.",
+"type": "boolean"
+},
+"sslCompliant": {
+"description": "Whether the creative is SSL-compliant. This is a read-only field. Applicable to all creative types.",
+"type": "boolean"
+},
+"sslOverride": {
+"description": "Whether creative should be treated as SSL compliant even if the system scan shows it's not. Applicable to all creative types.",
+"type": "boolean"
+},
+"studioAdvertiserId": {
+"description": "Studio advertiser ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"format": "int64",
+"type": "string"
+},
+"studioCreativeId": {
+"description": "Studio creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"format": "int64",
+"type": "string"
+},
+"studioTraffickedCreativeId": {
+"description": "Studio trafficked creative ID associated with rich media and VPAID creatives. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"format": "int64",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this creative. This field, if left unset, will be auto-generated for both insert and update operations. Applicable to all creative types.",
+"format": "int64",
+"type": "string"
+},
+"thirdPartyBackupImageImpressionsUrl": {
+"description": "Third-party URL used to record backup image impressions. Applicable to the following creative types: all RICH_MEDIA.",
+"type": "string"
+},
+"thirdPartyRichMediaImpressionsUrl": {
+"description": "Third-party URL used to record rich media impressions. Applicable to the following creative types: all RICH_MEDIA.",
+"type": "string"
+},
+"thirdPartyUrls": {
+"description": "Third-party URLs for tracking in-stream creative events. Applicable to the following creative types: all INSTREAM_VIDEO, all INSTREAM_AUDIO, and all VPAID.",
+"items": {
+"$ref": "ThirdPartyTrackingUrl"
+},
+"type": "array"
+},
+"timerCustomEvents": {
+"description": "List of timer events configured for the creative. For DISPLAY_IMAGE_GALLERY creatives, these are read-only and auto-generated from clickTags. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset is not HTML_IMAGE.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"totalFileSize": {
+"description": "Combined size of all creative assets. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA, and all VPAID.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "Required. Type of this creative. Applicable to all creative types. *Note:* FLASH_INPAGE, HTML5_BANNER, and IMAGE are only used for existing creatives. New creatives should use DISPLAY as a replacement for these types.",
+"enum": [
+"IMAGE",
+"DISPLAY_REDIRECT",
+"CUSTOM_DISPLAY",
+"INTERNAL_REDIRECT",
+"CUSTOM_DISPLAY_INTERSTITIAL",
+"INTERSTITIAL_INTERNAL_REDIRECT",
+"TRACKING_TEXT",
+"RICH_MEDIA_DISPLAY_BANNER",
+"RICH_MEDIA_INPAGE_FLOATING",
+"RICH_MEDIA_IM_EXPAND",
+"RICH_MEDIA_DISPLAY_EXPANDING",
+"RICH_MEDIA_DISPLAY_INTERSTITIAL",
+"RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL",
+"RICH_MEDIA_MOBILE_IN_APP",
+"FLASH_INPAGE",
+"INSTREAM_VIDEO",
+"VPAID_LINEAR_VIDEO",
+"VPAID_NON_LINEAR_VIDEO",
+"INSTREAM_VIDEO_REDIRECT",
+"RICH_MEDIA_PEEL_DOWN",
+"HTML5_BANNER",
+"DISPLAY",
+"DISPLAY_IMAGE_GALLERY",
+"BRAND_SAFE_DEFAULT_INSTREAM_VIDEO",
+"INSTREAM_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"universalAdId": {
+"$ref": "UniversalAdId",
+"description": "A Universal Ad ID as per the VAST 4.0 spec. Applicable to the following creative types: INSTREAM_AUDIO and INSTREAM_VIDEO and VPAID."
+},
+"version": {
+"description": "The version number helps you keep track of multiple versions of your creative in your reports. The version number will always be auto-generated during insert operations to start at 1. For tracking creatives the version cannot be incremented and will always remain at 1. For all other creative types the version can be incremented only by 1 during update operations. In addition, the version will be automatically incremented by 1 when undergoing Rich Media creative merging. Applicable to all creative types.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"CreativeAsset": {
+"description": "Creative Asset.",
+"id": "CreativeAsset",
+"properties": {
+"actionScript3": {
+"description": "Whether ActionScript3 is enabled for the flash asset. This is a read-only field. Applicable to the following creative type: FLASH_INPAGE. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"type": "boolean"
+},
+"active": {
+"description": "Whether the video or audio asset is active. This is a read-only field for VPAID_NON_LINEAR_VIDEO assets. Applicable to the following creative types: INSTREAM_AUDIO, INSTREAM_VIDEO and all VPAID.",
+"type": "boolean"
+},
+"additionalSizes": {
+"description": "Additional sizes associated with this creative asset. HTML5 asset generated by compatible software such as GWD will be able to support more sizes this creative asset can render.",
+"items": {
+"$ref": "Size"
+},
+"type": "array"
+},
+"alignment": {
+"description": "Possible alignments for an asset. This is a read-only field. Applicable to the following creative types: RICH_MEDIA_DISPLAY_MULTI_FLOATING_INTERSTITIAL .",
+"enum": [
+"ALIGNMENT_TOP",
+"ALIGNMENT_RIGHT",
+"ALIGNMENT_BOTTOM",
+"ALIGNMENT_LEFT"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"artworkType": {
+"description": "Artwork type of rich media creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.",
+"enum": [
+"ARTWORK_TYPE_FLASH",
+"ARTWORK_TYPE_HTML5",
+"ARTWORK_TYPE_MIXED",
+"ARTWORK_TYPE_IMAGE"
+],
+"enumDescriptions": [
+"The creative is a Flash creative.",
+"The creative is HTML5.",
+"The creative is HTML5 if available, Flash otherwise.",
+"The creative is Image."
+],
+"type": "string"
+},
+"assetIdentifier": {
+"$ref": "CreativeAssetId",
+"description": "Identifier of this asset. This is the same identifier returned during creative asset insert operation. This is a required field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT."
+},
+"audioBitRate": {
+"description": "Audio stream bit rate in kbps. This is a read-only field. Applicable to the following creative types: INSTREAM_AUDIO, INSTREAM_VIDEO and all VPAID.",
+"format": "int32",
+"type": "integer"
+},
+"audioSampleRate": {
+"description": "Audio sample bit rate in hertz. This is a read-only field. Applicable to the following creative types: INSTREAM_AUDIO, INSTREAM_VIDEO and all VPAID.",
+"format": "int32",
+"type": "integer"
+},
+"backupImageExit": {
+"$ref": "CreativeCustomEvent",
+"description": "Exit event configured for the backup image. Applicable to the following creative types: all RICH_MEDIA."
+},
+"bitRate": {
+"description": "Detected bit-rate for audio or video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_AUDIO, INSTREAM_VIDEO and all VPAID.",
+"format": "int32",
+"type": "integer"
+},
+"childAssetType": {
+"description": "Rich media child asset type. This is a read-only field. Applicable to the following creative types: all VPAID.",
+"enum": [
+"CHILD_ASSET_TYPE_FLASH",
+"CHILD_ASSET_TYPE_VIDEO",
+"CHILD_ASSET_TYPE_IMAGE",
+"CHILD_ASSET_TYPE_DATA"
+],
+"enumDescriptions": [
+"swf files",
+"flv and any other video files types",
+"image files",
+"rest of the supported file types .txt, .xml etc."
+],
+"type": "string"
+},
+"collapsedSize": {
+"$ref": "Size",
+"description": "Size of an asset when collapsed. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN."
+},
+"companionCreativeIds": {
+"description": "List of companion creatives assigned to an in-stream video creative asset. Acceptable values include IDs of existing flash and image creatives. Applicable to INSTREAM_VIDEO creative type with dynamicAssetSelection set to true.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"customStartTimeValue": {
+"description": "Custom start time in seconds for making the asset visible. Applicable to the following creative types: all RICH_MEDIA. Value must be greater than or equal to 0.",
+"format": "int32",
+"type": "integer"
+},
+"detectedFeatures": {
+"description": "List of feature dependencies for the creative asset that are detected by Campaign Manager. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field. Applicable to the following creative types: HTML5_BANNER. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"items": {
+"enum": [
+"CSS_FONT_FACE",
+"CSS_BACKGROUND_SIZE",
+"CSS_BORDER_IMAGE",
+"CSS_BORDER_RADIUS",
+"CSS_BOX_SHADOW",
+"CSS_FLEX_BOX",
+"CSS_HSLA",
+"CSS_MULTIPLE_BGS",
+"CSS_OPACITY",
+"CSS_RGBA",
+"CSS_TEXT_SHADOW",
+"CSS_ANIMATIONS",
+"CSS_COLUMNS",
+"CSS_GENERATED_CONTENT",
+"CSS_GRADIENTS",
+"CSS_REFLECTIONS",
+"CSS_TRANSFORMS",
+"CSS_TRANSFORMS3D",
+"CSS_TRANSITIONS",
+"APPLICATION_CACHE",
+"CANVAS",
+"CANVAS_TEXT",
+"DRAG_AND_DROP",
+"HASH_CHANGE",
+"HISTORY",
+"AUDIO",
+"VIDEO",
+"INDEXED_DB",
+"INPUT_ATTR_AUTOCOMPLETE",
+"INPUT_ATTR_AUTOFOCUS",
+"INPUT_ATTR_LIST",
+"INPUT_ATTR_PLACEHOLDER",
+"INPUT_ATTR_MAX",
+"INPUT_ATTR_MIN",
+"INPUT_ATTR_MULTIPLE",
+"INPUT_ATTR_PATTERN",
+"INPUT_ATTR_REQUIRED",
+"INPUT_ATTR_STEP",
+"INPUT_TYPE_SEARCH",
+"INPUT_TYPE_TEL",
+"INPUT_TYPE_URL",
+"INPUT_TYPE_EMAIL",
+"INPUT_TYPE_DATETIME",
+"INPUT_TYPE_DATE",
+"INPUT_TYPE_MONTH",
+"INPUT_TYPE_WEEK",
+"INPUT_TYPE_TIME",
+"INPUT_TYPE_DATETIME_LOCAL",
+"INPUT_TYPE_NUMBER",
+"INPUT_TYPE_RANGE",
+"INPUT_TYPE_COLOR",
+"LOCAL_STORAGE",
+"POST_MESSAGE",
+"SESSION_STORAGE",
+"WEB_SOCKETS",
+"WEB_SQL_DATABASE",
+"WEB_WORKERS",
+"GEO_LOCATION",
+"INLINE_SVG",
+"SMIL",
+"SVG_HREF",
+"SVG_CLIP_PATHS",
+"TOUCH",
+"WEBGL",
+"SVG_FILTERS",
+"SVG_FE_IMAGE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"POST_MESSAGE always required due to html5 implementation.",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"displayType": {
+"description": "Type of rich media asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.",
+"enum": [
+"ASSET_DISPLAY_TYPE_INPAGE",
+"ASSET_DISPLAY_TYPE_FLOATING",
+"ASSET_DISPLAY_TYPE_OVERLAY",
+"ASSET_DISPLAY_TYPE_EXPANDING",
+"ASSET_DISPLAY_TYPE_FLASH_IN_FLASH",
+"ASSET_DISPLAY_TYPE_FLASH_IN_FLASH_EXPANDING",
+"ASSET_DISPLAY_TYPE_PEEL_DOWN",
+"ASSET_DISPLAY_TYPE_VPAID_LINEAR",
+"ASSET_DISPLAY_TYPE_VPAID_NON_LINEAR",
+"ASSET_DISPLAY_TYPE_BACKDROP"
+],
+"enumDescriptions": [
+"Asset exists in a box and stays within the box.",
+"Asset exists at a self described location on the page.",
+"Special display type for IM clients.",
+"Asset changes size.",
+"Not applicable for HTML5.",
+"Not applicable for HTML5.",
+"Asset sits on the top right and expands.",
+"VPAID linear asset.",
+"VPAID non linear asset.",
+"Backdrop (skin) asset."
+],
+"type": "string"
+},
+"duration": {
+"description": "Duration in seconds for which an asset will be displayed. Applicable to the following creative types: INSTREAM_AUDIO, INSTREAM_VIDEO and VPAID_LINEAR_VIDEO. Value must be greater than or equal to 1.",
+"format": "int32",
+"type": "integer"
+},
+"durationType": {
+"description": "Duration type for which an asset will be displayed. Applicable to the following creative types: all RICH_MEDIA.",
+"enum": [
+"ASSET_DURATION_TYPE_AUTO",
+"ASSET_DURATION_TYPE_NONE",
+"ASSET_DURATION_TYPE_CUSTOM"
+],
+"enumDescriptions": [
+"Asset is displayed for the single run of the time line.",
+"Asset is displayed indefinitely and it loops on the timeline.",
+"User entered duration value in seconds."
+],
+"type": "string"
+},
+"expandedDimension": {
+"$ref": "Size",
+"description": "Detected expanded dimension for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID."
+},
+"fileSize": {
+"description": "File size associated with this creative asset. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.",
+"format": "int64",
+"type": "string"
+},
+"flashVersion": {
+"description": "Flash version of the asset. This is a read-only field. Applicable to the following creative types: FLASH_INPAGE, all RICH_MEDIA, and all VPAID. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE.",
+"format": "int32",
+"type": "integer"
+},
+"frameRate": {
+"description": "Video frame rate for video asset in frames per second. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.",
+"format": "float",
+"type": "number"
+},
+"hideFlashObjects": {
+"description": "Whether to hide Flash objects flag for an asset. Applicable to the following creative types: all RICH_MEDIA.",
+"type": "boolean"
+},
+"hideSelectionBoxes": {
+"description": "Whether to hide selection boxes flag for an asset. Applicable to the following creative types: all RICH_MEDIA.",
+"type": "boolean"
+},
+"horizontallyLocked": {
+"description": "Whether the asset is horizontally locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.",
+"type": "boolean"
+},
+"id": {
+"description": "Numeric ID of this creative asset. This is a required field and should not be modified. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the asset. This is a read-only, auto-generated field."
+},
+"mediaDuration": {
+"description": "Detected duration for audio or video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_AUDIO, INSTREAM_VIDEO and all VPAID.",
+"format": "float",
+"type": "number"
+},
+"mimeType": {
+"description": "Detected MIME type for audio or video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_AUDIO, INSTREAM_VIDEO and all VPAID.",
+"type": "string"
+},
+"offset": {
+"$ref": "OffsetPosition",
+"description": "Offset position for an asset in collapsed mode. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID. Additionally, only applicable to assets whose displayType is ASSET_DISPLAY_TYPE_EXPANDING or ASSET_DISPLAY_TYPE_PEEL_DOWN."
+},
+"orientation": {
+"description": "Orientation of video asset. This is a read-only, auto-generated field.",
+"enum": [
+"LANDSCAPE",
+"PORTRAIT",
+"SQUARE"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"originalBackup": {
+"description": "Whether the backup asset is original or changed by the user in Campaign Manager. Applicable to the following creative types: all RICH_MEDIA.",
+"type": "boolean"
+},
+"politeLoad": {
+"description": "Whether this asset is used as a polite load asset.",
+"type": "boolean"
+},
+"position": {
+"$ref": "OffsetPosition",
+"description": "Offset position for an asset. Applicable to the following creative types: all RICH_MEDIA."
+},
+"positionLeftUnit": {
+"description": "Offset left unit for an asset. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.",
+"enum": [
+"OFFSET_UNIT_PIXEL",
+"OFFSET_UNIT_PERCENT",
+"OFFSET_UNIT_PIXEL_FROM_CENTER"
+],
+"enumDescriptions": [
+"Pixels on a screen.",
+"Percent offset for center asset (rather than top and left).",
+"Pixel offset for center of asset from center of browser window."
+],
+"type": "string"
+},
+"positionTopUnit": {
+"description": "Offset top unit for an asset. This is a read-only field if the asset displayType is ASSET_DISPLAY_TYPE_OVERLAY. Applicable to the following creative types: all RICH_MEDIA.",
+"enum": [
+"OFFSET_UNIT_PIXEL",
+"OFFSET_UNIT_PERCENT",
+"OFFSET_UNIT_PIXEL_FROM_CENTER"
+],
+"enumDescriptions": [
+"Pixels on a screen.",
+"Percent offset for center asset (rather than top and left).",
+"Pixel offset for center of asset from center of browser window."
+],
+"type": "string"
+},
+"progressiveServingUrl": {
+"description": "Progressive URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.",
+"type": "string"
+},
+"pushdown": {
+"description": "Whether the asset pushes down other content. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable when the asset offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height.",
+"type": "boolean"
+},
+"pushdownDuration": {
+"description": "Pushdown duration in seconds for an asset. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable when the asset pushdown field is true, the offsets are 0, the collapsedSize.width matches size.width, and the collapsedSize.height is less than size.height. Acceptable values are 0 to 9.99, inclusive.",
+"format": "float",
+"type": "number"
+},
+"role": {
+"description": "Role of the asset in relation to creative. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT. This is a required field. PRIMARY applies to DISPLAY, FLASH_INPAGE, HTML5_BANNER, IMAGE, DISPLAY_IMAGE_GALLERY, all RICH_MEDIA (which may contain multiple primary assets), and all VPAID creatives. BACKUP_IMAGE applies to FLASH_INPAGE, HTML5_BANNER, all RICH_MEDIA, and all VPAID creatives. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE. ADDITIONAL_IMAGE and ADDITIONAL_FLASH apply to FLASH_INPAGE creatives. OTHER refers to assets from sources other than Campaign Manager, such as Studio uploaded assets, applicable to all RICH_MEDIA and all VPAID creatives. PARENT_VIDEO refers to videos uploaded by the user in Campaign Manager and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives. TRANSCODED_VIDEO refers to videos transcoded by Campaign Manager from PARENT_VIDEO assets and is applicable to INSTREAM_VIDEO and VPAID_LINEAR_VIDEO creatives. ALTERNATE_VIDEO refers to the Campaign Manager representation of child asset videos from Studio, and is applicable to VPAID_LINEAR_VIDEO creatives. These cannot be added or removed within Campaign Manager. For VPAID_LINEAR_VIDEO creatives, PARENT_VIDEO, TRANSCODED_VIDEO and ALTERNATE_VIDEO assets that are marked active serve as backup in case the VPAID creative cannot be served. Only PARENT_VIDEO assets can be added or removed for an INSTREAM_VIDEO or VPAID_LINEAR_VIDEO creative. PARENT_AUDIO refers to audios uploaded by the user in Campaign Manager and is applicable to INSTREAM_AUDIO creatives. TRANSCODED_AUDIO refers to audios transcoded by Campaign Manager from PARENT_AUDIO assets and is applicable to INSTREAM_AUDIO creatives. ",
+"enum": [
+"PRIMARY",
+"BACKUP_IMAGE",
+"ADDITIONAL_IMAGE",
+"ADDITIONAL_FLASH",
+"PARENT_VIDEO",
+"TRANSCODED_VIDEO",
+"OTHER",
+"ALTERNATE_VIDEO",
+"PARENT_AUDIO",
+"TRANSCODED_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"size": {
+"$ref": "Size",
+"description": "Size associated with this creative asset. This is a required field when applicable; however for IMAGE and FLASH_INPAGE, creatives if left blank, this field will be automatically set using the actual size of the associated image asset. Applicable to the following creative types: DISPLAY_IMAGE_GALLERY, FLASH_INPAGE, HTML5_BANNER, IMAGE, and all RICH_MEDIA. Applicable to DISPLAY when the primary asset type is not HTML_IMAGE."
+},
+"sslCompliant": {
+"description": "Whether the asset is SSL-compliant. This is a read-only field. Applicable to all but the following creative types: all REDIRECT and TRACKING_TEXT.",
+"type": "boolean"
+},
+"startTimeType": {
+"description": "Initial wait time type before making the asset visible. Applicable to the following creative types: all RICH_MEDIA.",
+"enum": [
+"ASSET_START_TIME_TYPE_NONE",
+"ASSET_START_TIME_TYPE_CUSTOM"
+],
+"enumDescriptions": [
+"Asset is not automatically displayed.",
+"Asset is automatically displayed after a fixed period of time."
+],
+"type": "string"
+},
+"streamingServingUrl": {
+"description": "Streaming URL for video asset. This is a read-only field. Applicable to the following creative types: INSTREAM_VIDEO and all VPAID.",
+"type": "string"
+},
+"transparency": {
+"description": "Whether the asset is transparent. Applicable to the following creative types: all RICH_MEDIA. Additionally, only applicable to HTML5 assets.",
+"type": "boolean"
+},
+"verticallyLocked": {
+"description": "Whether the asset is vertically locked. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA.",
+"type": "boolean"
+},
+"windowMode": {
+"description": "Window mode options for flash assets. Applicable to the following creative types: FLASH_INPAGE, RICH_MEDIA_DISPLAY_EXPANDING, RICH_MEDIA_IM_EXPAND, RICH_MEDIA_DISPLAY_BANNER, and RICH_MEDIA_INPAGE_FLOATING.",
+"enum": [
+"OPAQUE",
+"WINDOW",
+"TRANSPARENT"
+],
+"enumDescriptions": [
+"Allows overlapping of Html and SWF content.",
+"Default",
+"Used for non-square borders. Allows overlapping of Html and SWF content."
+],
+"type": "string"
+},
+"zIndex": {
+"description": "zIndex value of an asset. Applicable to the following creative types: all RICH_MEDIA.Additionally, only applicable to assets whose displayType is NOT one of the following types: ASSET_DISPLAY_TYPE_INPAGE or ASSET_DISPLAY_TYPE_OVERLAY. Acceptable values are -999999999 to 999999999, inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"zipFilename": {
+"description": "File name of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.",
+"type": "string"
+},
+"zipFilesize": {
+"description": "Size of zip file. This is a read-only field. Applicable to the following creative types: HTML5_BANNER.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeAssetId": {
+"description": "Creative Asset ID.",
+"id": "CreativeAssetId",
+"properties": {
+"name": {
+"description": "Name of the creative asset. This is a required field while inserting an asset. After insertion, this assetIdentifier is used to identify the uploaded asset. Characters in the name must be alphanumeric or one of the following: \".-_ \". Spaces are allowed.",
+"type": "string"
+},
+"type": {
+"description": "Type of asset to upload. This is a required field. FLASH and IMAGE are no longer supported for new uploads. All image assets should use HTML_IMAGE.",
+"enum": [
+"IMAGE",
+"FLASH",
+"VIDEO",
+"HTML",
+"HTML_IMAGE",
+"AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeAssetMetadata": {
+"description": "CreativeAssets contains properties of a creative asset file which will be uploaded or has already been uploaded. Refer to the creative sample code for how to upload assets and insert a creative.",
+"id": "CreativeAssetMetadata",
+"properties": {
+"assetIdentifier": {
+"$ref": "CreativeAssetId",
+"description": "ID of the creative asset. This is a required field."
+},
+"clickTags": {
+"description": "List of detected click tags for assets. This is a read-only, auto-generated field. This field is empty for a rich media asset.",
+"items": {
+"$ref": "ClickTag"
+},
+"type": "array"
+},
+"counterCustomEvents": {
+"description": "List of counter events configured for the asset. This is a read-only, auto-generated field and only applicable to a rich media asset.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"detectedFeatures": {
+"description": "List of feature dependencies for the creative asset that are detected by Campaign Manager. Feature dependencies are features that a browser must be able to support in order to render your HTML5 creative correctly. This is a read-only, auto-generated field.",
+"items": {
+"enum": [
+"CSS_FONT_FACE",
+"CSS_BACKGROUND_SIZE",
+"CSS_BORDER_IMAGE",
+"CSS_BORDER_RADIUS",
+"CSS_BOX_SHADOW",
+"CSS_FLEX_BOX",
+"CSS_HSLA",
+"CSS_MULTIPLE_BGS",
+"CSS_OPACITY",
+"CSS_RGBA",
+"CSS_TEXT_SHADOW",
+"CSS_ANIMATIONS",
+"CSS_COLUMNS",
+"CSS_GENERATED_CONTENT",
+"CSS_GRADIENTS",
+"CSS_REFLECTIONS",
+"CSS_TRANSFORMS",
+"CSS_TRANSFORMS3D",
+"CSS_TRANSITIONS",
+"APPLICATION_CACHE",
+"CANVAS",
+"CANVAS_TEXT",
+"DRAG_AND_DROP",
+"HASH_CHANGE",
+"HISTORY",
+"AUDIO",
+"VIDEO",
+"INDEXED_DB",
+"INPUT_ATTR_AUTOCOMPLETE",
+"INPUT_ATTR_AUTOFOCUS",
+"INPUT_ATTR_LIST",
+"INPUT_ATTR_PLACEHOLDER",
+"INPUT_ATTR_MAX",
+"INPUT_ATTR_MIN",
+"INPUT_ATTR_MULTIPLE",
+"INPUT_ATTR_PATTERN",
+"INPUT_ATTR_REQUIRED",
+"INPUT_ATTR_STEP",
+"INPUT_TYPE_SEARCH",
+"INPUT_TYPE_TEL",
+"INPUT_TYPE_URL",
+"INPUT_TYPE_EMAIL",
+"INPUT_TYPE_DATETIME",
+"INPUT_TYPE_DATE",
+"INPUT_TYPE_MONTH",
+"INPUT_TYPE_WEEK",
+"INPUT_TYPE_TIME",
+"INPUT_TYPE_DATETIME_LOCAL",
+"INPUT_TYPE_NUMBER",
+"INPUT_TYPE_RANGE",
+"INPUT_TYPE_COLOR",
+"LOCAL_STORAGE",
+"POST_MESSAGE",
+"SESSION_STORAGE",
+"WEB_SOCKETS",
+"WEB_SQL_DATABASE",
+"WEB_WORKERS",
+"GEO_LOCATION",
+"INLINE_SVG",
+"SMIL",
+"SVG_HREF",
+"SVG_CLIP_PATHS",
+"TOUCH",
+"WEBGL",
+"SVG_FILTERS",
+"SVG_FE_IMAGE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"POST_MESSAGE always required due to html5 implementation.",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"exitCustomEvents": {
+"description": "List of exit events configured for the asset. This is a read-only, auto-generated field and only applicable to a rich media asset.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"id": {
+"description": "Numeric ID of the asset. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the numeric ID of the asset. This is a read-only, auto-generated field."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeAssetMetadata\".",
+"type": "string"
+},
+"richMedia": {
+"description": "True if the uploaded asset is a rich media asset. This is a read-only, auto-generated field.",
+"type": "boolean"
+},
+"timerCustomEvents": {
+"description": "List of timer events configured for the asset. This is a read-only, auto-generated field and only applicable to a rich media asset.",
+"items": {
+"$ref": "CreativeCustomEvent"
+},
+"type": "array"
+},
+"warnedValidationRules": {
+"description": "Rules validated during code generation that generated a warning. This is a read-only, auto-generated field. Possible values are: - \"ADMOB_REFERENCED\" - \"ASSET_FORMAT_UNSUPPORTED_DCM\" - \"ASSET_INVALID\" - \"CLICK_TAG_HARD_CODED\" - \"CLICK_TAG_INVALID\" - \"CLICK_TAG_IN_GWD\" - \"CLICK_TAG_MISSING\" - \"CLICK_TAG_MORE_THAN_ONE\" - \"CLICK_TAG_NON_TOP_LEVEL\" - \"COMPONENT_UNSUPPORTED_DCM\" - \"ENABLER_UNSUPPORTED_METHOD_DCM\" - \"EXTERNAL_FILE_REFERENCED\" - \"FILE_DETAIL_EMPTY\" - \"FILE_TYPE_INVALID\" - \"GWD_PROPERTIES_INVALID\" - \"HTML5_FEATURE_UNSUPPORTED\" - \"LINKED_FILE_NOT_FOUND\" - \"MAX_FLASH_VERSION_11\" - \"MRAID_REFERENCED\" - \"NOT_SSL_COMPLIANT\" - \"ORPHANED_ASSET\" - \"PRIMARY_HTML_MISSING\" - \"SVG_INVALID\" - \"ZIP_INVALID\" ",
+"items": {
+"enum": [
+"CLICK_TAG_NON_TOP_LEVEL",
+"CLICK_TAG_MISSING",
+"CLICK_TAG_MORE_THAN_ONE",
+"CLICK_TAG_INVALID",
+"ORPHANED_ASSET",
+"PRIMARY_HTML_MISSING",
+"EXTERNAL_FILE_REFERENCED",
+"MRAID_REFERENCED",
+"ADMOB_REFERENCED",
+"FILE_TYPE_INVALID",
+"ZIP_INVALID",
+"LINKED_FILE_NOT_FOUND",
+"MAX_FLASH_VERSION_11",
+"NOT_SSL_COMPLIANT",
+"FILE_DETAIL_EMPTY",
+"ASSET_INVALID",
+"GWD_PROPERTIES_INVALID",
+"ENABLER_UNSUPPORTED_METHOD_DCM",
+"ASSET_FORMAT_UNSUPPORTED_DCM",
+"COMPONENT_UNSUPPORTED_DCM",
+"HTML5_FEATURE_UNSUPPORTED",
+"CLICK_TAG_IN_GWD",
+"CLICK_TAG_HARD_CODED",
+"SVG_INVALID",
+"CLICK_TAG_IN_RICH_MEDIA",
+"MISSING_ENABLER_REFERENCE"
+],
+"enumDescriptions": [
+"Click tag initialization detected but not at the top level of the primary html file.",
+"No click tag detected.",
+"More than one click tag detected.",
+"Click tag invalid (failed url validation).",
+"Orphaned asset not referenced.",
+"Primary html file missing.",
+"Reference to a third-party resource.",
+"Reference to INAPP MRAID feature.",
+"Reference to INAPP ADMOB feature.",
+"Invalid file type referenced.",
+"Invalid zip passed in",
+"A relative file was linked to that wasn't included in zip.",
+"Max flash version at 11.",
+"Whether the asset uses secure urls or not.",
+"File detail empty.",
+"Asset is not valid and could not be processed.",
+"GWD properties are invalid.",
+"Unsupported Enabler methods in DCM.",
+"Asset ad format is unsupported in DCM.",
+"Component is unsupported in DCM.",
+"Html5 feature is unsupported.",
+"Click tag defined in GWD asset. GWD-published creatives should use exit events instead of defining var clickTag. Defined var clickTags are a symptom of an unsupported workflow, and an error should be thrown.",
+"Whether the asset has hard coded click tag url(s).",
+"Whether an SVG block could not be parsed.",
+"Click tag defined in rich media asset. Rich media creatives should use exit events instead of defining var clickTag. Defined var clickTags are a symptom of an unsupported workflow, and an error should be thrown.",
+"Rich media primary asset is missing the Enabler reference."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CreativeAssetSelection": {
+"description": "Encapsulates the list of rules for asset selection and a default asset in case none of the rules match. Applicable to INSTREAM_VIDEO creatives.",
+"id": "CreativeAssetSelection",
+"properties": {
+"defaultAssetId": {
+"description": "A creativeAssets[].id. This should refer to one of the parent assets in this creative, and will be served if none of the rules match. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"rules": {
+"description": "Rules determine which asset will be served to a viewer. Rules will be evaluated in the order in which they are stored in this list. This list must contain at least one rule. Applicable to INSTREAM_VIDEO creatives.",
+"items": {
+"$ref": "Rule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CreativeAssignment": {
+"description": "Creative Assignment.",
+"id": "CreativeAssignment",
+"properties": {
+"active": {
+"description": "Whether this creative assignment is active. When true, the creative will be included in the ad's rotation.",
+"type": "boolean"
+},
+"applyEventTags": {
+"description": "Whether applicable event tags should fire when this creative assignment is rendered. If this value is unset when the ad is inserted or updated, it will default to true for all creative types EXCEPT for INTERNAL_REDIRECT, INTERSTITIAL_INTERNAL_REDIRECT, and INSTREAM_VIDEO.",
+"type": "boolean"
+},
+"clickThroughUrl": {
+"$ref": "ClickThroughUrl",
+"description": "Click-through URL of the creative assignment."
+},
+"companionCreativeOverrides": {
+"description": "Companion creative overrides for this creative assignment. Applicable to video ads.",
+"items": {
+"$ref": "CompanionClickThroughOverride"
+},
+"type": "array"
+},
+"creativeGroupAssignments": {
+"description": "Creative group assignments for this creative assignment. Only one assignment per creative group number is allowed for a maximum of two assignments.",
+"items": {
+"$ref": "CreativeGroupAssignment"
+},
+"type": "array"
+},
+"creativeId": {
+"description": "ID of the creative to be assigned. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"creativeIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the creative. This is a read-only, auto-generated field."
+},
+"endTime": {
+"format": "date-time",
+"type": "string"
+},
+"richMediaExitOverrides": {
+"description": "Rich media exit overrides for this creative assignment. Applicable when the creative type is any of the following: - DISPLAY - RICH_MEDIA_INPAGE - RICH_MEDIA_INPAGE_FLOATING - RICH_MEDIA_IM_EXPAND - RICH_MEDIA_EXPANDING - RICH_MEDIA_INTERSTITIAL_FLOAT - RICH_MEDIA_MOBILE_IN_APP - RICH_MEDIA_MULTI_FLOATING - RICH_MEDIA_PEEL_DOWN - VPAID_LINEAR - VPAID_NON_LINEAR ",
+"items": {
+"$ref": "RichMediaExitOverride"
+},
+"type": "array"
+},
+"sequence": {
+"description": "Sequence number of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_SEQUENTIAL. Acceptable values are 1 to 65535, inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"sslCompliant": {
+"description": "Whether the creative to be assigned is SSL-compliant. This is a read-only field that is auto-generated when the ad is inserted or updated.",
+"type": "boolean"
+},
+"startTime": {
+"format": "date-time",
+"type": "string"
+},
+"weight": {
+"description": "Weight of the creative assignment, applicable when the rotation type is CREATIVE_ROTATION_TYPE_RANDOM. Value must be greater than or equal to 1.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"CreativeClickThroughUrl": {
+"description": "Click-through URL",
+"id": "CreativeClickThroughUrl",
+"properties": {
+"computedClickThroughUrl": {
+"description": "Read-only convenience field representing the actual URL that will be used for this click-through. The URL is computed as follows: - If landingPageId is specified then that landing page's URL is assigned to this field. - Otherwise, the customClickThroughUrl is assigned to this field. ",
+"type": "string"
+},
+"customClickThroughUrl": {
+"description": "Custom click-through URL. Applicable if the landingPageId field is left unset.",
+"type": "string"
+},
+"landingPageId": {
+"description": "ID of the landing page for the click-through URL.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeCustomEvent": {
+"description": "Creative Custom Event.",
+"id": "CreativeCustomEvent",
+"properties": {
+"advertiserCustomEventId": {
+"description": "Unique ID of this event used by Reporting and Data Transfer. This is a read-only field.",
+"format": "int64",
+"type": "string"
+},
+"advertiserCustomEventName": {
+"description": "User-entered name for the event.",
+"type": "string"
+},
+"advertiserCustomEventType": {
+"description": "Type of the event. This is a read-only field.",
+"enum": [
+"ADVERTISER_EVENT_TIMER",
+"ADVERTISER_EVENT_EXIT",
+"ADVERTISER_EVENT_COUNTER"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"artworkLabel": {
+"description": "Artwork label column, used to link events in Campaign Manager back to events in Studio. This is a required field and should not be modified after insertion.",
+"type": "string"
+},
+"artworkType": {
+"description": "Artwork type used by the creative.This is a read-only field.",
+"enum": [
+"ARTWORK_TYPE_FLASH",
+"ARTWORK_TYPE_HTML5",
+"ARTWORK_TYPE_MIXED",
+"ARTWORK_TYPE_IMAGE"
+],
+"enumDescriptions": [
+"The creative is a Flash creative.",
+"The creative is HTML5.",
+"The creative is HTML5 if available, Flash otherwise.",
+"The creative is Image."
+],
+"type": "string"
+},
+"exitClickThroughUrl": {
+"$ref": "CreativeClickThroughUrl",
+"description": "Exit click-through URL for the event. This field is used only for exit events."
+},
+"id": {
+"description": "ID of this event. This is a required field and should not be modified after insertion.",
+"format": "int64",
+"type": "string"
+},
+"popupWindowProperties": {
+"$ref": "PopupWindowProperties",
+"description": "Properties for rich media popup windows. This field is used only for exit events."
+},
+"targetType": {
+"description": "Target type used by the event.",
+"enum": [
+"TARGET_BLANK",
+"TARGET_TOP",
+"TARGET_SELF",
+"TARGET_PARENT",
+"TARGET_POPUP"
+],
+"enumDescriptions": [
+"New tab",
+"Current tab",
+"Same frame",
+"Parent frame",
+"New window with properties specified in window_properties"
+],
+"type": "string"
+},
+"videoReportingId": {
+"description": "Video reporting ID, used to differentiate multiple videos in a single creative. This is a read-only field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeField": {
+"description": "Contains properties of a creative field.",
+"id": "CreativeField",
+"properties": {
+"accountId": {
+"description": "Account ID of this creative field. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this creative field. This is a required field on insertion.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"id": {
+"description": "ID of this creative field. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeField\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this creative field. This is a required field and must be less than 256 characters long and unique among creative fields of the same advertiser.",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this creative field. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeFieldAssignment": {
+"description": "Creative Field Assignment.",
+"id": "CreativeFieldAssignment",
+"properties": {
+"creativeFieldId": {
+"description": "ID of the creative field.",
+"format": "int64",
+"type": "string"
+},
+"creativeFieldValueId": {
+"description": "ID of the creative field value.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeFieldValue": {
+"description": "Contains properties of a creative field value.",
+"id": "CreativeFieldValue",
+"properties": {
+"id": {
+"description": "ID of this creative field value. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeFieldValue\".",
+"type": "string"
+},
+"value": {
+"description": "Value of this creative field value. It needs to be less than 256 characters in length and unique per creative field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeFieldValuesListResponse": {
+"description": "Creative Field Value List Response",
+"id": "CreativeFieldValuesListResponse",
+"properties": {
+"creativeFieldValues": {
+"description": "Creative field value collection.",
+"items": {
+"$ref": "CreativeFieldValue"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeFieldValuesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeFieldsListResponse": {
+"description": "Creative Field List Response",
+"id": "CreativeFieldsListResponse",
+"properties": {
+"creativeFields": {
+"description": "Creative field collection.",
+"items": {
+"$ref": "CreativeField"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeFieldsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeGroup": {
+"description": "Contains properties of a creative group.",
+"id": "CreativeGroup",
+"properties": {
+"accountId": {
+"description": "Account ID of this creative group. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this creative group. This is a required field on insertion.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"groupNumber": {
+"description": "Subgroup of the creative group. Assign your creative groups to a subgroup in order to filter or manage them more easily. This field is required on insertion and is read-only after insertion. Acceptable values are 1 to 2, inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"id": {
+"description": "ID of this creative group. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeGroup\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this creative group. This is a required field and must be less than 256 characters long and unique among creative groups of the same advertiser.",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this creative group. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeGroupAssignment": {
+"description": "Creative Group Assignment.",
+"id": "CreativeGroupAssignment",
+"properties": {
+"creativeGroupId": {
+"description": "ID of the creative group to be assigned.",
+"format": "int64",
+"type": "string"
+},
+"creativeGroupNumber": {
+"description": "Creative group number of the creative group assignment.",
+"enum": [
+"CREATIVE_GROUP_ONE",
+"CREATIVE_GROUP_TWO"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeGroupsListResponse": {
+"description": "Creative Group List Response",
+"id": "CreativeGroupsListResponse",
+"properties": {
+"creativeGroups": {
+"description": "Creative group collection.",
+"items": {
+"$ref": "CreativeGroup"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativeGroupsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeOptimizationConfiguration": {
+"description": "Creative optimization settings.",
+"id": "CreativeOptimizationConfiguration",
+"properties": {
+"id": {
+"description": "ID of this creative optimization config. This field is auto-generated when the campaign is inserted or updated. It can be null for existing campaigns.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of this creative optimization config. This is a required field and must be less than 129 characters long.",
+"type": "string"
+},
+"optimizationActivitys": {
+"description": "List of optimization activities associated with this configuration.",
+"items": {
+"$ref": "OptimizationActivity"
+},
+"type": "array"
+},
+"optimizationModel": {
+"description": "Optimization model for this configuration.",
+"enum": [
+"CLICK",
+"POST_CLICK",
+"POST_IMPRESSION",
+"POST_CLICK_AND_IMPRESSION",
+"VIDEO_COMPLETION"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativeRotation": {
+"description": "Creative Rotation.",
+"id": "CreativeRotation",
+"properties": {
+"creativeAssignments": {
+"description": "Creative assignments in this creative rotation.",
+"items": {
+"$ref": "CreativeAssignment"
+},
+"type": "array"
+},
+"creativeOptimizationConfigurationId": {
+"description": "Creative optimization configuration that is used by this ad. It should refer to one of the existing optimization configurations in the ad's campaign. If it is unset or set to 0, then the campaign's default optimization configuration will be used for this ad.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "Type of creative rotation. Can be used to specify whether to use sequential or random rotation.",
+"enum": [
+"CREATIVE_ROTATION_TYPE_SEQUENTIAL",
+"CREATIVE_ROTATION_TYPE_RANDOM"
+],
+"enumDescriptions": [
+"The weights of each creative in the rotation should be sequential starting at 1. The user may adjust the order.",
+"The weights are calculated according to the ad's CreativeRoationWeightStrategy."
+],
+"type": "string"
+},
+"weightCalculationStrategy": {
+"description": "Strategy for calculating weights. Used with CREATIVE_ROTATION_TYPE_RANDOM.",
+"enum": [
+"WEIGHT_STRATEGY_EQUAL",
+"WEIGHT_STRATEGY_CUSTOM",
+"WEIGHT_STRATEGY_HIGHEST_CTR",
+"WEIGHT_STRATEGY_OPTIMIZED"
+],
+"enumDescriptions": [
+"The creative weights should all be equal to 1. This is the default value for all ads with a rotation type of Random.",
+"The creative weights can be any user provided positive integer.",
+"The weights will be automatically calculated giving preference to the creative that has the highest CTR. The CTR for campaigns that are optimized for clicks = clicks/impressions. The CTR for campaigns that are optimized for view-through or click through is sum(activities + floodlight weight)/impressions.",
+"The creative weights will be automatically calculated using a formula that could not possibly be explained in these comments. The value will be within some predetermined range (probably 0 - 1,000,000)."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreativesListResponse": {
+"description": "Creative List Response",
+"id": "CreativesListResponse",
+"properties": {
+"creatives": {
+"description": "Creative collection.",
+"items": {
+"$ref": "Creative"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#creativesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CrossDimensionReachReportCompatibleFields": {
+"description": "Represents fields that are compatible to be selected for a report of type \"CROSS_DIMENSION_REACH\".",
+"id": "CrossDimensionReachReportCompatibleFields",
+"properties": {
+"breakdown": {
+"description": "Dimensions which are compatible to be selected in the \"breakdown\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"dimensionFilters": {
+"description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#crossDimensionReachReportCompatibleFields.",
+"type": "string"
+},
+"metrics": {
+"description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+},
+"overlapMetrics": {
+"description": "Metrics which are compatible to be selected in the \"overlapMetricNames\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CrossMediaReachReportCompatibleFields": {
+"description": "Represents fields that are compatible to be selected for a report of type \"CROSS_MEDIA_REACH\".",
+"id": "CrossMediaReachReportCompatibleFields",
+"properties": {
+"dimensionFilters": {
+"description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"dimensions": {
+"description": "Dimensions which are compatible to be selected in the \"dimensions\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#crossMediaReachReportCompatibleFields.",
+"type": "string"
+},
+"metrics": {
+"description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CustomFloodlightVariable": {
+"description": "A custom floodlight variable. This field may only be used when calling batchinsert; it is not supported by batchupdate.",
+"id": "CustomFloodlightVariable",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#customFloodlightVariable\".",
+"type": "string"
+},
+"type": {
+"description": "The type of custom floodlight variable to supply a value for. These map to the \"u[1-100]=\" in the tags.",
+"enum": [
+"U1",
+"U2",
+"U3",
+"U4",
+"U5",
+"U6",
+"U7",
+"U8",
+"U9",
+"U10",
+"U11",
+"U12",
+"U13",
+"U14",
+"U15",
+"U16",
+"U17",
+"U18",
+"U19",
+"U20",
+"U21",
+"U22",
+"U23",
+"U24",
+"U25",
+"U26",
+"U27",
+"U28",
+"U29",
+"U30",
+"U31",
+"U32",
+"U33",
+"U34",
+"U35",
+"U36",
+"U37",
+"U38",
+"U39",
+"U40",
+"U41",
+"U42",
+"U43",
+"U44",
+"U45",
+"U46",
+"U47",
+"U48",
+"U49",
+"U50",
+"U51",
+"U52",
+"U53",
+"U54",
+"U55",
+"U56",
+"U57",
+"U58",
+"U59",
+"U60",
+"U61",
+"U62",
+"U63",
+"U64",
+"U65",
+"U66",
+"U67",
+"U68",
+"U69",
+"U70",
+"U71",
+"U72",
+"U73",
+"U74",
+"U75",
+"U76",
+"U77",
+"U78",
+"U79",
+"U80",
+"U81",
+"U82",
+"U83",
+"U84",
+"U85",
+"U86",
+"U87",
+"U88",
+"U89",
+"U90",
+"U91",
+"U92",
+"U93",
+"U94",
+"U95",
+"U96",
+"U97",
+"U98",
+"U99",
+"U100"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"value": {
+"description": "The value of the custom floodlight variable. The length of string must not exceed 100 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CustomRichMediaEvents": {
+"description": "Represents a Custom Rich Media Events group.",
+"id": "CustomRichMediaEvents",
+"properties": {
+"filteredEventIds": {
+"description": "List of custom rich media event IDs. Dimension values must be all of type dfa:richMediaEventTypeIdAndName.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#customRichMediaEvents.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CustomViewabilityMetric": {
+"description": "Custom Viewability Metric",
+"id": "CustomViewabilityMetric",
+"properties": {
+"configuration": {
+"$ref": "CustomViewabilityMetricConfiguration",
+"description": "Configuration of the custom viewability metric."
+},
+"id": {
+"description": "ID of the custom viewability metric.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of the custom viewability metric.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CustomViewabilityMetricConfiguration": {
+"description": "The attributes, like playtime and percent onscreen, that define the Custom Viewability Metric.",
+"id": "CustomViewabilityMetricConfiguration",
+"properties": {
+"audible": {
+"description": "Whether the video must be audible to count an impression.",
+"type": "boolean"
+},
+"timeMillis": {
+"description": "The time in milliseconds the video must play for the Custom Viewability Metric to count an impression. If both this and timePercent are specified, the earlier of the two will be used.",
+"format": "int32",
+"type": "integer"
+},
+"timePercent": {
+"description": "The percentage of video that must play for the Custom Viewability Metric to count an impression. If both this and timeMillis are specified, the earlier of the two will be used.",
+"format": "int32",
+"type": "integer"
+},
+"viewabilityPercent": {
+"description": "The percentage of video that must be on screen for the Custom Viewability Metric to count an impression.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"DateRange": {
+"description": "Represents a date range.",
+"id": "DateRange",
+"properties": {
+"endDate": {
+"format": "date",
+"type": "string"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#dateRange.",
+"type": "string"
+},
+"relativeDateRange": {
+"description": "The date range relative to the date of when the report is run.",
+"enum": [
+"TODAY",
+"YESTERDAY",
+"WEEK_TO_DATE",
+"MONTH_TO_DATE",
+"QUARTER_TO_DATE",
+"YEAR_TO_DATE",
+"PREVIOUS_WEEK",
+"PREVIOUS_MONTH",
+"PREVIOUS_QUARTER",
+"PREVIOUS_YEAR",
+"LAST_7_DAYS",
+"LAST_30_DAYS",
+"LAST_90_DAYS",
+"LAST_365_DAYS",
+"LAST_24_MONTHS",
+"LAST_14_DAYS",
+"LAST_60_DAYS"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DayPartTargeting": {
+"description": "Day Part Targeting.",
+"id": "DayPartTargeting",
+"properties": {
+"daysOfWeek": {
+"description": "Days of the week when the ad will serve. Acceptable values are: - \"SUNDAY\" - \"MONDAY\" - \"TUESDAY\" - \"WEDNESDAY\" - \"THURSDAY\" - \"FRIDAY\" - \"SATURDAY\" ",
+"items": {
+"enum": [
+"SUNDAY",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"hoursOfDay": {
+"description": "Hours of the day when the ad will serve, where 0 is midnight to 1 AM and 23 is 11 PM to midnight. Can be specified with days of week, in which case the ad would serve during these hours on the specified days. For example if Monday, Wednesday, Friday are the days of week specified and 9-10am, 3-5pm (hours 9, 15, and 16) is specified, the ad would serve Monday, Wednesdays, and Fridays at 9-10am and 3-5pm. Acceptable values are 0 to 23, inclusive.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"userLocalTime": {
+"description": "Whether or not to use the user's local time. If false, the America/New York time zone applies.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"DeepLink": {
+"description": "Contains information about a landing page deep link.",
+"id": "DeepLink",
+"properties": {
+"appUrl": {
+"description": "The URL of the mobile app being linked to.",
+"type": "string"
+},
+"fallbackUrl": {
+"description": "The fallback URL. This URL will be served to users who do not have the mobile app installed.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#deepLink\".",
+"type": "string"
+},
+"mobileApp": {
+"$ref": "MobileApp",
+"description": "The mobile app targeted by this deep link."
+},
+"remarketingListIds": {
+"description": "Ads served to users on these remarketing lists will use this deep link. Applicable when mobileApp.directory is APPLE_APP_STORE.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"DefaultClickThroughEventTagProperties": {
+"description": "Properties of inheriting and overriding the default click-through event tag. A campaign may override the event tag defined at the advertiser level, and an ad may also override the campaign's setting further.",
+"id": "DefaultClickThroughEventTagProperties",
+"properties": {
+"defaultClickThroughEventTagId": {
+"description": "ID of the click-through event tag to apply to all ads in this entity's scope.",
+"format": "int64",
+"type": "string"
+},
+"overrideInheritedEventTag": {
+"description": "Whether this entity should override the inherited default click-through event tag with its own defined value.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"DeliverySchedule": {
+"description": "Delivery Schedule.",
+"id": "DeliverySchedule",
+"properties": {
+"frequencyCap": {
+"$ref": "FrequencyCap",
+"description": "Limit on the number of times an individual user can be served the ad within a specified period of time."
+},
+"hardCutoff": {
+"description": "Whether or not hard cutoff is enabled. If true, the ad will not serve after the end date and time. Otherwise the ad will continue to be served until it has reached its delivery goals.",
+"type": "boolean"
+},
+"impressionRatio": {
+"description": "Impression ratio for this ad. This ratio determines how often each ad is served relative to the others. For example, if ad A has an impression ratio of 1 and ad B has an impression ratio of 3, then Campaign Manager will serve ad B three times as often as ad A. Acceptable values are 1 to 10, inclusive.",
+"format": "int64",
+"type": "string"
+},
+"priority": {
+"description": "Serving priority of an ad, with respect to other ads. The lower the priority number, the greater the priority with which it is served.",
+"enum": [
+"AD_PRIORITY_01",
+"AD_PRIORITY_02",
+"AD_PRIORITY_03",
+"AD_PRIORITY_04",
+"AD_PRIORITY_05",
+"AD_PRIORITY_06",
+"AD_PRIORITY_07",
+"AD_PRIORITY_08",
+"AD_PRIORITY_09",
+"AD_PRIORITY_10",
+"AD_PRIORITY_11",
+"AD_PRIORITY_12",
+"AD_PRIORITY_13",
+"AD_PRIORITY_14",
+"AD_PRIORITY_15",
+"AD_PRIORITY_16"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"DfpSettings": {
+"description": "Google Ad Manager Settings",
+"id": "DfpSettings",
+"properties": {
+"dfpNetworkCode": {
+"description": "Ad Manager network code for this directory site.",
+"type": "string"
+},
+"dfpNetworkName": {
+"description": "Ad Manager network name for this directory site.",
+"type": "string"
+},
+"programmaticPlacementAccepted": {
+"description": "Whether this directory site accepts programmatic placements.",
+"type": "boolean"
+},
+"pubPaidPlacementAccepted": {
+"description": "Whether this directory site accepts publisher-paid tags.",
+"type": "boolean"
+},
+"publisherPortalOnly": {
+"description": "Whether this directory site is available only via Publisher Portal.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Dimension": {
+"description": "Represents a dimension.",
+"id": "Dimension",
+"properties": {
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#dimension.",
+"type": "string"
+},
+"name": {
+"description": "The dimension name, e.g. advertiser",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DimensionFilter": {
+"description": "Represents a dimension filter.",
+"id": "DimensionFilter",
+"properties": {
+"dimensionName": {
+"description": "The name of the dimension to filter.",
+"type": "string"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#dimensionFilter.",
+"type": "string"
+},
+"value": {
+"description": "The value of the dimension to filter.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DimensionValue": {
+"description": "Represents a DimensionValue resource.",
+"id": "DimensionValue",
+"properties": {
+"dimensionName": {
+"description": "The name of the dimension.",
+"type": "string"
+},
+"etag": {
+"description": "The eTag of this response for caching purposes.",
+"type": "string"
+},
+"id": {
+"description": "The ID associated with the value if available.",
+"type": "string"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#dimensionValue.",
+"type": "string"
+},
+"matchType": {
+"description": "Determines how the 'value' field is matched when filtering. If not specified, defaults to EXACT. If set to WILDCARD_EXPRESSION, '*' is allowed as a placeholder for variable length character sequences, and it can be escaped with a backslash. Note, only paid search dimensions ('dfa:paidSearch*') allow a matchType other than EXACT.",
+"enum": [
+"EXACT",
+"BEGINS_WITH",
+"CONTAINS",
+"WILDCARD_EXPRESSION"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"value": {
+"description": "The value of the dimension.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DimensionValueList": {
+"description": "Represents the list of DimensionValue resources.",
+"id": "DimensionValueList",
+"properties": {
+"etag": {
+"description": "The eTag of this response for caching purposes.",
+"type": "string"
+},
+"items": {
+"description": "The dimension values returned in this response.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of list this is, in this case dfareporting#dimensionValueList.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Continuation token used to page through dimension values. To retrieve the next page of results, set the next request's \"pageToken\" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DimensionValueRequest": {
+"description": "Represents a DimensionValuesRequest.",
+"id": "DimensionValueRequest",
+"properties": {
+"dimensionName": {
+"description": "The name of the dimension for which values should be requested.",
+"type": "string"
+},
+"endDate": {
+"format": "date",
+"type": "string"
+},
+"filters": {
+"description": "The list of filters by which to filter values. The filters are ANDed.",
+"items": {
+"$ref": "DimensionFilter"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of request this is, in this case dfareporting#dimensionValueRequest .",
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DirectorySite": {
+"description": "DirectorySites contains properties of a website from the Site Directory. Sites need to be added to an account via the Sites resource before they can be assigned to a placement.",
+"id": "DirectorySite",
+"properties": {
+"id": {
+"description": "ID of this directory site. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this directory site. This is a read-only, auto-generated field."
+},
+"inpageTagFormats": {
+"description": "Tag types for regular placements. Acceptable values are: - \"STANDARD\" - \"IFRAME_JAVASCRIPT_INPAGE\" - \"INTERNAL_REDIRECT_INPAGE\" - \"JAVASCRIPT_INPAGE\" ",
+"items": {
+"enum": [
+"STANDARD",
+"IFRAME_JAVASCRIPT_INPAGE",
+"INTERNAL_REDIRECT_INPAGE",
+"JAVASCRIPT_INPAGE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"interstitialTagFormats": {
+"description": "Tag types for interstitial placements. Acceptable values are: - \"IFRAME_JAVASCRIPT_INTERSTITIAL\" - \"INTERNAL_REDIRECT_INTERSTITIAL\" - \"JAVASCRIPT_INTERSTITIAL\" ",
+"items": {
+"enum": [
+"IFRAME_JAVASCRIPT_INTERSTITIAL",
+"INTERNAL_REDIRECT_INTERSTITIAL",
+"JAVASCRIPT_INTERSTITIAL"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#directorySite\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this directory site.",
+"type": "string"
+},
+"publisherSpecificationId": {
+"description": "Output only. Default publisher specification ID of video placements under this directory site. Possible values are: * `1`, Hulu * `2`, NBC * `3`, CBS * `4`, CBS Desktop * `5`, Discovery * `6`, VEVO HD * `7`, VEVO Vertical * `8`, Fox * `9`, CW Network * `10`, Disney * `11`, IGN * `12`, NFL.com * `13`, Turner Broadcasting * `14`, Tubi on Fox * `15`, Hearst Corporation * `16`, Twitch Desktop * `17`, ABC * `18`, Univision * `19`, MLB.com * `20`, MLB.com Mobile * `21`, MLB.com OTT * `22`, Polsat * `23`, TVN * `24`, Mediaset * `25`, Antena 3 * `26`, Mediamond * `27`, Sky Italia * `28`, Tubi on CBS * `29`, Spotify * `30`, Paramount * `31`, Max",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"settings": {
+"$ref": "DirectorySiteSettings",
+"description": "Directory site settings."
+},
+"url": {
+"description": "URL of this directory site.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DirectorySiteSettings": {
+"description": "Directory Site Settings",
+"id": "DirectorySiteSettings",
+"properties": {
+"activeViewOptOut": {
+"description": "Whether this directory site has disabled active view creatives.",
+"type": "boolean"
+},
+"dfpSettings": {
+"$ref": "DfpSettings",
+"description": "Directory site Ad Manager settings."
+},
+"instreamVideoPlacementAccepted": {
+"description": "Whether this site accepts in-stream video ads.",
+"type": "boolean"
+},
+"interstitialPlacementAccepted": {
+"description": "Whether this site accepts interstitial ads.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"DirectorySitesListResponse": {
+"description": "Directory Site List Response",
+"id": "DirectorySitesListResponse",
+"properties": {
+"directorySites": {
+"description": "Directory site collection.",
+"items": {
+"$ref": "DirectorySite"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#directorySitesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DynamicTargetingKey": {
+"description": "Contains properties of a dynamic targeting key. Dynamic targeting keys are unique, user-friendly labels, created at the advertiser level in DCM, that can be assigned to ads, creatives, and placements and used for targeting with Studio dynamic creatives. Use these labels instead of numeric Campaign Manager IDs (such as placement IDs) to save time and avoid errors in your dynamic feeds.",
+"id": "DynamicTargetingKey",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#dynamicTargetingKey\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this dynamic targeting key. This is a required field. Must be less than 256 characters long and cannot contain commas. All characters are converted to lowercase.",
+"type": "string"
+},
+"objectId": {
+"description": "ID of the object of this dynamic targeting key. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"objectType": {
+"description": "Type of the object of this dynamic targeting key. This is a required field.",
+"enum": [
+"OBJECT_ADVERTISER",
+"OBJECT_AD",
+"OBJECT_CREATIVE",
+"OBJECT_PLACEMENT"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"DynamicTargetingKeysListResponse": {
+"description": "Dynamic Targeting Key List Response",
+"id": "DynamicTargetingKeysListResponse",
+"properties": {
+"dynamicTargetingKeys": {
+"description": "Dynamic targeting key collection.",
+"items": {
+"$ref": "DynamicTargetingKey"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#dynamicTargetingKeysListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EncryptionInfo": {
+"description": "A description of how user IDs are encrypted.",
+"id": "EncryptionInfo",
+"properties": {
+"encryptionEntityId": {
+"description": "The encryption entity ID. This should match the encryption configuration for ad serving or Data Transfer.",
+"format": "int64",
+"type": "string"
+},
+"encryptionEntityType": {
+"description": "The encryption entity type. This should match the encryption configuration for ad serving or Data Transfer.",
+"enum": [
+"ENCRYPTION_ENTITY_TYPE_UNKNOWN",
+"DCM_ACCOUNT",
+"DCM_ADVERTISER",
+"DBM_PARTNER",
+"DBM_ADVERTISER",
+"ADWORDS_CUSTOMER",
+"DFP_NETWORK_CODE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"encryptionSource": {
+"description": "Describes whether the encrypted cookie was received from ad serving (the %m macro) or from Data Transfer.",
+"enum": [
+"ENCRYPTION_SCOPE_UNKNOWN",
+"AD_SERVING",
+"DATA_TRANSFER"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#encryptionInfo\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventTag": {
+"description": "Contains properties of an event tag.",
+"id": "EventTag",
+"properties": {
+"accountId": {
+"description": "Account ID of this event tag. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this event tag. This field or the campaignId field is required on insertion.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"campaignId": {
+"description": "Campaign ID of this event tag. This field or the advertiserId field is required on insertion.",
+"format": "int64",
+"type": "string"
+},
+"campaignIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the campaign. This is a read-only, auto-generated field."
+},
+"enabledByDefault": {
+"description": "Whether this event tag should be automatically enabled for all of the advertiser's campaigns and ads.",
+"type": "boolean"
+},
+"excludeFromAdxRequests": {
+"description": "Whether to remove this event tag from ads that are trafficked through Display & Video 360 to Ad Exchange. This may be useful if the event tag uses a pixel that is unapproved for Ad Exchange bids on one or more networks, such as the Google Display Network.",
+"type": "boolean"
+},
+"id": {
+"description": "ID of this event tag. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#eventTag\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this event tag. This is a required field and must be less than 256 characters long.",
+"type": "string"
+},
+"siteFilterType": {
+"description": "Site filter type for this event tag. If no type is specified then the event tag will be applied to all sites.",
+"enum": [
+"ALLOWLIST",
+"BLOCKLIST"
+],
+"enumDescriptions": [
+"The event tag should only ever fire on specified sites.",
+"The event tag should fire on all sites EXCEPT the specified sites."
+],
+"type": "string"
+},
+"siteIds": {
+"description": "Filter list of site IDs associated with this event tag. The siteFilterType determines whether this is a allowlist or blocklist filter.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"sslCompliant": {
+"description": "Whether this tag is SSL-compliant or not. This is a read-only field.",
+"type": "boolean"
+},
+"status": {
+"description": "Status of this event tag. Must be ENABLED for this event tag to fire. This is a required field.",
+"enum": [
+"ENABLED",
+"DISABLED"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this event tag. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "Event tag type. Can be used to specify whether to use a third-party pixel, a third-party JavaScript URL, or a third-party click-through URL for either impression or click tracking. This is a required field.",
+"enum": [
+"IMPRESSION_IMAGE_EVENT_TAG",
+"IMPRESSION_JAVASCRIPT_EVENT_TAG",
+"CLICK_THROUGH_EVENT_TAG"
+],
+"enumDescriptions": [
+"A third-party pixel for impression tracking.",
+"A third-party JavaScript URL for impression tracking.",
+"A third-party URL for click tracking that redirects to the landing page."
+],
+"type": "string"
+},
+"url": {
+"description": "Payload URL for this event tag. The URL on a click-through event tag should have a landing page URL appended to the end of it. This field is required on insertion.",
+"type": "string"
+},
+"urlEscapeLevels": {
+"description": "Number of times the landing page URL should be URL-escaped before being appended to the click-through event tag URL. Only applies to click-through event tags as specified by the event tag type.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"EventTagOverride": {
+"description": "Event tag override information.",
+"id": "EventTagOverride",
+"properties": {
+"enabled": {
+"description": "Whether this override is enabled.",
+"type": "boolean"
+},
+"id": {
+"description": "ID of this event tag override. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventTagsListResponse": {
+"description": "Event Tag List Response",
+"id": "EventTagsListResponse",
+"properties": {
+"eventTags": {
+"description": "Event tag collection.",
+"items": {
+"$ref": "EventTag"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#eventTagsListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"File": {
+"description": "Represents a File resource. A file contains the metadata for a report run. It shows the status of the run and holds the URLs to the generated report data if the run is finished and the status is \"REPORT_AVAILABLE\".",
+"id": "File",
+"properties": {
+"dateRange": {
+"$ref": "DateRange",
+"description": "The date range for which the file has report data. The date range will always be the absolute date range for which the report is run."
+},
+"etag": {
+"description": "Etag of this resource.",
+"type": "string"
+},
+"fileName": {
+"description": "The filename of the file.",
+"type": "string"
+},
+"format": {
+"description": "The output format of the report. Only available once the file is available.",
+"enum": [
+"CSV",
+"EXCEL"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"id": {
+"description": "The unique ID of this report file.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#file\".",
+"type": "string"
+},
+"lastModifiedTime": {
+"description": "The timestamp in milliseconds since epoch when this file was last modified.",
+"format": "int64",
+"type": "string"
+},
+"reportId": {
+"description": "The ID of the report this file was generated from.",
+"format": "int64",
+"type": "string"
+},
+"status": {
+"description": "The status of the report file.",
+"enum": [
+"PROCESSING",
+"REPORT_AVAILABLE",
+"FAILED",
+"CANCELLED",
+"QUEUED"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"urls": {
+"description": "The URLs where the completed report file can be downloaded.",
+"properties": {
+"apiUrl": {
+"description": "The URL for downloading the report data through the API.",
+"type": "string"
+},
+"browserUrl": {
+"description": "The URL for downloading the report data through a browser.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"FileList": {
+"description": "List of files for a report.",
+"id": "FileList",
+"properties": {
+"etag": {
+"description": "Etag of this resource.",
+"type": "string"
+},
+"items": {
+"description": "The files returned in this response.",
+"items": {
+"$ref": "File"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#fileList\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Continuation token used to page through files. To retrieve the next page of results, set the next request's \"pageToken\" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Flight": {
+"description": "Flight",
+"id": "Flight",
+"properties": {
+"endDate": {
+"format": "date",
+"type": "string"
+},
+"rateOrCost": {
+"description": "Rate or cost of this flight.",
+"format": "int64",
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+},
+"units": {
+"description": "Units of this flight.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FloodlightActivitiesGenerateTagResponse": {
+"description": "Floodlight Activity GenerateTag Response",
+"id": "FloodlightActivitiesGenerateTagResponse",
+"properties": {
+"floodlightActivityTag": {
+"description": "Generated tag for this Floodlight activity. For Google tags, this is the event snippet.",
+"type": "string"
+},
+"globalSiteTagGlobalSnippet": {
+"description": "The global snippet section of a Google tag. The Google tag sets new cookies on your domain, which will store a unique identifier for a user or the ad click that brought the user to your site. Learn more.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivitiesGenerateTagResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FloodlightActivitiesListResponse": {
+"description": "Floodlight Activity List Response",
+"id": "FloodlightActivitiesListResponse",
+"properties": {
+"floodlightActivities": {
+"description": "Floodlight activity collection.",
+"items": {
+"$ref": "FloodlightActivity"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivitiesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FloodlightActivity": {
+"description": "Contains properties of a Floodlight activity.",
+"id": "FloodlightActivity",
+"properties": {
+"accountId": {
+"description": "Account ID of this floodlight activity. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's advertiser or the existing activity's advertiser.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"attributionEnabled": {
+"description": "Whether the activity is enabled for attribution.",
+"type": "boolean"
+},
+"cacheBustingType": {
+"description": "Code type used for cache busting in the generated tag. Applicable only when floodlightActivityGroupType is COUNTER and countingMethod is STANDARD_COUNTING or UNIQUE_COUNTING.",
+"enum": [
+"JAVASCRIPT",
+"ACTIVE_SERVER_PAGE",
+"JSP",
+"PHP",
+"COLD_FUSION"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"countingMethod": {
+"description": "Counting method for conversions for this floodlight activity. This is a required field.",
+"enum": [
+"STANDARD_COUNTING",
+"UNIQUE_COUNTING",
+"SESSION_COUNTING",
+"TRANSACTIONS_COUNTING",
+"ITEMS_SOLD_COUNTING"
+],
+"enumDescriptions": [
+"Count every conversion.",
+"Count the first conversion for each unique user during each 24-hour day, from midnight to midnight, Eastern Time.",
+"Count one conversion per user per session. Session length is set by the site where the Spotlight tag is deployed.",
+"Count all conversions, plus the total number of sales that take place and the total revenue for these transactions.",
+"Count each conversion, plus the total number of items sold and the total revenue for these sales."
+],
+"type": "string"
+},
+"defaultTags": {
+"description": "Dynamic floodlight tags.",
+"items": {
+"$ref": "FloodlightActivityDynamicTag"
+},
+"type": "array"
+},
+"expectedUrl": {
+"description": "URL where this tag will be deployed. If specified, must be less than 256 characters long.",
+"type": "string"
+},
+"floodlightActivityGroupId": {
+"description": "Floodlight activity group ID of this floodlight activity. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"floodlightActivityGroupName": {
+"description": "Name of the associated floodlight activity group. This is a read-only field.",
+"type": "string"
+},
+"floodlightActivityGroupTagString": {
+"description": "Tag string of the associated floodlight activity group. This is a read-only field.",
+"type": "string"
+},
+"floodlightActivityGroupType": {
+"description": "Type of the associated floodlight activity group. This is a read-only field.",
+"enum": [
+"COUNTER",
+"SALE"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"floodlightConfigurationId": {
+"description": "Floodlight configuration ID of this floodlight activity. If this field is left blank, the value will be copied over either from the activity group's floodlight configuration or from the existing activity's floodlight configuration.",
+"format": "int64",
+"type": "string"
+},
+"floodlightConfigurationIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field."
+},
+"floodlightTagType": {
+"description": "The type of Floodlight tag this activity will generate. This is a required field.",
+"enum": [
+"IFRAME",
+"IMAGE",
+"GLOBAL_SITE_TAG"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"id": {
+"description": "ID of this floodlight activity. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this floodlight activity. This is a read-only, auto-generated field."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivity\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this floodlight activity. This is a required field. Must be less than 129 characters long and cannot contain quotes.",
+"type": "string"
+},
+"notes": {
+"description": "General notes or implementation instructions for the tag.",
+"type": "string"
+},
+"publisherTags": {
+"description": "Publisher dynamic floodlight tags.",
+"items": {
+"$ref": "FloodlightActivityPublisherDynamicTag"
+},
+"type": "array"
+},
+"secure": {
+"description": "Whether this tag should use SSL.",
+"type": "boolean"
+},
+"sslCompliant": {
+"description": "Whether the floodlight activity is SSL-compliant. This is a read-only field, its value detected by the system from the floodlight tags.",
+"type": "boolean"
+},
+"sslRequired": {
+"description": "Whether this floodlight activity must be SSL-compliant.",
+"type": "boolean"
+},
+"status": {
+"description": "The status of the activity. This can only be set to ACTIVE or ARCHIVED_AND_DISABLED. The ARCHIVED status is no longer supported and cannot be set for Floodlight activities. The DISABLED_POLICY status indicates that a Floodlight activity is violating Google policy. Contact your account manager for more information.",
+"enum": [
+"ACTIVE",
+"ARCHIVED_AND_DISABLED",
+"ARCHIVED",
+"DISABLED_POLICY"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this floodlight activity. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"tagFormat": {
+"description": "Tag format type for the floodlight activity. If left blank, the tag format will default to HTML.",
+"enum": [
+"HTML",
+"XHTML"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"tagString": {
+"description": "Value of the cat= parameter in the floodlight tag, which the ad servers use to identify the activity. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activities of the same activity group. This field is read-only after insertion.",
+"type": "string"
+},
+"userDefinedVariableTypes": {
+"description": "List of the user-defined variables used by this conversion tag. These map to the \"u[1-100]=\" in the tags. Each of these can have a user defined type. Acceptable values are U1 to U100, inclusive. ",
+"items": {
+"enum": [
+"U1",
+"U2",
+"U3",
+"U4",
+"U5",
+"U6",
+"U7",
+"U8",
+"U9",
+"U10",
+"U11",
+"U12",
+"U13",
+"U14",
+"U15",
+"U16",
+"U17",
+"U18",
+"U19",
+"U20",
+"U21",
+"U22",
+"U23",
+"U24",
+"U25",
+"U26",
+"U27",
+"U28",
+"U29",
+"U30",
+"U31",
+"U32",
+"U33",
+"U34",
+"U35",
+"U36",
+"U37",
+"U38",
+"U39",
+"U40",
+"U41",
+"U42",
+"U43",
+"U44",
+"U45",
+"U46",
+"U47",
+"U48",
+"U49",
+"U50",
+"U51",
+"U52",
+"U53",
+"U54",
+"U55",
+"U56",
+"U57",
+"U58",
+"U59",
+"U60",
+"U61",
+"U62",
+"U63",
+"U64",
+"U65",
+"U66",
+"U67",
+"U68",
+"U69",
+"U70",
+"U71",
+"U72",
+"U73",
+"U74",
+"U75",
+"U76",
+"U77",
+"U78",
+"U79",
+"U80",
+"U81",
+"U82",
+"U83",
+"U84",
+"U85",
+"U86",
+"U87",
+"U88",
+"U89",
+"U90",
+"U91",
+"U92",
+"U93",
+"U94",
+"U95",
+"U96",
+"U97",
+"U98",
+"U99",
+"U100"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"FloodlightActivityDynamicTag": {
+"description": "Dynamic Tag",
+"id": "FloodlightActivityDynamicTag",
+"properties": {
+"id": {
+"description": "ID of this dynamic tag. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Name of this tag.",
+"type": "string"
+},
+"tag": {
+"description": "Tag code.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FloodlightActivityGroup": {
+"description": "Contains properties of a Floodlight activity group.",
+"id": "FloodlightActivityGroup",
+"properties": {
+"accountId": {
+"description": "Account ID of this floodlight activity group. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this floodlight activity group. If this field is left blank, the value will be copied over either from the floodlight configuration's advertiser or from the existing activity group's advertiser.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"floodlightConfigurationId": {
+"description": "Floodlight configuration ID of this floodlight activity group. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"floodlightConfigurationIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the floodlight configuration. This is a read-only, auto-generated field."
+},
+"id": {
+"description": "ID of this floodlight activity group. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this floodlight activity group. This is a read-only, auto-generated field."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivityGroup\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this floodlight activity group. This is a required field. Must be less than 65 characters long and cannot contain quotes.",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this floodlight activity group. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"tagString": {
+"description": "Value of the type= parameter in the floodlight tag, which the ad servers use to identify the activity group that the activity belongs to. This is optional: if empty, a new tag string will be generated for you. This string must be 1 to 8 characters long, with valid characters being a-z0-9[ _ ]. This tag string must also be unique among activity groups of the same floodlight configuration. This field is read-only after insertion.",
+"type": "string"
+},
+"type": {
+"description": "Type of the floodlight activity group. This is a required field that is read-only after insertion.",
+"enum": [
+"COUNTER",
+"SALE"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"FloodlightActivityGroupsListResponse": {
+"description": "Floodlight Activity Group List Response",
+"id": "FloodlightActivityGroupsListResponse",
+"properties": {
+"floodlightActivityGroups": {
+"description": "Floodlight activity group collection.",
+"items": {
+"$ref": "FloodlightActivityGroup"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightActivityGroupsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FloodlightActivityPublisherDynamicTag": {
+"description": "Publisher Dynamic Tag",
+"id": "FloodlightActivityPublisherDynamicTag",
+"properties": {
+"clickThrough": {
+"description": "Whether this tag is applicable only for click-throughs.",
+"type": "boolean"
+},
+"directorySiteId": {
+"description": "Directory site ID of this dynamic tag. This is a write-only field that can be used as an alternative to the siteId field. When this resource is retrieved, only the siteId field will be populated.",
+"format": "int64",
+"type": "string"
+},
+"dynamicTag": {
+"$ref": "FloodlightActivityDynamicTag",
+"description": "Dynamic floodlight tag."
+},
+"siteId": {
+"description": "Site ID of this dynamic tag.",
+"format": "int64",
+"type": "string"
+},
+"siteIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the site. This is a read-only, auto-generated field."
+},
+"viewThrough": {
+"description": "Whether this tag is applicable only for view-throughs.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"FloodlightConfiguration": {
+"description": "Contains properties of a Floodlight configuration.",
+"id": "FloodlightConfiguration",
+"properties": {
+"accountId": {
+"description": "Account ID of this floodlight configuration. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of the parent advertiser of this floodlight configuration.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"analyticsDataSharingEnabled": {
+"description": "Whether advertiser data is shared with Google Analytics.",
+"type": "boolean"
+},
+"customViewabilityMetric": {
+"$ref": "CustomViewabilityMetric",
+"description": "Custom Viewability metric for the floodlight configuration."
+},
+"exposureToConversionEnabled": {
+"description": "Whether the exposure-to-conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.",
+"type": "boolean"
+},
+"firstDayOfWeek": {
+"enum": [
+"SUNDAY",
+"MONDAY"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"id": {
+"description": "ID of this floodlight configuration. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this floodlight configuration. This is a read-only, auto-generated field."
+},
+"inAppAttributionTrackingEnabled": {
+"description": "Whether in-app attribution tracking is enabled.",
+"type": "boolean"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightConfiguration\".",
+"type": "string"
+},
+"lookbackConfiguration": {
+"$ref": "LookbackConfiguration",
+"description": "Lookback window settings for this floodlight configuration."
+},
+"naturalSearchConversionAttributionOption": {
+"description": "Types of attribution options for natural search conversions.",
+"enum": [
+"EXCLUDE_NATURAL_SEARCH_CONVERSION_ATTRIBUTION",
+"INCLUDE_NATURAL_SEARCH_CONVERSION_ATTRIBUTION",
+"INCLUDE_NATURAL_SEARCH_TIERED_CONVERSION_ATTRIBUTION"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"omnitureSettings": {
+"$ref": "OmnitureSettings",
+"description": "Settings for Campaign Manager Omniture integration."
+},
+"subaccountId": {
+"description": "Subaccount ID of this floodlight configuration. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"tagSettings": {
+"$ref": "TagSettings",
+"description": "Configuration settings for dynamic and image floodlight tags."
+},
+"thirdPartyAuthenticationTokens": {
+"description": "List of third-party authentication tokens enabled for this configuration.",
+"items": {
+"$ref": "ThirdPartyAuthenticationToken"
+},
+"type": "array"
+},
+"userDefinedVariableConfigurations": {
+"description": "List of user defined variables enabled for this configuration.",
+"items": {
+"$ref": "UserDefinedVariableConfiguration"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"FloodlightConfigurationsListResponse": {
+"description": "Floodlight Configuration List Response",
+"id": "FloodlightConfigurationsListResponse",
+"properties": {
+"floodlightConfigurations": {
+"description": "Floodlight configuration collection.",
+"items": {
+"$ref": "FloodlightConfiguration"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#floodlightConfigurationsListResponse\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FloodlightReportCompatibleFields": {
+"description": "Represents fields that are compatible to be selected for a report of type \"FlOODLIGHT\".",
+"id": "FloodlightReportCompatibleFields",
+"properties": {
+"dimensionFilters": {
+"description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"dimensions": {
+"description": "Dimensions which are compatible to be selected in the \"dimensions\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#floodlightReportCompatibleFields.",
+"type": "string"
+},
+"metrics": {
+"description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"FrequencyCap": {
+"description": "Frequency Cap.",
+"id": "FrequencyCap",
+"properties": {
+"duration": {
+"description": "Duration of time, in seconds, for this frequency cap. The maximum duration is 90 days. Acceptable values are 1 to 7776000, inclusive.",
+"format": "int64",
+"type": "string"
+},
+"impressions": {
+"description": "Number of times an individual user can be served the ad within the specified duration. Acceptable values are 1 to 15, inclusive.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FsCommand": {
+"description": "FsCommand.",
+"id": "FsCommand",
+"properties": {
+"left": {
+"description": "Distance from the left of the browser.Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.",
+"format": "int32",
+"type": "integer"
+},
+"positionOption": {
+"description": "Position in the browser where the window will open.",
+"enum": [
+"CENTERED",
+"DISTANCE_FROM_TOP_LEFT_CORNER"
+],
+"enumDescriptions": [
+"Center of the window Corresponds to \"center\" in UI",
+"user-defined distance from top left-hand corner of the window Corresponds to \"top-left\" in UI"
+],
+"type": "string"
+},
+"top": {
+"description": "Distance from the top of the browser. Applicable when positionOption is DISTANCE_FROM_TOP_LEFT_CORNER.",
+"format": "int32",
+"type": "integer"
+},
+"windowHeight": {
+"description": "Height of the window.",
+"format": "int32",
+"type": "integer"
+},
+"windowWidth": {
+"description": "Width of the window.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GeoTargeting": {
+"description": "Geographical Targeting.",
+"id": "GeoTargeting",
+"properties": {
+"cities": {
+"description": "Cities to be targeted. For each city only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a city, do not target or exclude the country of the city, and do not target the metro or region of the city.",
+"items": {
+"$ref": "City"
+},
+"type": "array"
+},
+"countries": {
+"description": "Countries to be targeted or excluded from targeting, depending on the setting of the excludeCountries field. For each country only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting or excluding a country, do not target regions, cities, metros, or postal codes in the same country.",
+"items": {
+"$ref": "Country"
+},
+"type": "array"
+},
+"excludeCountries": {
+"description": "Whether or not to exclude the countries in the countries field from targeting. If false, the countries field refers to countries which will be targeted by the ad.",
+"type": "boolean"
+},
+"metros": {
+"description": "Metros to be targeted. For each metro only dmaId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a metro, do not target or exclude the country of the metro.",
+"items": {
+"$ref": "Metro"
+},
+"type": "array"
+},
+"postalCodes": {
+"description": "Postal codes to be targeted. For each postal code only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a postal code, do not target or exclude the country of the postal code.",
+"items": {
+"$ref": "PostalCode"
+},
+"type": "array"
+},
+"regions": {
+"description": "Regions to be targeted. For each region only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting a region, do not target or exclude the country of the region.",
+"items": {
+"$ref": "Region"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"InventoryItem": {
+"description": "Represents a buy from the Planning inventory store.",
+"id": "InventoryItem",
+"properties": {
+"accountId": {
+"description": "Account ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"adSlots": {
+"description": "Ad slots of this inventory item. If this inventory item represents a standalone placement, there will be exactly one ad slot. If this inventory item represents a placement group, there will be more than one ad slot, each representing one child placement in that placement group.",
+"items": {
+"$ref": "AdSlot"
+},
+"type": "array"
+},
+"advertiserId": {
+"description": "Advertiser ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"contentCategoryId": {
+"description": "Content category ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"estimatedClickThroughRate": {
+"description": "Estimated click-through rate of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"estimatedConversionRate": {
+"description": "Estimated conversion rate of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"id": {
+"description": "ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"inPlan": {
+"description": "Whether this inventory item is in plan.",
+"type": "boolean"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#inventoryItem\".",
+"type": "string"
+},
+"lastModifiedInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the most recent modification of this inventory item."
+},
+"name": {
+"description": "Name of this inventory item. For standalone inventory items, this is the same name as that of its only ad slot. For group inventory items, this can differ from the name of any of its ad slots.",
+"type": "string"
+},
+"negotiationChannelId": {
+"description": "Negotiation channel ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"orderId": {
+"description": "Order ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"placementStrategyId": {
+"description": "Placement strategy ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"pricing": {
+"$ref": "Pricing",
+"description": "Pricing of this inventory item."
+},
+"projectId": {
+"description": "Project ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"rfpId": {
+"description": "RFP ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"siteId": {
+"description": "ID of the site this inventory item is associated with.",
+"format": "int64",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this inventory item.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "Type of inventory item.",
+"enum": [
+"PLANNING_PLACEMENT_TYPE_REGULAR",
+"PLANNING_PLACEMENT_TYPE_CREDIT"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"InventoryItemsListResponse": {
+"description": "Inventory item List Response",
+"id": "InventoryItemsListResponse",
+"properties": {
+"inventoryItems": {
+"description": "Inventory item collection",
+"items": {
+"$ref": "InventoryItem"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#inventoryItemsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Invoice": {
+"description": "Contains information about a single invoice",
+"id": "Invoice",
+"properties": {
+"campaign_summaries": {
+"description": "The list of summarized campaign information associated with this invoice.",
+"items": {
+"$ref": "CampaignSummary"
+},
+"type": "array"
+},
+"correctedInvoiceId": {
+"description": "The originally issued invoice that is being adjusted by this invoice, if applicable. May appear on invoice PDF as *Reference invoice number*.",
+"type": "string"
+},
+"currencyCode": {
+"description": "Invoice currency code in ISO 4217 format.",
+"type": "string"
+},
+"dueDate": {
+"description": "The invoice due date.",
+"type": "string"
+},
+"id": {
+"description": "ID of this invoice.",
+"type": "string"
+},
+"invoiceType": {
+"description": "The type of invoice document.",
+"enum": [
+"INVOICE_TYPE_UNSPECIFIED",
+"INVOICE_TYPE_CREDIT",
+"INVOICE_TYPE_INVOICE"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"issueDate": {
+"description": "The date when the invoice was issued.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#invoice\".",
+"type": "string"
+},
+"paymentsAccountId": {
+"description": "The ID of the payments account the invoice belongs to. Appears on the invoice PDF as *Billing Account Number*.",
+"type": "string"
+},
+"paymentsProfileId": {
+"description": "The ID of the payments profile the invoice belongs to. Appears on the invoice PDF as *Billing ID*.",
+"type": "string"
+},
+"pdfUrl": {
+"description": "The URL to download a PDF copy of the invoice. Note that this URL is user specific and requires a valid OAuth 2.0 access token to access. The access token must be provided in an *Authorization: Bearer* HTTP header. The URL will only be usable for 7 days from when the api is called.",
+"type": "string"
+},
+"purchaseOrderNumber": {
+"description": "Purchase order number associated with the invoice.",
+"type": "string"
+},
+"replacedInvoiceIds": {
+"description": "The originally issued invoice(s) that is being cancelled by this invoice, if applicable. May appear on invoice PDF as *Replaced invoice numbers*. Note: There may be multiple replaced invoices due to consolidation of multiple invoices into a single invoice.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"serviceEndDate": {
+"description": "The invoice service end date.",
+"type": "string"
+},
+"serviceStartDate": {
+"description": "The invoice service start date.",
+"type": "string"
+},
+"subtotalAmountMicros": {
+"description": "The pre-tax subtotal amount, in micros of the invoice's currency.",
+"format": "int64",
+"type": "string"
+},
+"totalAmountMicros": {
+"description": "The invoice total amount, in micros of the invoice's currency.",
+"format": "int64",
+"type": "string"
+},
+"totalTaxAmountMicros": {
+"description": "The sum of all taxes in invoice, in micros of the invoice's currency.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"KeyValueTargetingExpression": {
+"description": "Key Value Targeting Expression.",
+"id": "KeyValueTargetingExpression",
+"properties": {
+"expression": {
+"description": "Keyword expression being targeted by the ad.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LandingPage": {
+"description": "Contains information about where a user's browser is taken after the user clicks an ad.",
+"id": "LandingPage",
+"properties": {
+"advertiserId": {
+"description": "Advertiser ID of this landing page. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"archived": {
+"description": "Whether this landing page has been archived.",
+"type": "boolean"
+},
+"deepLinks": {
+"description": "Links that will direct the user to a mobile app, if installed.",
+"items": {
+"$ref": "DeepLink"
+},
+"type": "array"
+},
+"id": {
+"description": "ID of this landing page. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#landingPage\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this landing page. This is a required field. It must be less than 256 characters long.",
+"type": "string"
+},
+"url": {
+"description": "URL of this landing page. This is a required field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Language": {
+"description": "Contains information about a language that can be targeted by ads.",
+"id": "Language",
+"properties": {
+"id": {
+"description": "Language ID of this language. This is the ID used for targeting and generating reports.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#language\".",
+"type": "string"
+},
+"languageCode": {
+"description": "Format of language code is an ISO 639 two-letter language code optionally followed by an underscore followed by an ISO 3166 code. Examples are \"en\" for English or \"zh_CN\" for Simplified Chinese.",
+"type": "string"
+},
+"name": {
+"description": "Name of this language.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LanguageTargeting": {
+"description": "Language Targeting.",
+"id": "LanguageTargeting",
+"properties": {
+"languages": {
+"description": "Languages that this ad targets. For each language only languageId is required. The other fields are populated automatically when the ad is inserted or updated.",
+"items": {
+"$ref": "Language"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"LanguagesListResponse": {
+"description": "Language List Response",
+"id": "LanguagesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#languagesListResponse\".",
+"type": "string"
+},
+"languages": {
+"description": "Language collection.",
+"items": {
+"$ref": "Language"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"LastModifiedInfo": {
+"description": "Modification timestamp.",
+"id": "LastModifiedInfo",
+"properties": {
+"time": {
+"description": "Timestamp of the last change in milliseconds since epoch.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListPopulationClause": {
+"description": "A group clause made up of list population terms representing constraints joined by ORs.",
+"id": "ListPopulationClause",
+"properties": {
+"terms": {
+"description": "Terms of this list population clause. Each clause is made up of list population terms representing constraints and are joined by ORs.",
+"items": {
+"$ref": "ListPopulationTerm"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListPopulationRule": {
+"description": "Remarketing List Population Rule.",
+"id": "ListPopulationRule",
+"properties": {
+"floodlightActivityId": {
+"description": "Floodlight activity ID associated with this rule. This field can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"floodlightActivityName": {
+"description": "Name of floodlight activity associated with this rule. This is a read-only, auto-generated field.",
+"type": "string"
+},
+"listPopulationClauses": {
+"description": "Clauses that make up this list population rule. Clauses are joined by ANDs, and the clauses themselves are made up of list population terms which are joined by ORs.",
+"items": {
+"$ref": "ListPopulationClause"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListPopulationTerm": {
+"description": "Remarketing List Population Rule Term.",
+"id": "ListPopulationTerm",
+"properties": {
+"contains": {
+"description": "Will be true if the term should check if the user is in the list and false if the term should check if the user is not in the list. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM. False by default.",
+"type": "boolean"
+},
+"negation": {
+"description": "Whether to negate the comparison result of this term during rule evaluation. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.",
+"type": "boolean"
+},
+"operator": {
+"description": "Comparison operator of this term. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.",
+"enum": [
+"NUM_EQUALS",
+"NUM_LESS_THAN",
+"NUM_LESS_THAN_EQUAL",
+"NUM_GREATER_THAN",
+"NUM_GREATER_THAN_EQUAL",
+"STRING_EQUALS",
+"STRING_CONTAINS"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"remarketingListId": {
+"description": "ID of the list in question. This field is only relevant when type is set to LIST_MEMBERSHIP_TERM.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "List population term type determines the applicable fields in this object. If left unset or set to CUSTOM_VARIABLE_TERM, then variableName, variableFriendlyName, operator, value, and negation are applicable. If set to LIST_MEMBERSHIP_TERM then remarketingListId and contains are applicable. If set to REFERRER_TERM then operator, value, and negation are applicable.",
+"enum": [
+"CUSTOM_VARIABLE_TERM",
+"LIST_MEMBERSHIP_TERM",
+"REFERRER_TERM"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"value": {
+"description": "Literal to compare the variable to. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM or REFERRER_TERM.",
+"type": "string"
+},
+"variableFriendlyName": {
+"description": "Friendly name of this term's variable. This is a read-only, auto-generated field. This field is only relevant when type is left unset or set to CUSTOM_VARIABLE_TERM.",
+"type": "string"
+},
+"variableName": {
+"description": "Name of the variable (U1, U2, etc.) being compared in this term. This field is only relevant when type is set to null, CUSTOM_VARIABLE_TERM or REFERRER_TERM.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListTargetingExpression": {
+"description": "Remarketing List Targeting Expression.",
+"id": "ListTargetingExpression",
+"properties": {
+"expression": {
+"description": "Expression describing which lists are being targeted by the ad.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LookbackConfiguration": {
+"description": "Lookback configuration settings.",
+"id": "LookbackConfiguration",
+"properties": {
+"clickDuration": {
+"description": "Lookback window, in days, from the last time a given user clicked on one of your ads. If you enter 0, clicks will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used. Acceptable values are 0 to 90, inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"postImpressionActivitiesDuration": {
+"description": "Lookback window, in days, from the last time a given user viewed one of your ads. If you enter 0, impressions will not be considered as triggering events for floodlight tracking. If you leave this field blank, the default value for your account will be used. Acceptable values are 0 to 90, inclusive.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"MeasurementPartnerAdvertiserLink": {
+"id": "MeasurementPartnerAdvertiserLink",
+"properties": {
+"linkStatus": {
+"description": "Status of the partner link.",
+"enum": [
+"MEASUREMENT_PARTNER_UNLINKED",
+"MEASUREMENT_PARTNER_LINKED",
+"MEASUREMENT_PARTNER_LINK_PENDING",
+"MEASUREMENT_PARTNER_LINK_FAILURE",
+"MEASUREMENT_PARTNER_LINK_OPT_OUT",
+"MEASUREMENT_PARTNER_LINK_OPT_OUT_PENDING",
+"MEASUREMENT_PARTNER_LINK_WRAPPING_PENDING",
+"MEASUREMENT_PARTNER_MODE_CHANGE_PENDING",
+"MEASUREMENT_PARTNER_UNLINK_PENDING"
+],
+"enumDescriptions": [
+"Unlinked.",
+"Linked successfully",
+"Link pending for wrapping.",
+"Linking failure.",
+"Link opt-out by user.",
+"Link opt-out pending sync.",
+"Link wrap answer pending.",
+"Mode change pending.",
+"Partner unlink pending."
+],
+"type": "string"
+},
+"measurementPartner": {
+"description": "Measurement partner used for tag wrapping.",
+"enum": [
+"NONE",
+"INTEGRAL_AD_SCIENCE",
+"DOUBLE_VERIFY"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"partnerAdvertiserId": {
+"description": "partner Advertiser Id.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MeasurementPartnerCampaignLink": {
+"id": "MeasurementPartnerCampaignLink",
+"properties": {
+"linkStatus": {
+"description": ".",
+"enum": [
+"MEASUREMENT_PARTNER_UNLINKED",
+"MEASUREMENT_PARTNER_LINKED",
+"MEASUREMENT_PARTNER_LINK_PENDING",
+"MEASUREMENT_PARTNER_LINK_FAILURE",
+"MEASUREMENT_PARTNER_LINK_OPT_OUT",
+"MEASUREMENT_PARTNER_LINK_OPT_OUT_PENDING",
+"MEASUREMENT_PARTNER_LINK_WRAPPING_PENDING",
+"MEASUREMENT_PARTNER_MODE_CHANGE_PENDING",
+"MEASUREMENT_PARTNER_UNLINK_PENDING"
+],
+"enumDescriptions": [
+"Unlinked.",
+"Linked successfully",
+"Link pending for wrapping.",
+"Linking failure.",
+"Link opt-out by user.",
+"Link opt-out pending sync.",
+"Link wrap answer pending.",
+"Mode change pending.",
+"Partner unlink pending."
+],
+"type": "string"
+},
+"measurementPartner": {
+"description": "Measurement partner used for tag wrapping.",
+"enum": [
+"NONE",
+"INTEGRAL_AD_SCIENCE",
+"DOUBLE_VERIFY"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"partnerCampaignId": {
+"description": "Partner campaign ID needed for establishing linking with Measurement partner.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MeasurementPartnerWrappingData": {
+"description": "Placement tag wrapping",
+"id": "MeasurementPartnerWrappingData",
+"properties": {
+"linkStatus": {
+"description": "Placement wrapping status.",
+"enum": [
+"MEASUREMENT_PARTNER_UNLINKED",
+"MEASUREMENT_PARTNER_LINKED",
+"MEASUREMENT_PARTNER_LINK_PENDING",
+"MEASUREMENT_PARTNER_LINK_FAILURE",
+"MEASUREMENT_PARTNER_LINK_OPT_OUT",
+"MEASUREMENT_PARTNER_LINK_OPT_OUT_PENDING",
+"MEASUREMENT_PARTNER_LINK_WRAPPING_PENDING",
+"MEASUREMENT_PARTNER_MODE_CHANGE_PENDING",
+"MEASUREMENT_PARTNER_UNLINK_PENDING"
+],
+"enumDescriptions": [
+"Unlinked.",
+"Linked successfully",
+"Link pending for wrapping.",
+"Linking failure.",
+"Link opt-out by user.",
+"Link opt-out pending sync.",
+"Link wrap answer pending.",
+"Mode change pending.",
+"Partner unlink pending."
+],
+"type": "string"
+},
+"measurementPartner": {
+"description": "Measurement partner used for wrapping the placement.",
+"enum": [
+"NONE",
+"INTEGRAL_AD_SCIENCE",
+"DOUBLE_VERIFY"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"tagWrappingMode": {
+"description": "Measurement mode for the wrapped placement.",
+"enum": [
+"NONE",
+"BLOCKING",
+"MONITORING",
+"MONITORING_READ_ONLY",
+"VIDEO_PIXEL_MONITORING",
+"TRACKING",
+"VPAID_MONITORING",
+"VPAID_BLOCKING",
+"NON_VPAID_MONITORING",
+"VPAID_ONLY_MONITORING",
+"VPAID_ONLY_BLOCKING",
+"VPAID_ONLY_FILTERING",
+"VPAID_FILTERING",
+"NON_VPAID_FILTERING"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"wrappedTag": {
+"description": "Tag provided by the measurement partner during wrapping.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Metric": {
+"description": "Represents a metric.",
+"id": "Metric",
+"properties": {
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#metric.",
+"type": "string"
+},
+"name": {
+"description": "The metric name, e.g. impressions",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Metro": {
+"description": "Contains information about a metro region that can be targeted by ads.",
+"id": "Metro",
+"properties": {
+"countryCode": {
+"description": "Country code of the country to which this metro region belongs.",
+"type": "string"
+},
+"countryDartId": {
+"description": "DART ID of the country to which this metro region belongs.",
+"format": "int64",
+"type": "string"
+},
+"dartId": {
+"description": "DART ID of this metro region.",
+"format": "int64",
+"type": "string"
+},
+"dmaId": {
+"description": "DMA ID of this metro region. This is the ID used for targeting and generating reports, and is equivalent to metro_code.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#metro\".",
+"type": "string"
+},
+"metroCode": {
+"description": "Metro code of this metro region. This is equivalent to dma_id.",
+"type": "string"
+},
+"name": {
+"description": "Name of this metro region.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MetrosListResponse": {
+"description": "Metro List Response",
+"id": "MetrosListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#metrosListResponse\".",
+"type": "string"
+},
+"metros": {
+"description": "Metro collection.",
+"items": {
+"$ref": "Metro"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MobileApp": {
+"description": "Contains information about a mobile app. Used as a landing page deep link.",
+"id": "MobileApp",
+"properties": {
+"directory": {
+"description": "Mobile app directory.",
+"enum": [
+"UNKNOWN",
+"APPLE_APP_STORE",
+"GOOGLE_PLAY_STORE",
+"ROKU_APP_STORE",
+"AMAZON_FIRETV_APP_STORE",
+"PLAYSTATION_APP_STORE",
+"APPLE_TV_APP_STORE",
+"XBOX_APP_STORE",
+"SAMSUNG_TV_APP_STORE",
+"ANDROID_TV_APP_STORE",
+"GENERIC_CTV_APP_STORE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"id": {
+"description": "ID of this mobile app.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#mobileApp\".",
+"type": "string"
+},
+"publisherName": {
+"description": "Publisher name.",
+"type": "string"
+},
+"title": {
+"description": "Title of this mobile app.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MobileAppsListResponse": {
+"description": "Mobile app List Response",
+"id": "MobileAppsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#mobileAppsListResponse\".",
+"type": "string"
+},
+"mobileApps": {
+"description": "Mobile apps collection.",
+"items": {
+"$ref": "MobileApp"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MobileCarrier": {
+"description": "Contains information about a mobile carrier that can be targeted by ads.",
+"id": "MobileCarrier",
+"properties": {
+"countryCode": {
+"description": "Country code of the country to which this mobile carrier belongs.",
+"type": "string"
+},
+"countryDartId": {
+"description": "DART ID of the country to which this mobile carrier belongs.",
+"format": "int64",
+"type": "string"
+},
+"id": {
+"description": "ID of this mobile carrier.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#mobileCarrier\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this mobile carrier.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MobileCarriersListResponse": {
+"description": "Mobile Carrier List Response",
+"id": "MobileCarriersListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#mobileCarriersListResponse\".",
+"type": "string"
+},
+"mobileCarriers": {
+"description": "Mobile carrier collection.",
+"items": {
+"$ref": "MobileCarrier"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ObaIcon": {
+"description": "Online Behavioral Advertiser icon.",
+"id": "ObaIcon",
+"properties": {
+"iconClickThroughUrl": {
+"description": "URL to redirect to when an OBA icon is clicked.",
+"type": "string"
+},
+"iconClickTrackingUrl": {
+"description": "URL to track click when an OBA icon is clicked.",
+"type": "string"
+},
+"iconViewTrackingUrl": {
+"description": "URL to track view when an OBA icon is clicked.",
+"type": "string"
+},
+"program": {
+"description": "Identifies the industry initiative that the icon supports. For example, AdChoices.",
+"type": "string"
+},
+"resourceUrl": {
+"description": "OBA icon resource URL. Campaign Manager only supports image and JavaScript icons. Learn more",
+"type": "string"
+},
+"size": {
+"$ref": "Size",
+"description": "OBA icon size."
+},
+"xPosition": {
+"description": "OBA icon x coordinate position. Accepted values are left or right.",
+"type": "string"
+},
+"yPosition": {
+"description": "OBA icon y coordinate position. Accepted values are top or bottom.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ObjectFilter": {
+"description": "Object Filter.",
+"id": "ObjectFilter",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#objectFilter\".",
+"type": "string"
+},
+"objectIds": {
+"description": "Applicable when status is ASSIGNED. The user has access to objects with these object IDs.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"status": {
+"description": "Status of the filter. NONE means the user has access to none of the objects. ALL means the user has access to all objects. ASSIGNED means the user has access to the objects with IDs in the objectIds list.",
+"enum": [
+"NONE",
+"ASSIGNED",
+"ALL"
+],
+"enumDescriptions": [
+"Profile has access to none of the objects.",
+"Profile has access to only specific objects.",
+"Profile has access to all objects."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"OfflineUserAddressInfo": {
+"description": "Identify a user by name and address.",
+"id": "OfflineUserAddressInfo",
+"properties": {
+"city": {
+"description": "City of the address.",
+"type": "string"
+},
+"countryCode": {
+"description": "2-letter country code in ISO-3166-1 alpha-2 of the user's address.",
+"type": "string"
+},
+"hashedFirstName": {
+"description": "First name of the user, which is hashed as SHA-256 after normalized (Lowercase all characters; Remove any extra spaces before, after, and in between).",
+"type": "string"
+},
+"hashedLastName": {
+"description": "Last name of the user, which is hashed as SHA-256 after normalized (lower case only and no punctuation).",
+"type": "string"
+},
+"hashedStreetAddress": {
+"description": "The street address of the user hashed using SHA-256 hash function after normalization (lower case only).",
+"type": "string"
+},
+"postalCode": {
+"description": "Postal code of the user's address.",
+"type": "string"
+},
+"state": {
+"description": "State code of the address.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OffsetPosition": {
+"description": "Offset Position.",
+"id": "OffsetPosition",
+"properties": {
+"left": {
+"description": "Offset distance from left side of an asset or a window.",
+"format": "int32",
+"type": "integer"
+},
+"top": {
+"description": "Offset distance from top side of an asset or a window.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"OmnitureSettings": {
+"description": "Omniture Integration Settings.",
+"id": "OmnitureSettings",
+"properties": {
+"omnitureCostDataEnabled": {
+"description": "Whether placement cost data will be sent to Omniture. This property can be enabled only if omnitureIntegrationEnabled is true.",
+"type": "boolean"
+},
+"omnitureIntegrationEnabled": {
+"description": "Whether Omniture integration is enabled. This property can be enabled only when the \"Advanced Ad Serving\" account setting is enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"OperatingSystem": {
+"description": "Contains information about an operating system that can be targeted by ads.",
+"id": "OperatingSystem",
+"properties": {
+"dartId": {
+"description": "DART ID of this operating system. This is the ID used for targeting.",
+"format": "int64",
+"type": "string"
+},
+"desktop": {
+"description": "Whether this operating system is for desktop.",
+"type": "boolean"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#operatingSystem\".",
+"type": "string"
+},
+"mobile": {
+"description": "Whether this operating system is for mobile.",
+"type": "boolean"
+},
+"name": {
+"description": "Name of this operating system.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OperatingSystemVersion": {
+"description": "Contains information about a particular version of an operating system that can be targeted by ads.",
+"id": "OperatingSystemVersion",
+"properties": {
+"id": {
+"description": "ID of this operating system version.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#operatingSystemVersion\".",
+"type": "string"
+},
+"majorVersion": {
+"description": "Major version (leftmost number) of this operating system version.",
+"type": "string"
+},
+"minorVersion": {
+"description": "Minor version (number after the first dot) of this operating system version.",
+"type": "string"
+},
+"name": {
+"description": "Name of this operating system version.",
+"type": "string"
+},
+"operatingSystem": {
+"$ref": "OperatingSystem",
+"description": "Operating system of this operating system version."
+}
+},
+"type": "object"
+},
+"OperatingSystemVersionsListResponse": {
+"description": "Operating System Version List Response",
+"id": "OperatingSystemVersionsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#operatingSystemVersionsListResponse\".",
+"type": "string"
+},
+"operatingSystemVersions": {
+"description": "Operating system version collection.",
+"items": {
+"$ref": "OperatingSystemVersion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"OperatingSystemsListResponse": {
+"description": "Operating System List Response",
+"id": "OperatingSystemsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#operatingSystemsListResponse\".",
+"type": "string"
+},
+"operatingSystems": {
+"description": "Operating system collection.",
+"items": {
+"$ref": "OperatingSystem"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"OptimizationActivity": {
+"description": "Creative optimization activity.",
+"id": "OptimizationActivity",
+"properties": {
+"floodlightActivityId": {
+"description": "Floodlight activity ID of this optimization activity. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"floodlightActivityIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the floodlight activity. This is a read-only, auto-generated field."
+},
+"weight": {
+"description": "Weight associated with this optimization. The weight assigned will be understood in proportion to the weights assigned to the other optimization activities. Value must be greater than or equal to 1.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Order": {
+"description": "Describes properties of a Planning order.",
+"id": "Order",
+"properties": {
+"accountId": {
+"description": "Account ID of this order.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this order.",
+"format": "int64",
+"type": "string"
+},
+"approverUserProfileIds": {
+"description": "IDs for users that have to approve documents created for this order.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"buyerInvoiceId": {
+"description": "Buyer invoice ID associated with this order.",
+"type": "string"
+},
+"buyerOrganizationName": {
+"description": "Name of the buyer organization.",
+"type": "string"
+},
+"comments": {
+"description": "Comments in this order.",
+"type": "string"
+},
+"contacts": {
+"description": "Contacts for this order.",
+"items": {
+"$ref": "OrderContact"
+},
+"type": "array"
+},
+"id": {
+"description": "ID of this order. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#order\".",
+"type": "string"
+},
+"lastModifiedInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the most recent modification of this order."
+},
+"name": {
+"description": "Name of this order.",
+"type": "string"
+},
+"notes": {
+"description": "Notes of this order.",
+"type": "string"
+},
+"planningTermId": {
+"description": "ID of the terms and conditions template used in this order.",
+"format": "int64",
+"type": "string"
+},
+"projectId": {
+"description": "Project ID of this order.",
+"format": "int64",
+"type": "string"
+},
+"sellerOrderId": {
+"description": "Seller order ID associated with this order.",
+"type": "string"
+},
+"sellerOrganizationName": {
+"description": "Name of the seller organization.",
+"type": "string"
+},
+"siteId": {
+"description": "Site IDs this order is associated with.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"siteNames": {
+"description": "Free-form site names this order is associated with.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"subaccountId": {
+"description": "Subaccount ID of this order.",
+"format": "int64",
+"type": "string"
+},
+"termsAndConditions": {
+"description": "Terms and conditions of this order.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OrderContact": {
+"description": "Contact of an order.",
+"id": "OrderContact",
+"properties": {
+"contactInfo": {
+"description": "Free-form information about this contact. It could be any information related to this contact in addition to type, title, name, and signature user profile ID.",
+"type": "string"
+},
+"contactName": {
+"description": "Name of this contact.",
+"type": "string"
+},
+"contactTitle": {
+"description": "Title of this contact.",
+"type": "string"
+},
+"contactType": {
+"description": "Type of this contact.",
+"enum": [
+"PLANNING_ORDER_CONTACT_BUYER_CONTACT",
+"PLANNING_ORDER_CONTACT_BUYER_BILLING_CONTACT",
+"PLANNING_ORDER_CONTACT_SELLER_CONTACT"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"signatureUserProfileId": {
+"description": "ID of the user profile containing the signature that will be embedded into order documents.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OrdersListResponse": {
+"description": "Order List Response",
+"id": "OrdersListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#ordersListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"orders": {
+"description": "Order collection.",
+"items": {
+"$ref": "Order"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PathToConversionReportCompatibleFields": {
+"description": "Represents fields that are compatible to be selected for a report of type \"PATH_TO_CONVERSION\".",
+"id": "PathToConversionReportCompatibleFields",
+"properties": {
+"conversionDimensions": {
+"description": "Conversion dimensions which are compatible to be selected in the \"conversionDimensions\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"customFloodlightVariables": {
+"description": "Custom floodlight variables which are compatible to be selected in the \"customFloodlightVariables\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#pathToConversionReportCompatibleFields.",
+"type": "string"
+},
+"metrics": {
+"description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+},
+"perInteractionDimensions": {
+"description": "Per-interaction dimensions which are compatible to be selected in the \"perInteractionDimensions\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Placement": {
+"description": "Contains properties of a placement.",
+"id": "Placement",
+"properties": {
+"accountId": {
+"description": "Account ID of this placement. This field can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"activeStatus": {
+"description": "Whether this placement is active, inactive, archived or permanently archived.",
+"enum": [
+"PLACEMENT_STATUS_UNKNOWN",
+"PLACEMENT_STATUS_ACTIVE",
+"PLACEMENT_STATUS_INACTIVE",
+"PLACEMENT_STATUS_ARCHIVED",
+"PLACEMENT_STATUS_PERMANENTLY_ARCHIVED"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"adBlockingOptOut": {
+"description": "Whether this placement opts out of ad blocking. When true, ad blocking is disabled for this placement. When false, the campaign and site settings take effect.",
+"type": "boolean"
+},
+"adServingPlatformId": {
+"description": "Optional. Ad serving platform ID to identify the ad serving platform used by the placement. Measurement partners can use this field to add ad-server specific macros. Possible values are: * `1`, Adelphic * `2`, Adform * `3`, Adobe * `4`, Amobee * `5`, Basis (Centro) * `6`, Beeswax * `7`, Amazon * `8`, DV360 (DBM) * `9`, Innovid * `10`, MediaMath * `11`, Roku OneView DSP * `12`, TabMo Hawk * `13`, The Trade Desk * `14`, Xandr Invest DSP * `15`, Yahoo DSP * `16`, Zeta Global * `17`, Scaleout * `18`, Bidtellect * `19`, Unicorn * `20`, Teads * `21`, Quantcast * `22`, Cognitiv",
+"format": "int64",
+"type": "string"
+},
+"additionalSizes": {
+"description": "Additional sizes associated with this placement. When inserting or updating a placement, only the size ID field is used.",
+"items": {
+"$ref": "Size"
+},
+"type": "array"
+},
+"advertiserId": {
+"description": "Advertiser ID of this placement. This field can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"campaignId": {
+"description": "Campaign ID of this placement. This field is a required field on insertion.",
+"format": "int64",
+"type": "string"
+},
+"campaignIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the campaign. This is a read-only, auto-generated field."
+},
+"comment": {
+"description": "Comments for this placement.",
+"type": "string"
+},
+"compatibility": {
+"description": "Placement compatibility. DISPLAY and DISPLAY_INTERSTITIAL refer to rendering on desktop, on mobile devices or in mobile apps for regular or interstitial ads respectively. APP and APP_INTERSTITIAL are no longer allowed for new placement insertions. Instead, use DISPLAY or DISPLAY_INTERSTITIAL. IN_STREAM_VIDEO refers to rendering in in-stream video ads developed with the VAST standard. This field is required on insertion.",
+"enum": [
+"DISPLAY",
+"DISPLAY_INTERSTITIAL",
+"APP",
+"APP_INTERSTITIAL",
+"IN_STREAM_VIDEO",
+"IN_STREAM_AUDIO"
+],
+"enumDescriptions": [
+"",
+"",
+"Deprecated enum value. No longer supported.",
+"Deprecated enum value. No longer supported.",
+"",
+""
+],
+"type": "string"
+},
+"contentCategoryId": {
+"description": "ID of the content category assigned to this placement.",
+"format": "int64",
+"type": "string"
+},
+"conversionDomainOverride": {
+"$ref": "PlacementConversionDomainOverride",
+"description": "Optional. Conversion domain overrides for a placement."
+},
+"createInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the creation of this placement. This is a read-only field."
+},
+"directorySiteId": {
+"description": "Directory site ID of this placement. On insert, you must set either this field or the siteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.",
+"format": "int64",
+"type": "string"
+},
+"directorySiteIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the directory site. This is a read-only, auto-generated field."
+},
+"externalId": {
+"description": "External ID for this placement.",
+"type": "string"
+},
+"id": {
+"description": "ID of this placement. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this placement. This is a read-only, auto-generated field."
+},
+"keyName": {
+"description": "Key name of this placement. This is a read-only, auto-generated field.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placement\".",
+"type": "string"
+},
+"lastModifiedInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the most recent modification of this placement. This is a read-only field."
+},
+"lookbackConfiguration": {
+"$ref": "LookbackConfiguration",
+"description": "Lookback window settings for this placement."
+},
+"name": {
+"description": "Name of this placement.This is a required field and must be less than or equal to 512 characters long.",
+"type": "string"
+},
+"partnerWrappingData": {
+"$ref": "MeasurementPartnerWrappingData",
+"description": "Measurement partner provided settings for a wrapped placement."
+},
+"paymentApproved": {
+"description": "Whether payment was approved for this placement. This is a read-only field relevant only to publisher-paid placements.",
+"type": "boolean"
+},
+"paymentSource": {
+"description": "Payment source for this placement. This is a required field that is read-only after insertion.",
+"enum": [
+"PLACEMENT_AGENCY_PAID",
+"PLACEMENT_PUBLISHER_PAID"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"placementGroupId": {
+"description": "ID of this placement's group, if applicable.",
+"format": "int64",
+"type": "string"
+},
+"placementGroupIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the placement group. This is a read-only, auto-generated field."
+},
+"placementStrategyId": {
+"description": "ID of the placement strategy assigned to this placement.",
+"format": "int64",
+"type": "string"
+},
+"pricingSchedule": {
+"$ref": "PricingSchedule",
+"description": "Pricing schedule of this placement. This field is required on insertion, specifically subfields startDate, endDate and pricingType."
+},
+"primary": {
+"description": "Whether this placement is the primary placement of a roadblock (placement group). You cannot change this field from true to false. Setting this field to true will automatically set the primary field on the original primary placement of the roadblock to false, and it will automatically set the roadblock's primaryPlacementId field to the ID of this placement.",
+"type": "boolean"
+},
+"publisherUpdateInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the last publisher update. This is a read-only field."
+},
+"siteId": {
+"description": "Site ID associated with this placement. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement. This is a required field that is read-only after insertion.",
+"format": "int64",
+"type": "string"
+},
+"siteIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the site. This is a read-only, auto-generated field."
+},
+"siteServed": {
+"description": "Optional. Whether the ads in the placement are served by another platform and CM is only used for tracking or they are served by CM. A false value indicates the ad is served by CM.",
+"type": "boolean"
+},
+"size": {
+"$ref": "Size",
+"description": "Size associated with this placement. When inserting or updating a placement, only the size ID field is used. This field is required on insertion."
+},
+"sslRequired": {
+"description": "Whether creatives assigned to this placement must be SSL-compliant.",
+"type": "boolean"
+},
+"status": {
+"description": "Third-party placement status.",
+"enum": [
+"PENDING_REVIEW",
+"PAYMENT_ACCEPTED",
+"PAYMENT_REJECTED",
+"ACKNOWLEDGE_REJECTION",
+"ACKNOWLEDGE_ACCEPTANCE",
+"DRAFT"
+],
+"enumDescriptions": [
+"Placement is not yet reviewed by publisher.",
+"Placement Ad Serving fee is accepted by publisher",
+"Placement Ad Serving fee is rejected by publisher",
+"Advertisers has accepted rejection of placement ad serving fee. This will suppress future notification on DDMM UI",
+"Advertisers has accepted acceptance of placement ad serving fee. This will suppress future notification on DDMM UI",
+"Advertisers is still working on placement not yet ready for Publisher review; default status for pub-paid placements"
+],
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this placement. This field can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"tagFormats": {
+"description": "Tag formats to generate for this placement. This field is required on insertion. Acceptable values are: - \"PLACEMENT_TAG_STANDARD\" - \"PLACEMENT_TAG_IFRAME_JAVASCRIPT\" - \"PLACEMENT_TAG_IFRAME_ILAYER\" - \"PLACEMENT_TAG_INTERNAL_REDIRECT\" - \"PLACEMENT_TAG_JAVASCRIPT\" - \"PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT\" - \"PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT\" - \"PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT\" - \"PLACEMENT_TAG_CLICK_COMMANDS\" - \"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH\" - \"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3\" - \"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_4\" - \"PLACEMENT_TAG_TRACKING\" - \"PLACEMENT_TAG_TRACKING_IFRAME\" - \"PLACEMENT_TAG_TRACKING_JAVASCRIPT\" ",
+"items": {
+"enum": [
+"PLACEMENT_TAG_STANDARD",
+"PLACEMENT_TAG_IFRAME_JAVASCRIPT",
+"PLACEMENT_TAG_IFRAME_ILAYER",
+"PLACEMENT_TAG_INTERNAL_REDIRECT",
+"PLACEMENT_TAG_JAVASCRIPT",
+"PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT",
+"PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT",
+"PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT",
+"PLACEMENT_TAG_CLICK_COMMANDS",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH",
+"PLACEMENT_TAG_TRACKING",
+"PLACEMENT_TAG_TRACKING_IFRAME",
+"PLACEMENT_TAG_TRACKING_JAVASCRIPT",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3",
+"PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_4",
+"PLACEMENT_TAG_TRACKING_THIRD_PARTY_MEASUREMENT"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"tagSetting": {
+"$ref": "TagSetting",
+"description": "Tag settings for this placement."
+},
+"videoActiveViewOptOut": {
+"description": "Whether Verification and ActiveView are disabled for in-stream video creatives for this placement. The same setting videoActiveViewOptOut exists on the site level -- the opt out occurs if either of these settings are true. These settings are distinct from DirectorySites.settings.activeViewOptOut or Sites.siteSettings.activeViewOptOut which only apply to display ads. However, Accounts.activeViewOptOut opts out both video traffic, as well as display ads, from Verification and ActiveView.",
+"type": "boolean"
+},
+"videoSettings": {
+"$ref": "VideoSettings",
+"description": "A collection of settings which affect video creatives served through this placement. Applicable to placements with IN_STREAM_VIDEO compatibility."
+},
+"vpaidAdapterChoice": {
+"description": "VPAID adapter setting for this placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to this placement. *Note:* Flash is no longer supported. This field now defaults to HTML5 when the following values are provided: FLASH, BOTH.",
+"enum": [
+"DEFAULT",
+"FLASH",
+"HTML5",
+"BOTH"
+],
+"enumDescriptions": [
+"DEFAULT means Google chooses which adapter, if any, to serve.",
+"",
+"",
+""
+],
+"type": "string"
+},
+"wrappingOptOut": {
+"description": "Whether this placement opts out of tag wrapping.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"PlacementAssignment": {
+"description": "Placement Assignment.",
+"id": "PlacementAssignment",
+"properties": {
+"active": {
+"description": "Whether this placement assignment is active. When true, the placement will be included in the ad's rotation.",
+"type": "boolean"
+},
+"placementId": {
+"description": "ID of the placement to be assigned. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"placementIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the placement. This is a read-only, auto-generated field."
+},
+"sslRequired": {
+"description": "Whether the placement to be assigned requires SSL. This is a read-only field that is auto-generated when the ad is inserted or updated.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"PlacementConversionDomainOverride": {
+"id": "PlacementConversionDomainOverride",
+"properties": {
+"conversionDomains": {
+"items": {
+"$ref": "PlacementSingleConversionDomain"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PlacementGroup": {
+"description": "Contains properties of a package or roadblock.",
+"id": "PlacementGroup",
+"properties": {
+"accountId": {
+"description": "Account ID of this placement group. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"activeStatus": {
+"description": "Whether this placement group is active, inactive, archived or permanently archived.",
+"enum": [
+"PLACEMENT_STATUS_UNKNOWN",
+"PLACEMENT_STATUS_ACTIVE",
+"PLACEMENT_STATUS_INACTIVE",
+"PLACEMENT_STATUS_ARCHIVED",
+"PLACEMENT_STATUS_PERMANENTLY_ARCHIVED"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this placement group. This is a required field on insertion.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"campaignId": {
+"description": "Campaign ID of this placement group. This field is required on insertion.",
+"format": "int64",
+"type": "string"
+},
+"campaignIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the campaign. This is a read-only, auto-generated field."
+},
+"childPlacementIds": {
+"description": "IDs of placements which are assigned to this placement group. This is a read-only, auto-generated field.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"comment": {
+"description": "Comments for this placement group.",
+"type": "string"
+},
+"contentCategoryId": {
+"description": "ID of the content category assigned to this placement group.",
+"format": "int64",
+"type": "string"
+},
+"createInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the creation of this placement group. This is a read-only field."
+},
+"directorySiteId": {
+"description": "Directory site ID associated with this placement group. On insert, you must set either this field or the site_id field to specify the site associated with this placement group. This is a required field that is read-only after insertion.",
+"format": "int64",
+"type": "string"
+},
+"directorySiteIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the directory site. This is a read-only, auto-generated field."
+},
+"externalId": {
+"description": "External ID for this placement.",
+"type": "string"
+},
+"id": {
+"description": "ID of this placement group. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this placement group. This is a read-only, auto-generated field."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementGroup\".",
+"type": "string"
+},
+"lastModifiedInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the most recent modification of this placement group. This is a read-only field."
+},
+"name": {
+"description": "Name of this placement group. This is a required field and must be less than 256 characters long.",
+"type": "string"
+},
+"placementGroupType": {
+"description": "Type of this placement group. A package is a simple group of placements that acts as a single pricing point for a group of tags. A roadblock is a group of placements that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned placements to be marked as primary for reporting. This field is required on insertion.",
+"enum": [
+"PLACEMENT_PACKAGE",
+"PLACEMENT_ROADBLOCK"
+],
+"enumDescriptions": [
+"A simple group of site-placements (tags). Basically acts as a single pricing point for a group of tags.",
+"A group of site-placements (tags) that not only acts as a single pricing point but also assumes that all the tags in it will be served at the same time. This kind of group requires one of its assigned site-placements to be marked as primary for reporting purposes."
+],
+"type": "string"
+},
+"placementStrategyId": {
+"description": "ID of the placement strategy assigned to this placement group.",
+"format": "int64",
+"type": "string"
+},
+"pricingSchedule": {
+"$ref": "PricingSchedule",
+"description": "Pricing schedule of this placement group. This field is required on insertion."
+},
+"primaryPlacementId": {
+"description": "ID of the primary placement, used to calculate the media cost of a roadblock (placement group). Modifying this field will automatically modify the primary field on all affected roadblock child placements.",
+"format": "int64",
+"type": "string"
+},
+"primaryPlacementIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the primary placement. This is a read-only, auto-generated field."
+},
+"siteId": {
+"description": "Site ID associated with this placement group. On insert, you must set either this field or the directorySiteId field to specify the site associated with this placement group. This is a required field that is read-only after insertion.",
+"format": "int64",
+"type": "string"
+},
+"siteIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the site. This is a read-only, auto-generated field."
+},
+"subaccountId": {
+"description": "Subaccount ID of this placement group. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PlacementGroupsListResponse": {
+"description": "Placement Group List Response",
+"id": "PlacementGroupsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementGroupsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"placementGroups": {
+"description": "Placement group collection.",
+"items": {
+"$ref": "PlacementGroup"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PlacementSingleConversionDomain": {
+"id": "PlacementSingleConversionDomain",
+"properties": {
+"conversionDomainId": {
+"format": "int64",
+"type": "string"
+},
+"conversionDomainValue": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"PlacementStrategiesListResponse": {
+"description": "Placement Strategy List Response",
+"id": "PlacementStrategiesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementStrategiesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"placementStrategies": {
+"description": "Placement strategy collection.",
+"items": {
+"$ref": "PlacementStrategy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PlacementStrategy": {
+"description": "Contains properties of a placement strategy.",
+"id": "PlacementStrategy",
+"properties": {
+"accountId": {
+"description": "Account ID of this placement strategy.This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"id": {
+"description": "ID of this placement strategy. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementStrategy\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this placement strategy. This is a required field. It must be less than 256 characters long and unique among placement strategies of the same account.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PlacementTag": {
+"description": "Placement Tag",
+"id": "PlacementTag",
+"properties": {
+"placementId": {
+"description": "Placement ID",
+"format": "int64",
+"type": "string"
+},
+"tagDatas": {
+"description": "Tags generated for this placement.",
+"items": {
+"$ref": "TagData"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PlacementsGenerateTagsResponse": {
+"description": "Placement GenerateTags Response",
+"id": "PlacementsGenerateTagsResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementsGenerateTagsResponse\".",
+"type": "string"
+},
+"placementTags": {
+"description": "Set of generated tags for the specified placements.",
+"items": {
+"$ref": "PlacementTag"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PlacementsListResponse": {
+"description": "Placement List Response",
+"id": "PlacementsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#placementsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"placements": {
+"description": "Placement collection.",
+"items": {
+"$ref": "Placement"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PlatformType": {
+"description": "Contains information about a platform type that can be targeted by ads.",
+"id": "PlatformType",
+"properties": {
+"id": {
+"description": "ID of this platform type.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#platformType\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this platform type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PlatformTypesListResponse": {
+"description": "Platform Type List Response",
+"id": "PlatformTypesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#platformTypesListResponse\".",
+"type": "string"
+},
+"platformTypes": {
+"description": "Platform type collection.",
+"items": {
+"$ref": "PlatformType"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PopupWindowProperties": {
+"description": "Popup Window Properties.",
+"id": "PopupWindowProperties",
+"properties": {
+"dimension": {
+"$ref": "Size",
+"description": "Popup dimension for a creative. This is a read-only field. Applicable to the following creative types: all RICH_MEDIA and all VPAID"
+},
+"offset": {
+"$ref": "OffsetPosition",
+"description": "Upper-left corner coordinates of the popup window. Applicable if positionType is COORDINATES."
+},
+"positionType": {
+"description": "Popup window position either centered or at specific coordinate.",
+"enum": [
+"CENTER",
+"COORDINATES"
+],
+"enumDescriptions": [
+"window positioning at center.",
+"window positioning by upper left corner coordinates."
+],
+"type": "string"
+},
+"showAddressBar": {
+"description": "Whether to display the browser address bar.",
+"type": "boolean"
+},
+"showMenuBar": {
+"description": "Whether to display the browser menu bar.",
+"type": "boolean"
+},
+"showScrollBar": {
+"description": "Whether to display the browser scroll bar.",
+"type": "boolean"
+},
+"showStatusBar": {
+"description": "Whether to display the browser status bar.",
+"type": "boolean"
+},
+"showToolBar": {
+"description": "Whether to display the browser tool bar.",
+"type": "boolean"
+},
+"title": {
+"description": "Title of popup window.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PostalCode": {
+"description": "Contains information about a postal code that can be targeted by ads.",
+"id": "PostalCode",
+"properties": {
+"code": {
+"description": "Postal code. This is equivalent to the id field.",
+"type": "string"
+},
+"countryCode": {
+"description": "Country code of the country to which this postal code belongs.",
+"type": "string"
+},
+"countryDartId": {
+"description": "DART ID of the country to which this postal code belongs.",
+"format": "int64",
+"type": "string"
+},
+"id": {
+"description": "ID of this postal code.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#postalCode\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PostalCodesListResponse": {
+"description": "Postal Code List Response",
+"id": "PostalCodesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#postalCodesListResponse\".",
+"type": "string"
+},
+"postalCodes": {
+"description": "Postal code collection.",
+"items": {
+"$ref": "PostalCode"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Pricing": {
+"id": "Pricing",
+"properties": {
+"capCostType": {
+"description": "Cap cost type of this inventory item.",
+"enum": [
+"PLANNING_PLACEMENT_CAP_COST_TYPE_NONE",
+"PLANNING_PLACEMENT_CAP_COST_TYPE_MONTHLY",
+"PLANNING_PLACEMENT_CAP_COST_TYPE_CUMULATIVE"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"endDate": {
+"format": "date",
+"type": "string"
+},
+"flights": {
+"description": "Flights of this inventory item. A flight (a.k.a. pricing period) represents the inventory item pricing information for a specific period of time.",
+"items": {
+"$ref": "Flight"
+},
+"type": "array"
+},
+"groupType": {
+"description": "Group type of this inventory item if it represents a placement group. Is null otherwise. There are two type of placement groups: PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE is a simple group of inventory items that acts as a single pricing point for a group of tags. PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK is a group of inventory items that not only acts as a single pricing point, but also assumes that all the tags in it will be served at the same time. A roadblock requires one of its assigned inventory items to be marked as primary.",
+"enum": [
+"PLANNING_PLACEMENT_GROUP_TYPE_PACKAGE",
+"PLANNING_PLACEMENT_GROUP_TYPE_ROADBLOCK"
+],
+"enumDescriptions": [
+"A placement package represents \"package pricing\": Pricing and flight information is defined on the package, not on its child placements. The placements in a package do not need to be on the same page.",
+"A roadblock represents a set of placements that are all the same page. One of the child placements is designated as the \"primary\" placement for reporting purposes."
+],
+"type": "string"
+},
+"pricingType": {
+"description": "Pricing type of this inventory item.",
+"enum": [
+"PLANNING_PLACEMENT_PRICING_TYPE_IMPRESSIONS",
+"PLANNING_PLACEMENT_PRICING_TYPE_CPM",
+"PLANNING_PLACEMENT_PRICING_TYPE_CLICKS",
+"PLANNING_PLACEMENT_PRICING_TYPE_CPC",
+"PLANNING_PLACEMENT_PRICING_TYPE_CPA",
+"PLANNING_PLACEMENT_PRICING_TYPE_FLAT_RATE_IMPRESSIONS",
+"PLANNING_PLACEMENT_PRICING_TYPE_FLAT_RATE_CLICKS",
+"PLANNING_PLACEMENT_PRICING_TYPE_CPM_ACTIVEVIEW"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PricingSchedule": {
+"description": "Pricing Schedule",
+"id": "PricingSchedule",
+"properties": {
+"capCostOption": {
+"description": "Placement cap cost option.",
+"enum": [
+"CAP_COST_NONE",
+"CAP_COST_MONTHLY",
+"CAP_COST_CUMULATIVE"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"endDate": {
+"format": "date",
+"type": "string"
+},
+"flighted": {
+"description": "Whether this placement is flighted. If true, pricing periods will be computed automatically.",
+"type": "boolean"
+},
+"floodlightActivityId": {
+"description": "Floodlight activity ID associated with this placement. This field should be set when placement pricing type is set to PRICING_TYPE_CPA.",
+"format": "int64",
+"type": "string"
+},
+"pricingPeriods": {
+"description": "Pricing periods for this placement.",
+"items": {
+"$ref": "PricingSchedulePricingPeriod"
+},
+"type": "array"
+},
+"pricingType": {
+"description": "Placement pricing type. This field is required on insertion.",
+"enum": [
+"PRICING_TYPE_CPM",
+"PRICING_TYPE_CPC",
+"PRICING_TYPE_CPA",
+"PRICING_TYPE_FLAT_RATE_IMPRESSIONS",
+"PRICING_TYPE_FLAT_RATE_CLICKS",
+"PRICING_TYPE_CPM_ACTIVEVIEW"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+},
+"testingStartDate": {
+"format": "date",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PricingSchedulePricingPeriod": {
+"description": "Pricing Period",
+"id": "PricingSchedulePricingPeriod",
+"properties": {
+"endDate": {
+"format": "date",
+"type": "string"
+},
+"pricingComment": {
+"description": "Comments for this pricing period.",
+"type": "string"
+},
+"rateOrCostNanos": {
+"description": "Rate or cost of this pricing period in nanos (i.e., multiplied by 1000000000). Acceptable values are 0 to 1000000000000000000, inclusive.",
+"format": "int64",
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+},
+"units": {
+"description": "Units of this pricing period. Acceptable values are 0 to 10000000000, inclusive.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Project": {
+"description": "Contains properties of a Planning project.",
+"id": "Project",
+"properties": {
+"accountId": {
+"description": "Account ID of this project.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this project.",
+"format": "int64",
+"type": "string"
+},
+"audienceAgeGroup": {
+"description": "Audience age group of this project.",
+"enum": [
+"PLANNING_AUDIENCE_AGE_18_24",
+"PLANNING_AUDIENCE_AGE_25_34",
+"PLANNING_AUDIENCE_AGE_35_44",
+"PLANNING_AUDIENCE_AGE_45_54",
+"PLANNING_AUDIENCE_AGE_55_64",
+"PLANNING_AUDIENCE_AGE_65_OR_MORE",
+"PLANNING_AUDIENCE_AGE_UNKNOWN"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"audienceGender": {
+"description": "Audience gender of this project.",
+"enum": [
+"PLANNING_AUDIENCE_GENDER_MALE",
+"PLANNING_AUDIENCE_GENDER_FEMALE"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"budget": {
+"description": "Budget of this project in the currency specified by the current account. The value stored in this field represents only the non-fractional amount. For example, for USD, the smallest value that can be represented by this field is 1 US dollar.",
+"format": "int64",
+"type": "string"
+},
+"clientBillingCode": {
+"description": "Client billing code of this project.",
+"type": "string"
+},
+"clientName": {
+"description": "Name of the project client.",
+"type": "string"
+},
+"endDate": {
+"format": "date",
+"type": "string"
+},
+"id": {
+"description": "ID of this project. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#project\".",
+"type": "string"
+},
+"lastModifiedInfo": {
+"$ref": "LastModifiedInfo",
+"description": "Information about the most recent modification of this project."
+},
+"name": {
+"description": "Name of this project.",
+"type": "string"
+},
+"overview": {
+"description": "Overview of this project.",
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this project.",
+"format": "int64",
+"type": "string"
+},
+"targetClicks": {
+"description": "Number of clicks that the advertiser is targeting.",
+"format": "int64",
+"type": "string"
+},
+"targetConversions": {
+"description": "Number of conversions that the advertiser is targeting.",
+"format": "int64",
+"type": "string"
+},
+"targetCpaNanos": {
+"description": "CPA that the advertiser is targeting.",
+"format": "int64",
+"type": "string"
+},
+"targetCpcNanos": {
+"description": "CPC that the advertiser is targeting.",
+"format": "int64",
+"type": "string"
+},
+"targetCpmActiveViewNanos": {
+"description": "vCPM from Active View that the advertiser is targeting.",
+"format": "int64",
+"type": "string"
+},
+"targetCpmNanos": {
+"description": "CPM that the advertiser is targeting.",
+"format": "int64",
+"type": "string"
+},
+"targetImpressions": {
+"description": "Number of impressions that the advertiser is targeting.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProjectsListResponse": {
+"description": "Project List Response",
+"id": "ProjectsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#projectsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"projects": {
+"description": "Project collection.",
+"items": {
+"$ref": "Project"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ReachReportCompatibleFields": {
+"description": "Represents fields that are compatible to be selected for a report of type \"REACH\".",
+"id": "ReachReportCompatibleFields",
+"properties": {
+"dimensionFilters": {
+"description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"dimensions": {
+"description": "Dimensions which are compatible to be selected in the \"dimensions\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#reachReportCompatibleFields.",
+"type": "string"
+},
+"metrics": {
+"description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+},
+"pivotedActivityMetrics": {
+"description": "Metrics which are compatible to be selected as activity metrics to pivot on in the \"activities\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+},
+"reachByFrequencyMetrics": {
+"description": "Metrics which are compatible to be selected in the \"reachByFrequencyMetricNames\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Recipient": {
+"description": "Represents a recipient.",
+"id": "Recipient",
+"properties": {
+"deliveryType": {
+"description": "The delivery type for the recipient.",
+"enum": [
+"LINK",
+"ATTACHMENT"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"email": {
+"description": "The email address of the recipient.",
+"type": "string"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#recipient.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Region": {
+"description": "Contains information about a region that can be targeted by ads.",
+"id": "Region",
+"properties": {
+"countryCode": {
+"description": "Country code of the country to which this region belongs.",
+"type": "string"
+},
+"countryDartId": {
+"description": "DART ID of the country to which this region belongs.",
+"format": "int64",
+"type": "string"
+},
+"dartId": {
+"description": "DART ID of this region.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#region\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this region.",
+"type": "string"
+},
+"regionCode": {
+"description": "Region code.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RegionsListResponse": {
+"description": "Region List Response",
+"id": "RegionsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#regionsListResponse\".",
+"type": "string"
+},
+"regions": {
+"description": "Region collection.",
+"items": {
+"$ref": "Region"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"RemarketingList": {
+"description": "Contains properties of a remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource can be used to manage remarketing lists that are owned by your advertisers. To see all remarketing lists that are visible to your advertisers, including those that are shared to your advertiser or account, use the TargetableRemarketingLists resource.",
+"id": "RemarketingList",
+"properties": {
+"accountId": {
+"description": "Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.",
+"format": "int64",
+"type": "string"
+},
+"active": {
+"description": "Whether this remarketing list is active.",
+"type": "boolean"
+},
+"advertiserId": {
+"description": "Dimension value for the advertiser ID that owns this remarketing list. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"description": {
+"description": "Remarketing list description.",
+"type": "string"
+},
+"id": {
+"description": "Remarketing list ID. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#remarketingList\".",
+"type": "string"
+},
+"lifeSpan": {
+"description": "Number of days that a user should remain in the remarketing list without an impression. Acceptable values are 1 to 540, inclusive.",
+"format": "int64",
+"type": "string"
+},
+"listPopulationRule": {
+"$ref": "ListPopulationRule",
+"description": "Rule used to populate the remarketing list with users."
+},
+"listSize": {
+"description": "Number of users currently in the list. This is a read-only field.",
+"format": "int64",
+"type": "string"
+},
+"listSource": {
+"description": "Product from which this remarketing list was originated.",
+"enum": [
+"REMARKETING_LIST_SOURCE_OTHER",
+"REMARKETING_LIST_SOURCE_ADX",
+"REMARKETING_LIST_SOURCE_DFP",
+"REMARKETING_LIST_SOURCE_XFP",
+"REMARKETING_LIST_SOURCE_DFA",
+"REMARKETING_LIST_SOURCE_GA",
+"REMARKETING_LIST_SOURCE_YOUTUBE",
+"REMARKETING_LIST_SOURCE_DBM",
+"REMARKETING_LIST_SOURCE_GPLUS",
+"REMARKETING_LIST_SOURCE_DMP",
+"REMARKETING_LIST_SOURCE_PLAY_STORE"
+],
+"enumDescriptions": [
+"covers sources not supported in DCM other than those listed below",
+"ADX",
+"DFP",
+"XFP",
+"DoubleClick Campaign Manager",
+"Google Analytics Premium",
+"Youtube",
+"DoubleClick Bid Manager",
+"G+",
+"DoubleClick Audience Center",
+"Playstore"
+],
+"type": "string"
+},
+"name": {
+"description": "Name of the remarketing list. This is a required field. Must be no greater than 128 characters long.",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RemarketingListShare": {
+"description": "Contains properties of a remarketing list's sharing information. Sharing allows other accounts or advertisers to target to your remarketing lists. This resource can be used to manage remarketing list sharing to other accounts and advertisers.",
+"id": "RemarketingListShare",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#remarketingListShare\".",
+"type": "string"
+},
+"remarketingListId": {
+"description": "Remarketing list ID. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"sharedAccountIds": {
+"description": "Accounts that the remarketing list is shared with.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"sharedAdvertiserIds": {
+"description": "Advertisers that the remarketing list is shared with.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"RemarketingListsListResponse": {
+"description": "Remarketing list response",
+"id": "RemarketingListsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#remarketingListsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"remarketingLists": {
+"description": "Remarketing list collection.",
+"items": {
+"$ref": "RemarketingList"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Report": {
+"description": "Represents a Report resource.",
+"id": "Report",
+"properties": {
+"accountId": {
+"description": "The account ID to which this report belongs.",
+"format": "int64",
+"type": "string"
+},
+"criteria": {
+"description": "The report criteria for a report of type \"STANDARD\".",
+"properties": {
+"activities": {
+"$ref": "Activities",
+"description": "Activity group."
+},
+"customRichMediaEvents": {
+"$ref": "CustomRichMediaEvents",
+"description": "Custom Rich Media Events group."
+},
+"dateRange": {
+"$ref": "DateRange",
+"description": "The date range for which this report should be run."
+},
+"dimensionFilters": {
+"description": "The list of filters on which dimensions are filtered. Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"dimensions": {
+"description": "The list of standard dimensions the report should include.",
+"items": {
+"$ref": "SortedDimension"
+},
+"type": "array"
+},
+"metricNames": {
+"description": "The list of names of metrics the report should include.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"crossDimensionReachCriteria": {
+"description": "The report criteria for a report of type \"CROSS_DIMENSION_REACH\".",
+"properties": {
+"breakdown": {
+"description": "The list of dimensions the report should include.",
+"items": {
+"$ref": "SortedDimension"
+},
+"type": "array"
+},
+"dateRange": {
+"$ref": "DateRange",
+"description": "The date range this report should be run for."
+},
+"dimension": {
+"description": "The dimension option.",
+"enum": [
+"ADVERTISER",
+"CAMPAIGN",
+"SITE_BY_ADVERTISER",
+"SITE_BY_CAMPAIGN"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"dimensionFilters": {
+"description": "The list of filters on which dimensions are filtered.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"metricNames": {
+"description": "The list of names of metrics the report should include.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"overlapMetricNames": {
+"description": "The list of names of overlap metrics the report should include.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"pivoted": {
+"description": "Whether the report is pivoted or not. Defaults to true.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"crossMediaReachCriteria": {
+"description": "Optional. The report criteria for a report of type \"CROSS_MEDIA_REACH\".",
+"properties": {
+"dateRange": {
+"$ref": "DateRange",
+"description": "Required. The date range this report should be run for."
+},
+"dimensionFilters": {
+"description": "Required. The list of filters on which dimensions are filtered. Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"dimensions": {
+"description": "Required. The list of dimensions the report should include.",
+"items": {
+"$ref": "SortedDimension"
+},
+"type": "array"
+},
+"metricNames": {
+"description": "Required. The list of names of metrics the report should include.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"delivery": {
+"description": "The report's email delivery settings.",
+"properties": {
+"emailOwner": {
+"description": "Whether the report should be emailed to the report owner.",
+"type": "boolean"
+},
+"emailOwnerDeliveryType": {
+"description": "The type of delivery for the owner to receive, if enabled.",
+"enum": [
+"LINK",
+"ATTACHMENT"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"message": {
+"description": "The message to be sent with each email.",
+"type": "string"
+},
+"recipients": {
+"description": "The list of recipients to which to email the report.",
+"items": {
+"$ref": "Recipient"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"etag": {
+"description": "The eTag of this response for caching purposes.",
+"type": "string"
+},
+"fileName": {
+"description": "The filename used when generating report files for this report.",
+"type": "string"
+},
+"floodlightCriteria": {
+"description": "The report criteria for a report of type \"FLOODLIGHT\".",
+"properties": {
+"customRichMediaEvents": {
+"description": "The list of custom rich media events to include.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"dateRange": {
+"$ref": "DateRange",
+"description": "The date range this report should be run for."
+},
+"dimensionFilters": {
+"description": "The list of filters on which dimensions are filtered. Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"dimensions": {
+"description": "The list of dimensions the report should include.",
+"items": {
+"$ref": "SortedDimension"
+},
+"type": "array"
+},
+"floodlightConfigId": {
+"$ref": "DimensionValue",
+"description": "The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'."
+},
+"metricNames": {
+"description": "The list of names of metrics the report should include.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"reportProperties": {
+"description": "The properties of the report.",
+"properties": {
+"includeAttributedIPConversions": {
+"description": "Include conversions that have no cookie, but do have an exposure path.",
+"type": "boolean"
+},
+"includeUnattributedCookieConversions": {
+"description": "Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.",
+"type": "boolean"
+},
+"includeUnattributedIPConversions": {
+"description": "Include conversions that have no associated cookies and no exposures. It\u2019s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.",
+"type": "boolean"
+}
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"format": {
+"description": "The output format of the report. If not specified, default format is \"CSV\". Note that the actual format in the completed report file might differ if for instance the report's size exceeds the format's capabilities. \"CSV\" will then be the fallback format.",
+"enum": [
+"CSV",
+"EXCEL"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"id": {
+"description": "The unique ID identifying this report resource.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#report.",
+"type": "string"
+},
+"lastModifiedTime": {
+"description": "The timestamp (in milliseconds since epoch) of when this report was last modified.",
+"format": "uint64",
+"type": "string"
+},
+"name": {
+"description": "The name of the report.",
+"type": "string"
+},
+"ownerProfileId": {
+"description": "The user profile id of the owner of this report.",
+"format": "int64",
+"type": "string"
+},
+"pathToConversionCriteria": {
+"description": "The report criteria for a report of type \"PATH_TO_CONVERSION\".",
+"properties": {
+"activityFilters": {
+"description": "The list of 'dfa:activity' values to filter on.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"conversionDimensions": {
+"description": "The list of conversion dimensions the report should include.",
+"items": {
+"$ref": "SortedDimension"
+},
+"type": "array"
+},
+"customFloodlightVariables": {
+"description": "The list of custom floodlight variables the report should include.",
+"items": {
+"$ref": "SortedDimension"
+},
+"type": "array"
+},
+"customRichMediaEvents": {
+"description": "The list of custom rich media events to include.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"dateRange": {
+"$ref": "DateRange",
+"description": "The date range this report should be run for."
+},
+"floodlightConfigId": {
+"$ref": "DimensionValue",
+"description": "The floodlight ID for which to show data in this report. All advertisers associated with that ID will automatically be added. The dimension of the value needs to be 'dfa:floodlightConfigId'."
+},
+"metricNames": {
+"description": "The list of names of metrics the report should include.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"perInteractionDimensions": {
+"description": "The list of per interaction dimensions the report should include.",
+"items": {
+"$ref": "SortedDimension"
+},
+"type": "array"
+},
+"reportProperties": {
+"description": "The properties of the report.",
+"properties": {
+"clicksLookbackWindow": {
+"description": "CM360 checks to see if a click interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.",
+"format": "int32",
+"type": "integer"
+},
+"impressionsLookbackWindow": {
+"description": "CM360 checks to see if an impression interaction occurred within the specified period of time before a conversion. By default the value is pulled from Floodlight or you can manually enter a custom value. Valid values: 1-90.",
+"format": "int32",
+"type": "integer"
+},
+"includeAttributedIPConversions": {
+"description": "Deprecated: has no effect.",
+"type": "boolean"
+},
+"includeUnattributedCookieConversions": {
+"description": "Include conversions of users with a DoubleClick cookie but without an exposure. That means the user did not click or see an ad from the advertiser within the Floodlight group, or that the interaction happened outside the lookback window.",
+"type": "boolean"
+},
+"includeUnattributedIPConversions": {
+"description": "Include conversions that have no associated cookies and no exposures. It\u2019s therefore impossible to know how the user was exposed to your ads during the lookback window prior to a conversion.",
+"type": "boolean"
+},
+"maximumClickInteractions": {
+"description": "The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.",
+"format": "int32",
+"type": "integer"
+},
+"maximumImpressionInteractions": {
+"description": "The maximum number of click interactions to include in the report. Advertisers currently paying for E2C reports get up to 200 (100 clicks, 100 impressions). If another advertiser in your network is paying for E2C, you can have up to 5 total exposures per report.",
+"format": "int32",
+"type": "integer"
+},
+"maximumInteractionGap": {
+"description": "The maximum amount of time that can take place between interactions (clicks or impressions) by the same user. Valid values: 1-90.",
+"format": "int32",
+"type": "integer"
+},
+"pivotOnInteractionPath": {
+"description": "Enable pivoting on interaction path.",
+"type": "boolean"
+}
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"reachCriteria": {
+"description": "The report criteria for a report of type \"REACH\".",
+"properties": {
+"activities": {
+"$ref": "Activities",
+"description": "Activity group."
+},
+"customRichMediaEvents": {
+"$ref": "CustomRichMediaEvents",
+"description": "Custom Rich Media Events group."
+},
+"dateRange": {
+"$ref": "DateRange",
+"description": "The date range this report should be run for."
+},
+"dimensionFilters": {
+"description": "The list of filters on which dimensions are filtered. Filters for different dimensions are ANDed, filters for the same dimension are grouped together and ORed.",
+"items": {
+"$ref": "DimensionValue"
+},
+"type": "array"
+},
+"dimensions": {
+"description": "The list of dimensions the report should include.",
+"items": {
+"$ref": "SortedDimension"
+},
+"type": "array"
+},
+"enableAllDimensionCombinations": {
+"description": "Whether to enable all reach dimension combinations in the report. Defaults to false. If enabled, the date range of the report should be within the last 42 days.",
+"type": "boolean"
+},
+"metricNames": {
+"description": "The list of names of metrics the report should include.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"reachByFrequencyMetricNames": {
+"description": "The list of names of Reach By Frequency metrics the report should include.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"schedule": {
+"description": "The report's schedule. Can only be set if the report's 'dateRange' is a relative date range and the relative date range is not \"TODAY\".",
+"properties": {
+"active": {
+"description": "Whether the schedule is active or not. Must be set to either true or false.",
+"type": "boolean"
+},
+"every": {
+"description": "Defines every how many days, weeks or months the report should be run. Needs to be set when \"repeats\" is either \"DAILY\", \"WEEKLY\" or \"MONTHLY\".",
+"format": "int32",
+"type": "integer"
+},
+"expirationDate": {
+"format": "date",
+"type": "string"
+},
+"repeats": {
+"description": "The interval for which the report is repeated. Note: - \"DAILY\" also requires field \"every\" to be set. - \"WEEKLY\" also requires fields \"every\" and \"repeatsOnWeekDays\" to be set. - \"MONTHLY\" also requires fields \"every\" and \"runsOnDayOfMonth\" to be set. ",
+"type": "string"
+},
+"repeatsOnWeekDays": {
+"description": "List of week days \"WEEKLY\" on which scheduled reports should run.",
+"items": {
+"enum": [
+"SUNDAY",
+"MONDAY",
+"TUESDAY",
+"WEDNESDAY",
+"THURSDAY",
+"FRIDAY",
+"SATURDAY"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"type": "array"
+},
+"runsOnDayOfMonth": {
+"description": "Enum to define for \"MONTHLY\" scheduled reports whether reports should be repeated on the same day of the month as \"startDate\" or the same day of the week of the month. Example: If 'startDate' is Monday, April 2nd 2012 (2012-04-02), \"DAY_OF_MONTH\" would run subsequent reports on the 2nd of every Month, and \"WEEK_OF_MONTH\" would run subsequent reports on the first Monday of the month.",
+"enum": [
+"DAY_OF_MONTH",
+"WEEK_OF_MONTH"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"startDate": {
+"format": "date",
+"type": "string"
+},
+"timezone": {
+"description": "The timezone when the report will run.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"subAccountId": {
+"description": "The subaccount ID to which this report belongs if applicable.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "The type of the report.",
+"enum": [
+"STANDARD",
+"REACH",
+"PATH_TO_CONVERSION",
+"CROSS_DIMENSION_REACH",
+"FLOODLIGHT",
+"CROSS_MEDIA_REACH"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ReportCompatibleFields": {
+"description": "Represents fields that are compatible to be selected for a report of type \"STANDARD\".",
+"id": "ReportCompatibleFields",
+"properties": {
+"dimensionFilters": {
+"description": "Dimensions which are compatible to be selected in the \"dimensionFilters\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"dimensions": {
+"description": "Dimensions which are compatible to be selected in the \"dimensions\" section of the report.",
+"items": {
+"$ref": "Dimension"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#reportCompatibleFields.",
+"type": "string"
+},
+"metrics": {
+"description": "Metrics which are compatible to be selected in the \"metricNames\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+},
+"pivotedActivityMetrics": {
+"description": "Metrics which are compatible to be selected as activity metrics to pivot on in the \"activities\" section of the report.",
+"items": {
+"$ref": "Metric"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ReportList": {
+"description": "Represents the list of reports.",
+"id": "ReportList",
+"properties": {
+"etag": {
+"description": "The eTag of this response for caching purposes.",
+"type": "string"
+},
+"items": {
+"description": "The reports returned in this response.",
+"items": {
+"$ref": "Report"
+},
+"type": "array"
+},
+"kind": {
+"description": "The kind of list this is, in this case dfareporting#reportList.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Continuation token used to page through reports. To retrieve the next page of results, set the next request's \"pageToken\" to the value of this field. The page token is only valid for a limited amount of time and should not be persisted.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ReportsConfiguration": {
+"description": "Reporting Configuration",
+"id": "ReportsConfiguration",
+"properties": {
+"exposureToConversionEnabled": {
+"description": "Whether the exposure to conversion report is enabled. This report shows detailed pathway information on up to 10 of the most recent ad exposures seen by a user before converting.",
+"type": "boolean"
+},
+"lookbackConfiguration": {
+"$ref": "LookbackConfiguration",
+"description": "Default lookback windows for new advertisers in this account."
+},
+"reportGenerationTimeZoneId": {
+"description": "Report generation time zone ID of this account. This is a required field that cannot be changed on update. Acceptable values are: - \"1\" for \"America/New_York\" - \"2\" for \"Europe/London\" - \"3\" for \"Europe/Paris\" - \"4\" for \"Africa/Johannesburg\" - \"5\" for \"Asia/Jerusalem\" - \"6\" for \"Asia/Shanghai\" - \"7\" for \"Asia/Hong_Kong\" - \"8\" for \"Asia/Tokyo\" - \"9\" for \"Australia/Sydney\" - \"10\" for \"Asia/Dubai\" - \"11\" for \"America/Los_Angeles\" - \"12\" for \"Pacific/Auckland\" - \"13\" for \"America/Sao_Paulo\" - \"16\" for \"America/Asuncion\" - \"17\" for \"America/Chicago\" - \"18\" for \"America/Denver\" - \"19\" for \"America/St_Johns\" - \"20\" for \"Asia/Dhaka\" - \"21\" for \"Asia/Jakarta\" - \"22\" for \"Asia/Kabul\" - \"23\" for \"Asia/Karachi\" - \"24\" for \"Asia/Calcutta\" - \"25\" for \"Asia/Pyongyang\" - \"26\" for \"Asia/Rangoon\" - \"27\" for \"Atlantic/Cape_Verde\" - \"28\" for \"Atlantic/South_Georgia\" - \"29\" for \"Australia/Adelaide\" - \"30\" for \"Australia/Lord_Howe\" - \"31\" for \"Europe/Moscow\" - \"32\" for \"Pacific/Kiritimati\" - \"35\" for \"Pacific/Norfolk\" - \"36\" for \"Pacific/Tongatapu\" ",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RichMediaExitOverride": {
+"description": "Rich Media Exit Override.",
+"id": "RichMediaExitOverride",
+"properties": {
+"clickThroughUrl": {
+"$ref": "ClickThroughUrl",
+"description": "Click-through URL of this rich media exit override. Applicable if the enabled field is set to true."
+},
+"enabled": {
+"description": "Whether to use the clickThroughUrl. If false, the creative-level exit will be used.",
+"type": "boolean"
+},
+"exitId": {
+"description": "ID for the override to refer to a specific exit in the creative.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Rule": {
+"description": "A rule associates an asset with a targeting template for asset-level targeting. Applicable to INSTREAM_VIDEO creatives.",
+"id": "Rule",
+"properties": {
+"assetId": {
+"description": "A creativeAssets[].id. This should refer to one of the parent assets in this creative. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "A user-friendly name for this rule. This is a required field.",
+"type": "string"
+},
+"targetingTemplateId": {
+"description": "A targeting template ID. The targeting from the targeting template will be used to determine whether this asset should be served. This is a required field.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Site": {
+"description": "Contains properties of a site.",
+"id": "Site",
+"properties": {
+"accountId": {
+"description": "Account ID of this site. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"adServingPlatformId": {
+"description": "Optional. Ad serving platform ID to identify the ad serving platform used by the site. Measurement partners can use this field to add ad-server specific macros. If set, this value acts as the default during placement creation. Possible values are: * `1`, Adelphic * `2`, Adform * `3`, Adobe * `4`, Amobee * `5`, Basis (Centro) * `6`, Beeswax * `7`, Amazon * `8`, DV360 (DBM) * `9`, Innovid * `10`, MediaMath * `11`, Roku OneView DSP * `12`, TabMo Hawk * `13`, The Trade Desk * `14`, Xandr Invest DSP * `15`, Yahoo DSP * `16`, Zeta Global * `17`, Scaleout * `18`, Bidtellect * `19`, Unicorn * `20`, Teads * `21`, Quantcast * `22`, Cognitiv",
+"format": "int64",
+"type": "string"
+},
+"approved": {
+"description": "Whether this site is approved.",
+"type": "boolean"
+},
+"directorySiteId": {
+"description": "Directory site associated with this site. This is a required field that is read-only after insertion.",
+"format": "int64",
+"type": "string"
+},
+"directorySiteIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the directory site. This is a read-only, auto-generated field."
+},
+"id": {
+"description": "ID of this site. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"idDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of this site. This is a read-only, auto-generated field."
+},
+"keyName": {
+"description": "Key name of this site. This is a read-only, auto-generated field.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#site\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this site.This is a required field. Must be less than 128 characters long. If this site is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this site is a top-level site, and the name must be unique among top-level sites of the same account.",
+"type": "string"
+},
+"siteContacts": {
+"description": "Site contacts.",
+"items": {
+"$ref": "SiteContact"
+},
+"type": "array"
+},
+"siteSettings": {
+"$ref": "SiteSettings",
+"description": "Site-wide settings."
+},
+"subaccountId": {
+"description": "Subaccount ID of this site. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"videoSettings": {
+"$ref": "SiteVideoSettings",
+"description": "Default video settings for new placements created under this site. This value will be used to populate the placements.videoSettings field, when no value is specified for the new placement."
+}
+},
+"type": "object"
+},
+"SiteCompanionSetting": {
+"description": "Companion Settings",
+"id": "SiteCompanionSetting",
+"properties": {
+"companionsDisabled": {
+"description": "Whether companions are disabled for this site template.",
+"type": "boolean"
+},
+"enabledSizes": {
+"description": "Allowlist of companion sizes to be served via this site template. Set this list to null or empty to serve all companion sizes.",
+"items": {
+"$ref": "Size"
+},
+"type": "array"
+},
+"imageOnly": {
+"description": "Whether to serve only static images as companions.",
+"type": "boolean"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#siteCompanionSetting\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SiteContact": {
+"description": "Site Contact",
+"id": "SiteContact",
+"properties": {
+"address": {
+"description": "Address of this site contact.",
+"type": "string"
+},
+"contactType": {
+"description": "Site contact type.",
+"enum": [
+"SALES_PERSON",
+"TRAFFICKER"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"email": {
+"description": "Email address of this site contact. This is a required field.",
+"type": "string"
+},
+"firstName": {
+"description": "First name of this site contact.",
+"type": "string"
+},
+"id": {
+"description": "ID of this site contact. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"lastName": {
+"description": "Last name of this site contact.",
+"type": "string"
+},
+"phone": {
+"description": "Primary phone number of this site contact.",
+"type": "string"
+},
+"title": {
+"description": "Title or designation of this site contact.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SiteSettings": {
+"description": "Site Settings",
+"id": "SiteSettings",
+"properties": {
+"activeViewOptOut": {
+"description": "Whether active view creatives are disabled for this site.",
+"type": "boolean"
+},
+"adBlockingOptOut": {
+"description": "Whether this site opts out of ad blocking. When true, ad blocking is disabled for all placements under the site, regardless of the individual placement settings. When false, the campaign and placement settings take effect.",
+"type": "boolean"
+},
+"disableNewCookie": {
+"description": "Whether new cookies are disabled for this site.",
+"type": "boolean"
+},
+"tagSetting": {
+"$ref": "TagSetting",
+"description": "Configuration settings for dynamic and image floodlight tags."
+},
+"videoActiveViewOptOutTemplate": {
+"description": "Whether Verification and ActiveView for in-stream video creatives are disabled by default for new placements created under this site. This value will be used to populate the placement.videoActiveViewOptOut field, when no value is specified for the new placement.",
+"type": "boolean"
+},
+"vpaidAdapterChoiceTemplate": {
+"description": "Default VPAID adapter setting for new placements created under this site. This value will be used to populate the placements.vpaidAdapterChoice field, when no value is specified for the new placement. Controls which VPAID format the measurement adapter will use for in-stream video creatives assigned to the placement. The publisher's specifications will typically determine this setting. For VPAID creatives, the adapter format will match the VPAID format (HTML5 VPAID creatives use the HTML5 adapter). *Note:* Flash is no longer supported. This field now defaults to HTML5 when the following values are provided: FLASH, BOTH.",
+"enum": [
+"DEFAULT",
+"FLASH",
+"HTML5",
+"BOTH"
+],
+"enumDescriptions": [
+"DEFAULT means Google chooses which adapter, if any, to serve.",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"SiteSkippableSetting": {
+"description": "Skippable Settings",
+"id": "SiteSkippableSetting",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#siteSkippableSetting\".",
+"type": "string"
+},
+"progressOffset": {
+"$ref": "VideoOffset",
+"description": "Amount of time to play videos served to this site template before counting a view. Applicable when skippable is true."
+},
+"skipOffset": {
+"$ref": "VideoOffset",
+"description": "Amount of time to play videos served to this site before the skip button should appear. Applicable when skippable is true."
+},
+"skippable": {
+"description": "Whether the user can skip creatives served to this site. This will act as default for new placements created under this site.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SiteTranscodeSetting": {
+"description": "Transcode Settings",
+"id": "SiteTranscodeSetting",
+"properties": {
+"enabledVideoFormats": {
+"description": "Allowlist of video formats to be served to this site template. Set this list to null or empty to serve all video formats.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#siteTranscodeSetting\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SiteVideoSettings": {
+"description": "Video Settings",
+"id": "SiteVideoSettings",
+"properties": {
+"companionSettings": {
+"$ref": "SiteCompanionSetting",
+"description": "Settings for the companion creatives of video creatives served to this site."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#siteVideoSettings\".",
+"type": "string"
+},
+"obaEnabled": {
+"description": "Whether OBA icons are enabled for this placement.",
+"type": "boolean"
+},
+"obaSettings": {
+"$ref": "ObaIcon",
+"description": "Settings for the OBA icon of video creatives served to this site. This will act as default for new placements created under this site."
+},
+"orientation": {
+"description": "Orientation of a site template used for video. This will act as default for new placements created under this site.",
+"enum": [
+"ANY",
+"LANDSCAPE",
+"PORTRAIT"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"publisherSpecificationId": {
+"description": "Publisher specification ID used to identify site-associated publisher requirements and automatically populate transcode settings. If publisher specification ID is specified, it will take precedence over transcode settings. Possible values are: * `1`, Hulu * `2`, NBC * `3`, CBS * `4`, CBS Desktop * `5`, Discovery * `6`, VEVO HD * `7`, VEVO Vertical * `8`, Fox * `9`, CW Network * `10`, Disney * `11`, IGN * `12`, NFL.com * `13`, Turner Broadcasting * `14`, Tubi on Fox * `15`, Hearst Corporation * `16`, Twitch Desktop * `17`, ABC * `18`, Univision * `19`, MLB.com * `20`, MLB.com Mobile * `21`, MLB.com OTT * `22`, Polsat * `23`, TVN * `24`, Mediaset * `25`, Antena 3 * `26`, Mediamond * `27`, Sky Italia * `28`, Tubi on CBS * `29`, Spotify * `30`, Paramount * `31`, Max",
+"format": "int64",
+"type": "string"
+},
+"skippableSettings": {
+"$ref": "SiteSkippableSetting",
+"description": "Settings for the skippability of video creatives served to this site. This will act as default for new placements created under this site."
+},
+"transcodeSettings": {
+"$ref": "SiteTranscodeSetting",
+"description": "Settings for the transcodes of video creatives served to this site. This will act as default for new placements created under this site."
+}
+},
+"type": "object"
+},
+"SitesListResponse": {
+"description": "Site List Response",
+"id": "SitesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#sitesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"sites": {
+"description": "Site collection.",
+"items": {
+"$ref": "Site"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Size": {
+"description": "Represents the dimensions of ads, placements, creatives, or creative assets.",
+"id": "Size",
+"properties": {
+"height": {
+"description": "Height of this size. Acceptable values are 0 to 32767, inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"iab": {
+"description": "IAB standard size. This is a read-only, auto-generated field.",
+"type": "boolean"
+},
+"id": {
+"description": "ID of this size. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#size\".",
+"type": "string"
+},
+"width": {
+"description": "Width of this size. Acceptable values are 0 to 32767, inclusive.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"SizesListResponse": {
+"description": "Size List Response",
+"id": "SizesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#sizesListResponse\".",
+"type": "string"
+},
+"sizes": {
+"description": "Size collection.",
+"items": {
+"$ref": "Size"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SkippableSetting": {
+"description": "Skippable Settings",
+"id": "SkippableSetting",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#skippableSetting\".",
+"type": "string"
+},
+"progressOffset": {
+"$ref": "VideoOffset",
+"description": "Amount of time to play videos served to this placement before counting a view. Applicable when skippable is true."
+},
+"skipOffset": {
+"$ref": "VideoOffset",
+"description": "Amount of time to play videos served to this placement before the skip button should appear. Applicable when skippable is true."
+},
+"skippable": {
+"description": "Whether the user can skip creatives served to this placement.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SortedDimension": {
+"description": "Represents a sorted dimension.",
+"id": "SortedDimension",
+"properties": {
+"kind": {
+"description": "The kind of resource this is, in this case dfareporting#sortedDimension.",
+"type": "string"
+},
+"name": {
+"description": "The name of the dimension.",
+"type": "string"
+},
+"sortOrder": {
+"description": "An optional sort order for the dimension column.",
+"enum": [
+"ASCENDING",
+"DESCENDING"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Subaccount": {
+"description": "Contains properties of a Campaign Manager subaccount.",
+"id": "Subaccount",
+"properties": {
+"accountId": {
+"description": "ID of the account that contains this subaccount. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"availablePermissionIds": {
+"description": "IDs of the available user role permissions for this subaccount.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"id": {
+"description": "ID of this subaccount. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#subaccount\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this subaccount. This is a required field. Must be less than 128 characters long and be unique among subaccounts of the same account.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SubaccountsListResponse": {
+"description": "Subaccount List Response",
+"id": "SubaccountsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#subaccountsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"subaccounts": {
+"description": "Subaccount collection.",
+"items": {
+"$ref": "Subaccount"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TagData": {
+"description": "Placement Tag Data",
+"id": "TagData",
+"properties": {
+"adId": {
+"description": "Ad associated with this placement tag. Applicable only when format is PLACEMENT_TAG_TRACKING.",
+"format": "int64",
+"type": "string"
+},
+"clickTag": {
+"description": "Tag string to record a click.",
+"type": "string"
+},
+"creativeId": {
+"description": "Creative associated with this placement tag. Applicable only when format is PLACEMENT_TAG_TRACKING.",
+"format": "int64",
+"type": "string"
+},
+"format": {
+"description": "TagData tag format of this tag.",
+"enum": [
+"PLACEMENT_TAG_STANDARD",
+"PLACEMENT_TAG_IFRAME_JAVASCRIPT",
+"PLACEMENT_TAG_IFRAME_ILAYER",
+"PLACEMENT_TAG_INTERNAL_REDIRECT",
+"PLACEMENT_TAG_JAVASCRIPT",
+"PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT",
+"PLACEMENT_TAG_INTERSTITIAL_INTERNAL_REDIRECT",
+"PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT",
+"PLACEMENT_TAG_CLICK_COMMANDS",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH",
+"PLACEMENT_TAG_TRACKING",
+"PLACEMENT_TAG_TRACKING_IFRAME",
+"PLACEMENT_TAG_TRACKING_JAVASCRIPT",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_3",
+"PLACEMENT_TAG_IFRAME_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INTERSTITIAL_IFRAME_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INTERSTITIAL_JAVASCRIPT_LEGACY",
+"PLACEMENT_TAG_INSTREAM_VIDEO_PREFETCH_VAST_4",
+"PLACEMENT_TAG_TRACKING_THIRD_PARTY_MEASUREMENT"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"impressionTag": {
+"description": "Tag string for serving an ad.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TagSetting": {
+"description": "Tag Settings",
+"id": "TagSetting",
+"properties": {
+"additionalKeyValues": {
+"description": "Additional key-values to be included in tags. Each key-value pair must be of the form key=value, and pairs must be separated by a semicolon (;). Keys and values must not contain commas. For example, id=2;color=red is a valid value for this field.",
+"type": "string"
+},
+"includeClickThroughUrls": {
+"description": "Whether static landing page URLs should be included in the tags. New placements will default to the value set on their site.",
+"type": "boolean"
+},
+"includeClickTracking": {
+"description": "Whether click-tracking string should be included in the tags.",
+"type": "boolean"
+},
+"keywordOption": {
+"description": "Option specifying how keywords are embedded in ad tags. This setting can be used to specify whether keyword placeholders are inserted in placement tags for this site. Publishers can then add keywords to those placeholders.",
+"enum": [
+"PLACEHOLDER_WITH_LIST_OF_KEYWORDS",
+"IGNORE",
+"GENERATE_SEPARATE_TAG_FOR_EACH_KEYWORD"
+],
+"enumDescriptions": [
+"Creates DART ad tags with a placeholder, such as kw=[keyword] and a list of keywords. The site trafficker must replace [keyword] with the keywords targeted by an ad.",
+"Creates DART ad tags that do not have a placeholder for keywords and creates a list of keywords separately from the DART ad tags. Use this option if the site uses a keyword referrer or is a site that uses DART for Publishers.",
+"Results in unique tag generation for each relevant keyword during tag export. For example, an ad with three keywords will generate three tags with each tag having its kw= parameter filled in with the relevant keyword values."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"TagSettings": {
+"description": "Dynamic and Image Tag Settings.",
+"id": "TagSettings",
+"properties": {
+"dynamicTagEnabled": {
+"description": "Whether dynamic floodlight tags are enabled.",
+"type": "boolean"
+},
+"imageTagEnabled": {
+"description": "Whether image tags are enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"TargetWindow": {
+"description": "Target Window.",
+"id": "TargetWindow",
+"properties": {
+"customHtml": {
+"description": "User-entered value.",
+"type": "string"
+},
+"targetWindowOption": {
+"description": "Type of browser window for which the backup image of the flash creative can be displayed.",
+"enum": [
+"NEW_WINDOW",
+"CURRENT_WINDOW",
+"CUSTOM"
+],
+"enumDescriptions": [
+"Open up a new window to display the backup image Corresponds to \"_blank\" in html",
+"Use the current window to display the backup image Corresponds to \"_top\" in html",
+"User-defined HTML used to display the backup image Corresponds to \"other\""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"TargetableRemarketingList": {
+"description": "Contains properties of a targetable remarketing list. Remarketing enables you to create lists of users who have performed specific actions on a site, then target ads to members of those lists. This resource is a read-only view of a remarketing list to be used to facilitate targeting ads to specific lists. Remarketing lists that are owned by your advertisers and those that are shared to your advertisers or account are accessible via this resource. To manage remarketing lists that are owned by your advertisers, use the RemarketingLists resource.",
+"id": "TargetableRemarketingList",
+"properties": {
+"accountId": {
+"description": "Account ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.",
+"format": "int64",
+"type": "string"
+},
+"active": {
+"description": "Whether this targetable remarketing list is active.",
+"type": "boolean"
+},
+"advertiserId": {
+"description": "Dimension value for the advertiser ID that owns this targetable remarketing list.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser."
+},
+"description": {
+"description": "Targetable remarketing list description.",
+"type": "string"
+},
+"id": {
+"description": "Targetable remarketing list ID.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#targetableRemarketingList\".",
+"type": "string"
+},
+"lifeSpan": {
+"description": "Number of days that a user should remain in the targetable remarketing list without an impression.",
+"format": "int64",
+"type": "string"
+},
+"listSize": {
+"description": "Number of users currently in the list. This is a read-only field.",
+"format": "int64",
+"type": "string"
+},
+"listSource": {
+"description": "Product from which this targetable remarketing list was originated.",
+"enum": [
+"REMARKETING_LIST_SOURCE_OTHER",
+"REMARKETING_LIST_SOURCE_ADX",
+"REMARKETING_LIST_SOURCE_DFP",
+"REMARKETING_LIST_SOURCE_XFP",
+"REMARKETING_LIST_SOURCE_DFA",
+"REMARKETING_LIST_SOURCE_GA",
+"REMARKETING_LIST_SOURCE_YOUTUBE",
+"REMARKETING_LIST_SOURCE_DBM",
+"REMARKETING_LIST_SOURCE_GPLUS",
+"REMARKETING_LIST_SOURCE_DMP",
+"REMARKETING_LIST_SOURCE_PLAY_STORE"
+],
+"enumDescriptions": [
+"covers sources not supported in DCM other than those listed below",
+"ADX",
+"DFP",
+"XFP",
+"DoubleClick Campaign Manager",
+"Google Analytics Premium",
+"Youtube",
+"DoubleClick Bid Manager",
+"G+",
+"DoubleClick Audience Center",
+"Playstore"
+],
+"type": "string"
+},
+"name": {
+"description": "Name of the targetable remarketing list. Is no greater than 128 characters long.",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this remarketing list. This is a read-only, auto-generated field that is only returned in GET requests.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TargetableRemarketingListsListResponse": {
+"description": "Targetable remarketing list response",
+"id": "TargetableRemarketingListsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#targetableRemarketingListsListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"targetableRemarketingLists": {
+"description": "Targetable remarketing list collection.",
+"items": {
+"$ref": "TargetableRemarketingList"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TargetingTemplate": {
+"description": "Contains properties of a targeting template. A targeting template encapsulates targeting information which can be reused across multiple ads.",
+"id": "TargetingTemplate",
+"properties": {
+"accountId": {
+"description": "Account ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.",
+"format": "int64",
+"type": "string"
+},
+"advertiserId": {
+"description": "Advertiser ID of this targeting template. This is a required field on insert and is read-only after insert.",
+"format": "int64",
+"type": "string"
+},
+"advertiserIdDimensionValue": {
+"$ref": "DimensionValue",
+"description": "Dimension value for the ID of the advertiser. This is a read-only, auto-generated field."
+},
+"dayPartTargeting": {
+"$ref": "DayPartTargeting",
+"description": "Time and day targeting criteria."
+},
+"geoTargeting": {
+"$ref": "GeoTargeting",
+"description": "Geographical targeting criteria."
+},
+"id": {
+"description": "ID of this targeting template. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"keyValueTargetingExpression": {
+"$ref": "KeyValueTargetingExpression",
+"description": "Key-value targeting criteria."
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#targetingTemplate\".",
+"type": "string"
+},
+"languageTargeting": {
+"$ref": "LanguageTargeting",
+"description": "Language targeting criteria."
+},
+"listTargetingExpression": {
+"$ref": "ListTargetingExpression",
+"description": "Remarketing list targeting criteria."
+},
+"name": {
+"description": "Name of this targeting template. This field is required. It must be less than 256 characters long and unique within an advertiser.",
+"type": "string"
+},
+"subaccountId": {
+"description": "Subaccount ID of this targeting template. This field, if left unset, will be auto-generated on insert and is read-only after insert.",
+"format": "int64",
+"type": "string"
+},
+"technologyTargeting": {
+"$ref": "TechnologyTargeting",
+"description": "Technology platform targeting criteria."
+}
+},
+"type": "object"
+},
+"TargetingTemplatesListResponse": {
+"description": "Targeting Template List Response",
+"id": "TargetingTemplatesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#targetingTemplatesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"targetingTemplates": {
+"description": "Targeting template collection.",
+"items": {
+"$ref": "TargetingTemplate"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TechnologyTargeting": {
+"description": "Technology Targeting.",
+"id": "TechnologyTargeting",
+"properties": {
+"browsers": {
+"description": "Browsers that this ad targets. For each browser either set browserVersionId or dartId along with the version numbers. If both are specified, only browserVersionId will be used. The other fields are populated automatically when the ad is inserted or updated.",
+"items": {
+"$ref": "Browser"
+},
+"type": "array"
+},
+"connectionTypes": {
+"description": "Connection types that this ad targets. For each connection type only id is required. The other fields are populated automatically when the ad is inserted or updated.",
+"items": {
+"$ref": "ConnectionType"
+},
+"type": "array"
+},
+"mobileCarriers": {
+"description": "Mobile carriers that this ad targets. For each mobile carrier only id is required, and the other fields are populated automatically when the ad is inserted or updated. If targeting a mobile carrier, do not set targeting for any zip codes.",
+"items": {
+"$ref": "MobileCarrier"
+},
+"type": "array"
+},
+"operatingSystemVersions": {
+"description": "Operating system versions that this ad targets. To target all versions, use operatingSystems. For each operating system version, only id is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system version, do not set targeting for the corresponding operating system in operatingSystems.",
+"items": {
+"$ref": "OperatingSystemVersion"
+},
+"type": "array"
+},
+"operatingSystems": {
+"description": "Operating systems that this ad targets. To target specific versions, use operatingSystemVersions. For each operating system only dartId is required. The other fields are populated automatically when the ad is inserted or updated. If targeting an operating system, do not set targeting for operating system versions for the same operating system.",
+"items": {
+"$ref": "OperatingSystem"
+},
+"type": "array"
+},
+"platformTypes": {
+"description": "Platform types that this ad targets. For example, desktop, mobile, or tablet. For each platform type, only id is required, and the other fields are populated automatically when the ad is inserted or updated.",
+"items": {
+"$ref": "PlatformType"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ThirdPartyAuthenticationToken": {
+"description": "Third Party Authentication Token",
+"id": "ThirdPartyAuthenticationToken",
+"properties": {
+"name": {
+"description": "Name of the third-party authentication token.",
+"type": "string"
+},
+"value": {
+"description": "Value of the third-party authentication token. This is a read-only, auto-generated field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ThirdPartyTrackingUrl": {
+"description": "Third-party Tracking URL.",
+"id": "ThirdPartyTrackingUrl",
+"properties": {
+"thirdPartyUrlType": {
+"description": "Third-party URL type for in-stream video and in-stream audio creatives.",
+"enum": [
+"IMPRESSION",
+"CLICK_TRACKING",
+"VIDEO_START",
+"VIDEO_FIRST_QUARTILE",
+"VIDEO_MIDPOINT",
+"VIDEO_THIRD_QUARTILE",
+"VIDEO_COMPLETE",
+"VIDEO_MUTE",
+"VIDEO_PAUSE",
+"VIDEO_REWIND",
+"VIDEO_FULLSCREEN",
+"VIDEO_STOP",
+"VIDEO_CUSTOM",
+"SURVEY",
+"RICH_MEDIA_IMPRESSION",
+"RICH_MEDIA_RM_IMPRESSION",
+"RICH_MEDIA_BACKUP_IMPRESSION",
+"VIDEO_SKIP",
+"VIDEO_PROGRESS"
+],
+"enumDescriptions": [
+"Used to count impressions of the ad after video buffering is complete.",
+"Used to track user clicks on the video.",
+"Used to track the number of times a user starts a video.",
+"Used to track the number of times the video plays to 25% of its length.",
+"Used to track the number of times the video plays to 50% of its length.",
+"Used to track the number of times the video plays to 75% of its length.",
+"Used to track the number of times the video plays to the end.",
+"Used to track the number of times a user mutes the video.",
+"Used to track the number of times a user pauses the video.",
+"Used to track the number of times a user replays the video.",
+"Used to track the number of times a user expands the video to full-screen size.",
+"Used to track the number of times a user stops the video.",
+"Used to track the number of times a user performs a custom click, such as clicking on a video hot spot.",
+"Used for DFA6 compatibility, this is deprecating in favor of event tags.",
+"Used by Studio RichMediaCreative, maps to its thirdPartyImpressionsUrl",
+"Used by Studio RichMediaCreative, maps to its thirdPartyRichMediaImpressionsUrl",
+"Used by Studio RichMediaCreative, maps to its thirdPartyBackupImageImpressionsUrl",
+"Used to track the number of times the video was skipped.",
+"Used to track the number of times the video plays to an offset determined by the user."
+],
+"type": "string"
+},
+"url": {
+"description": "URL for the specified third-party URL type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TranscodeSetting": {
+"description": "Transcode Settings",
+"id": "TranscodeSetting",
+"properties": {
+"enabledVideoFormats": {
+"description": "Allowlist of video formats to be served to this placement. Set this list to null or empty to serve all video formats.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#transcodeSetting\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TvCampaignDetail": {
+"description": "TvCampaignDetail contains data from a TV campaign for specific start dates and date windows.",
+"id": "TvCampaignDetail",
+"properties": {
+"id": {
+"description": "ID of this TV campaign.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#tvCampaignSummary\".",
+"type": "string"
+},
+"timepoints": {
+"description": "The timepoints of the TV campaign.",
+"items": {
+"$ref": "TvCampaignTimepoint"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TvCampaignSummariesListResponse": {
+"description": "Response message for TvCampaignSummariesService.List.",
+"id": "TvCampaignSummariesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#tvCampaignSummariesListResponse\".",
+"type": "string"
+},
+"tvCampaignSummaries": {
+"description": "List of TV campaign summaries.",
+"items": {
+"$ref": "TvCampaignSummary"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TvCampaignSummary": {
+"description": "TvCampaignSummary contains aggregate data from a TV campaign.",
+"id": "TvCampaignSummary",
+"properties": {
+"endDate": {
+"description": "The end date of the TV campaign, inclusive. A string of the format: \"yyyy-MM-dd\".",
+"type": "string"
+},
+"grp": {
+"description": "GRP of this TV campaign.",
+"format": "int64",
+"type": "string"
+},
+"id": {
+"description": "ID of this TV campaign.",
+"type": "string"
+},
+"impressions": {
+"description": "Impressions across the entire TV campaign.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#tvCampaignSummary\".",
+"type": "string"
+},
+"name": {
+"description": "Identifier. Name of this TV campaign.",
+"type": "string"
+},
+"spend": {
+"description": "Spend across the entire TV campaign.",
+"format": "double",
+"type": "number"
+},
+"startDate": {
+"description": "The start date of the TV campaign, inclusive. A string of the format: \"yyyy-MM-dd\".",
+"type": "string"
+},
+"type": {
+"description": "\"CampaignComponentType\" of this TV campaign.",
+"enum": [
+"CAMPAIGN_COMPONENT_TYPE_UNSPECIFIED",
+"COMPANY",
+"BRAND",
+"PRODUCT",
+"CAMPAIGN"
+],
+"enumDescriptions": [
+"Required to exist; do not use.",
+"Company.",
+"Brand.",
+"Product.",
+"Campaign."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"TvCampaignTimepoint": {
+"description": "A single data point for TvCampaignDetail, which holds information about the TV campaign for a specific start date and date window.",
+"id": "TvCampaignTimepoint",
+"properties": {
+"dateWindow": {
+"description": "The date window of the timepoint.",
+"enum": [
+"WEEKS_UNSPECIFIED",
+"WEEKS_ONE",
+"WEEKS_FOUR",
+"WEEKS_EIGHT",
+"WEEKS_TWELVE"
+],
+"enumDescriptions": [
+"Default value, should never be set.",
+"One week.",
+"Four weeks.",
+"Eight weeks.",
+"Twelve weeks."
+],
+"type": "string"
+},
+"spend": {
+"description": "The spend within the time range of the timepoint.",
+"format": "double",
+"type": "number"
+},
+"startDate": {
+"description": "The start date of the timepoint. A string in the format of \"yyyy-MM-dd\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UniversalAdId": {
+"description": "A Universal Ad ID as per the VAST 4.0 spec. Applicable to the following creative types: INSTREAM_AUDIO, INSTREAM_VIDEO and VPAID.",
+"id": "UniversalAdId",
+"properties": {
+"registry": {
+"description": "Registry used for the Ad ID value.",
+"enum": [
+"OTHER",
+"AD_ID_OFFICIAL",
+"CLEARCAST",
+"DCM",
+"ARPP"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"value": {
+"description": "ID value for this creative. Only alphanumeric characters and the following symbols are valid: \"_/\\-\". Maximum length is 64 characters. Read only when registry is DCM.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserDefinedVariableConfiguration": {
+"description": "User Defined Variable configuration.",
+"id": "UserDefinedVariableConfiguration",
+"properties": {
+"dataType": {
+"description": "Data type for the variable. This is a required field.",
+"enum": [
+"STRING",
+"NUMBER"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"reportName": {
+"description": "User-friendly name for the variable which will appear in reports. This is a required field, must be less than 64 characters long, and cannot contain the following characters: \"\"<>\".",
+"type": "string"
+},
+"variableType": {
+"description": "Variable name in the tag. This is a required field.",
+"enum": [
+"U1",
+"U2",
+"U3",
+"U4",
+"U5",
+"U6",
+"U7",
+"U8",
+"U9",
+"U10",
+"U11",
+"U12",
+"U13",
+"U14",
+"U15",
+"U16",
+"U17",
+"U18",
+"U19",
+"U20",
+"U21",
+"U22",
+"U23",
+"U24",
+"U25",
+"U26",
+"U27",
+"U28",
+"U29",
+"U30",
+"U31",
+"U32",
+"U33",
+"U34",
+"U35",
+"U36",
+"U37",
+"U38",
+"U39",
+"U40",
+"U41",
+"U42",
+"U43",
+"U44",
+"U45",
+"U46",
+"U47",
+"U48",
+"U49",
+"U50",
+"U51",
+"U52",
+"U53",
+"U54",
+"U55",
+"U56",
+"U57",
+"U58",
+"U59",
+"U60",
+"U61",
+"U62",
+"U63",
+"U64",
+"U65",
+"U66",
+"U67",
+"U68",
+"U69",
+"U70",
+"U71",
+"U72",
+"U73",
+"U74",
+"U75",
+"U76",
+"U77",
+"U78",
+"U79",
+"U80",
+"U81",
+"U82",
+"U83",
+"U84",
+"U85",
+"U86",
+"U87",
+"U88",
+"U89",
+"U90",
+"U91",
+"U92",
+"U93",
+"U94",
+"U95",
+"U96",
+"U97",
+"U98",
+"U99",
+"U100"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserIdentifier": {
+"description": "User identifying information. Exactly one type of identifier must be specified.",
+"id": "UserIdentifier",
+"properties": {
+"addressInfo": {
+"$ref": "OfflineUserAddressInfo",
+"description": "Address information."
+},
+"hashedEmail": {
+"description": "Hashed email address using SHA-256 hash function after normalization.",
+"type": "string"
+},
+"hashedPhoneNumber": {
+"description": "Hashed phone number using SHA-256 hash function after normalization (E164 standard).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserProfile": {
+"description": "A UserProfile resource lets you list all DFA user profiles that are associated with a Google user account. The profile_id needs to be specified in other API requests. ",
+"id": "UserProfile",
+"properties": {
+"accountId": {
+"description": "The account ID to which this profile belongs.",
+"format": "int64",
+"type": "string"
+},
+"accountName": {
+"description": "The account name this profile belongs to.",
+"type": "string"
+},
+"etag": {
+"description": "Etag of this resource.",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userProfile\".",
+"type": "string"
+},
+"profileId": {
+"description": "The unique ID of the user profile.",
+"format": "int64",
+"type": "string"
+},
+"subAccountId": {
+"description": "The sub account ID this profile belongs to if applicable.",
+"format": "int64",
+"type": "string"
+},
+"subAccountName": {
+"description": "The sub account name this profile belongs to if applicable.",
+"type": "string"
+},
+"userName": {
+"description": "The user name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserProfileList": {
+"description": "Represents the list of user profiles.",
+"id": "UserProfileList",
+"properties": {
+"etag": {
+"description": "Etag of this resource.",
+"type": "string"
+},
+"items": {
+"description": "The user profiles returned in this response.",
+"items": {
+"$ref": "UserProfile"
+},
+"type": "array"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userProfileList\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserRole": {
+"description": "Contains properties of auser role, which is used to manage user access.",
+"id": "UserRole",
+"properties": {
+"accountId": {
+"description": "Account ID of this user role. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+},
+"defaultUserRole": {
+"description": "Whether this is a default user role. Default user roles are created by the system for the account/subaccount and cannot be modified or deleted. Each default user role comes with a basic set of preassigned permissions.",
+"type": "boolean"
+},
+"id": {
+"description": "ID of this user role. This is a read-only, auto-generated field.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRole\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this user role. This is a required field. Must be less than 256 characters long. If this user role is under a subaccount, the name must be unique among sites of the same subaccount. Otherwise, this user role is a top-level user role, and the name must be unique among top-level user roles of the same account.",
+"type": "string"
+},
+"parentUserRoleId": {
+"description": "ID of the user role that this user role is based on or copied from. This is a required field.",
+"format": "int64",
+"type": "string"
+},
+"permissions": {
+"description": "List of permissions associated with this user role.",
+"items": {
+"$ref": "UserRolePermission"
+},
+"type": "array"
+},
+"subaccountId": {
+"description": "Subaccount ID of this user role. This is a read-only field that can be left blank.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserRolePermission": {
+"description": "Contains properties of a user role permission.",
+"id": "UserRolePermission",
+"properties": {
+"availability": {
+"description": "Levels of availability for a user role permission.",
+"enum": [
+"NOT_AVAILABLE_BY_DEFAULT",
+"ACCOUNT_BY_DEFAULT",
+"SUBACCOUNT_AND_ACCOUNT_BY_DEFAULT",
+"ACCOUNT_ALWAYS",
+"SUBACCOUNT_AND_ACCOUNT_ALWAYS",
+"USER_PROFILE_ONLY"
+],
+"enumDescriptions": [
+"Not available by default.",
+"Available by default to accounts only.",
+"Available by default to both accounts and subaccounts.",
+"Always available to accounts.",
+"Always available to both accounts and subaccounts.",
+"Available for user profile permissions only."
+],
+"type": "string"
+},
+"id": {
+"description": "ID of this user role permission.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolePermission\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this user role permission.",
+"type": "string"
+},
+"permissionGroupId": {
+"description": "ID of the permission group that this user role permission belongs to.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserRolePermissionGroup": {
+"description": "Represents a grouping of related user role permissions.",
+"id": "UserRolePermissionGroup",
+"properties": {
+"id": {
+"description": "ID of this user role permission.",
+"format": "int64",
+"type": "string"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolePermissionGroup\".",
+"type": "string"
+},
+"name": {
+"description": "Name of this user role permission group.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UserRolePermissionGroupsListResponse": {
+"description": "User Role Permission Group List Response",
+"id": "UserRolePermissionGroupsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolePermissionGroupsListResponse\".",
+"type": "string"
+},
+"userRolePermissionGroups": {
+"description": "User role permission group collection.",
+"items": {
+"$ref": "UserRolePermissionGroup"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"UserRolePermissionsListResponse": {
+"description": "User Role Permission List Response",
+"id": "UserRolePermissionsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolePermissionsListResponse\".",
+"type": "string"
+},
+"userRolePermissions": {
+"description": "User role permission collection.",
+"items": {
+"$ref": "UserRolePermission"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"UserRolesListResponse": {
+"description": "User Role List Response",
+"id": "UserRolesListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#userRolesListResponse\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Pagination token to be used for the next list operation.",
+"type": "string"
+},
+"userRoles": {
+"description": "User role collection.",
+"items": {
+"$ref": "UserRole"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"VideoFormat": {
+"description": "Contains information about supported video formats.",
+"id": "VideoFormat",
+"properties": {
+"fileType": {
+"description": "File type of the video format.",
+"enum": [
+"FLV",
+"THREEGPP",
+"MP4",
+"WEBM",
+"M3U8"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"id": {
+"description": "ID of the video format.",
+"format": "int32",
+"type": "integer"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#videoFormat\".",
+"type": "string"
+},
+"resolution": {
+"$ref": "Size",
+"description": "The resolution of this video format."
+},
+"targetBitRate": {
+"description": "The target bit rate of this video format.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"VideoFormatsListResponse": {
+"description": "Video Format List Response",
+"id": "VideoFormatsListResponse",
+"properties": {
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#videoFormatsListResponse\".",
+"type": "string"
+},
+"videoFormats": {
+"description": "Video format collection.",
+"items": {
+"$ref": "VideoFormat"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"VideoOffset": {
+"description": "Video Offset",
+"id": "VideoOffset",
+"properties": {
+"offsetPercentage": {
+"description": "Duration, as a percentage of video duration. Do not set when offsetSeconds is set. Acceptable values are 0 to 100, inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"offsetSeconds": {
+"description": "Duration, in seconds. Do not set when offsetPercentage is set. Acceptable values are 0 to 86399, inclusive.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"VideoSettings": {
+"description": "Video Settings",
+"id": "VideoSettings",
+"properties": {
+"companionSettings": {
+"$ref": "CompanionSetting",
+"description": "Settings for the companion creatives of video creatives served to this placement."
+},
+"durationSeconds": {
+"description": "Duration of a video placement in seconds.",
+"format": "int32",
+"type": "integer"
+},
+"kind": {
+"description": "Identifies what kind of resource this is. Value: the fixed string \"dfareporting#videoSettings\".",
+"type": "string"
+},
+"obaEnabled": {
+"description": "Whether OBA icons are enabled for this placement.",
+"type": "boolean"
+},
+"obaSettings": {
+"$ref": "ObaIcon",
+"description": "Settings for the OBA icon of video creatives served to this placement. If this object is provided, the creative-level OBA settings will be overridden."
+},
+"orientation": {
+"description": "Orientation of a video placement. If this value is set, placement will return assets matching the specified orientation.",
+"enum": [
+"ANY",
+"LANDSCAPE",
+"PORTRAIT"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"publisherSpecificationId": {
+"description": "Publisher specification ID of a video placement. Possible values are: * `1`, Hulu * `2`, NBC * `3`, CBS * `4`, CBS Desktop * `5`, Discovery * `6`, VEVO HD * `7`, VEVO Vertical * `8`, Fox * `9`, CW Network * `10`, Disney * `11`, IGN * `12`, NFL.com * `13`, Turner Broadcasting * `14`, Tubi on Fox * `15`, Hearst Corporation * `16`, Twitch Desktop * `17`, ABC * `18`, Univision * `19`, MLB.com * `20`, MLB.com Mobile * `21`, MLB.com OTT * `22`, Polsat * `23`, TVN * `24`, Mediaset * `25`, Antena 3 * `26`, Mediamond * `27`, Sky Italia * `28`, Tubi on CBS * `29`, Spotify * `30`, Paramount * `31`, Max",
+"format": "int64",
+"type": "string"
+},
+"skippableSettings": {
+"$ref": "SkippableSetting",
+"description": "Settings for the skippability of video creatives served to this placement. If this object is provided, the creative-level skippable settings will be overridden."
+},
+"transcodeSettings": {
+"$ref": "TranscodeSetting",
+"description": "Settings for the transcodes of video creatives served to this placement. If this object is provided, the creative-level transcode settings will be overridden."
+}
+},
+"type": "object"
+}
+},
+"servicePath": "dfareporting/v4/",
+"title": "Campaign Manager 360 API",
+"version": "v4"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dialogflow.v2beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dialogflow.v2beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..c41264d16b2ac82ff0ef50eef2e79be2b391e903
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/dialogflow.v2beta1.json
@@ -0,0 +1,22373 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/dialogflow": {
+"description": "View, manage and query your Dialogflow agents"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://dialogflow.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Dialogflow",
+"description": "Builds conversational interfaces (for example, chatbots, and voice-powered apps and devices).",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/dialogflow/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "dialogflow:v2beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://dialogflow.mtls.googleapis.com/",
+"name": "dialogflow",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"methods": {
+"deleteAgent": {
+"description": "Deletes the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/agent",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.deleteAgent",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to delete is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getAgent": {
+"description": "Retrieves the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/agent",
+"httpMethod": "GET",
+"id": "dialogflow.projects.getAgent",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to fetch is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Agent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"setAgent": {
+"description": "Creates/updates the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent",
+"httpMethod": "POST",
+"id": "dialogflow.projects.setAgent",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project of this agent. Format: `projects/` or `projects//locations/`",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Agent"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Agent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"agent": {
+"methods": {
+"export": {
+"description": "Exports the specified agent to a ZIP file. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: ExportAgentResponse",
+"flatPath": "v2beta1/projects/{projectsId}/agent:export",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.export",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to export is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:export",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ExportAgentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getFulfillment": {
+"description": "Retrieves the fulfillment.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/fulfillment",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.getFulfillment",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/fulfillment$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Fulfillment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getValidationResult": {
+"description": "Gets agent validation result. Agent validation is performed during training time and is updated automatically when training is completed.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/validationResult",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.getValidationResult",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language for which you want a validation result. If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project that the agent is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent/validationResult",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ValidationResult"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"import": {
+"description": "Imports the specified agent from a ZIP file. Uploads new intents and entity types without deleting the existing ones. Intents and entity types with the same name are replaced with the new versions from ImportAgentRequest. After the import, the imported draft agent will be trained automatically (unless disabled in agent settings). However, once the import is done, training may not be completed yet. Please call TrainAgent and wait for the operation it returns in order to train explicitly. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) The operation only tracks when importing is complete, not when it is done training. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent:import",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.import",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to import is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:import",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ImportAgentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"restore": {
+"description": "Restores the specified agent from a ZIP file. Replaces the current agent version with a new one. All the intents and entity types in the older version are deleted. After the restore, the restored draft agent will be trained automatically (unless disabled in agent settings). However, once the restore is done, training may not be completed yet. Please call TrainAgent and wait for the operation it returns in order to train explicitly. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) The operation only tracks when restoring is complete, not when it is done training. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent:restore",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.restore",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to restore is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:restore",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1RestoreAgentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"search": {
+"description": "Returns the list of agents. Since there is at most one conversational agent per project, this method is useful primarily for listing all agents across projects the caller has access to. One can achieve that with a wildcard project collection id \"-\". Refer to [List Sub-Collections](https://cloud.google.com/apis/design/design_patterns#list_sub-collections).",
+"flatPath": "v2beta1/projects/{projectsId}/agent:search",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.search",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list agents from. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:search",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchAgentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"train": {
+"description": "Trains the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent:train",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.train",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to train is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:train",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1TrainAgentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"updateFulfillment": {
+"description": "Updates the fulfillment.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/fulfillment",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.updateFulfillment",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment` This field is not used for Fulfillment in an Environment.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/fulfillment$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields get updated. If the mask is not present, all fields will be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Fulfillment"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Fulfillment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"entityTypes": {
+"methods": {
+"batchDelete": {
+"description": "Deletes entity types in the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes:batchDelete",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.entityTypes.batchDelete",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the agent to delete all entities types for. Supported formats: - `projects//agent`, - `projects//locations//agent`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes:batchDelete",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchDeleteEntityTypesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"batchUpdate": {
+"description": "Updates/Creates multiple entity types in the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: BatchUpdateEntityTypesResponse Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes:batchUpdate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.entityTypes.batchUpdate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the agent to update or create entity types in. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes:batchUpdate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchUpdateEntityTypesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates an entity type in the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.entityTypes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to create a entity type for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified entity type. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes/{entityTypesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.entityTypes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entity type to delete. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified entity type.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes/{entityTypesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.entityTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the entity type. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all entity types in the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.entityTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all entity types from. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListEntityTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified entity type. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes/{entityTypesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.entityTypes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"entities": {
+"methods": {
+"batchCreate": {
+"description": "Creates multiple new entities in the specified entity type. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes/{entityTypesId}/entities:batchCreate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.entityTypes.entities.batchCreate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the entity type to create entities in. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entities:batchCreate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchCreateEntitiesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"batchDelete": {
+"description": "Deletes entities in the specified entity type. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes/{entityTypesId}/entities:batchDelete",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.entityTypes.entities.batchDelete",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the entity type to delete entries for. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entities:batchDelete",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchDeleteEntitiesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"batchUpdate": {
+"description": "Updates or creates multiple entities in the specified entity type. This method does not affect entities in the entity type that aren't explicitly specified in the request. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training). This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty)",
+"flatPath": "v2beta1/projects/{projectsId}/agent/entityTypes/{entityTypesId}/entities:batchUpdate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.entityTypes.entities.batchUpdate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the entity type to update or create entities in. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entities:batchUpdate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchUpdateEntitiesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"environments": {
+"methods": {
+"create": {
+"description": "Creates an agent environment.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.environments.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"environmentId": {
+"description": "Required. The unique id of the new environment.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to create an environment for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/environments",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified agent environment.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.environments.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the environment to delete. / Format: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified agent environment.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.environments.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getHistory": {
+"description": "Gets the history of the specified environment.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/history",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.environments.getHistory",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the environment to retrieve history for. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/history",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EnvironmentHistory"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all non-draft environments of the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.environments.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all environments from. Format: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/environments",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListEnvironmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified agent environment. This method allows you to deploy new agent versions into the environment. When an environment is pointed to a new agent version by setting `environment.agent_version`, the environment is temporarily set to the `LOADING` state. During that time, the environment keeps on serving the previous version of the agent. After the new agent version is done loading, the environment is set back to the `RUNNING` state. You can use \"-\" as Environment ID in environment name to update version in \"draft\" environment. WARNING: this will negate all recent changes to draft and can't be undone. You may want to save the draft to a version before calling this function.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.environments.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowLoadToDraftAndDiscardChanges": {
+"description": "Optional. This field is used to prevent accidental overwrite of the draft environment, which is an operation that cannot be undone. To confirm that the caller desires this overwrite, this field must be explicitly set to true when updating the draft environment (environment ID = `-`).",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. The unique identifier of this agent environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"intents": {
+"methods": {
+"list": {
+"description": "Returns the list of all intents in the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/intents",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.environments.intents.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all intents from. Format: `projects//agent` or `projects//locations//agent`. Alternatively, you can specify the environment to list intents for. Format: `projects//agent/environments/` or `projects//locations//agent/environments/`. Note: training phrases of the intents will not be returned for non-draft environment.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListIntentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"users": {
+"resources": {
+"sessions": {
+"methods": {
+"deleteContexts": {
+"description": "Deletes all active contexts in the specified session.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.environments.users.sessions.deleteContexts",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the session to delete all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"detectIntent": {
+"description": "Processes a natural language query and returns structured, actionable data as a result. This method is not idempotent, because it may cause contexts and session entity types to be updated, which in turn might affect results of future queries. If you might use [Agent Assist](https://cloud.google.com/dialogflow/docs/#aa) or other CCAI products now or in the future, consider using AnalyzeContent instead of `DetectIntent`. `AnalyzeContent` has additional functionality for Agent Assist and other CCAI products. Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}:detectIntent",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.environments.users.sessions.detectIntent",
+"parameterOrder": [
+"session"
+],
+"parameters": {
+"session": {
+"description": "Required. The name of the session this query is sent to. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment (`Environment ID` might be referred to as environment name at some places). If `User ID` is not specified, we are using \"-\". It's up to the API caller to choose an appropriate `Session ID` and `User Id`. They can be a random number or some type of user and session identifiers (preferably hashed). The length of the `Session ID` and `User ID` must not exceed 36 characters. For more information, see the [API interactions guide](https://cloud.google.com/dialogflow/docs/api-overview). Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+session}:detectIntent",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"contexts": {
+"methods": {
+"create": {
+"description": "Creates a context. If the specified context already exists, overrides the context.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.environments.users.sessions.contexts.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The session to create a context for. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.environments.users.sessions.contexts.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the context to delete. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.environments.users.sessions.contexts.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all contexts in the specified session.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.environments.users.sessions.contexts.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The session to list all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListContextsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.environments.users.sessions.contexts.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"entityTypes": {
+"methods": {
+"create": {
+"description": "Creates a session entity type. If the specified session entity type already exists, overrides the session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.environments.users.sessions.entityTypes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The session to create a session entity type for. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.environments.users.sessions.entityTypes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entity type to delete. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.environments.users.sessions.entityTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all session entity types in the specified session. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.environments.users.sessions.entityTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The session to list all session entity types from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListSessionEntityTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.environments.users.sessions.entityTypes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"intents": {
+"methods": {
+"batchDelete": {
+"description": "Deletes intents in the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/intents:batchDelete",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.intents.batchDelete",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the agent to delete all entities types for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents:batchDelete",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchDeleteIntentsRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"batchUpdate": {
+"description": "Updates/Creates multiple intents in the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: BatchUpdateIntentsResponse Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/intents:batchUpdate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.intents.batchUpdate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the agent to update or create intents in. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents:batchUpdate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchUpdateIntentsRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates an intent in the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/intents",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.intents.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to create a intent for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified intent and its direct or indirect followup intents. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/intents/{intentsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.intents.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the intent to delete. If this intent has direct or indirect followup intents, we also delete them. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/intents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified intent.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/intents/{intentsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.intents.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the intent. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/intents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all intents in the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/intents",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.intents.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all intents from. Format: `projects//agent` or `projects//locations//agent`. Alternatively, you can specify the environment to list intents for. Format: `projects//agent/environments/` or `projects//locations//agent/environments/`. Note: training phrases of the intents will not be returned for non-draft environment.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListIntentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified intent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/intents/{intentsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.intents.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/intents/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"knowledgeBases": {
+"methods": {
+"create": {
+"description": "Creates a knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.knowledgeBases.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project to create a knowledge base for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/knowledgeBases",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.knowledgeBases.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Optional. Force deletes the knowledge base. When set to true, any documents in the knowledge base are also deleted.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The name of the knowledge base to delete. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.knowledgeBases.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the knowledge base to retrieve. Format `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all knowledge bases of the specified agent. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.knowledgeBases.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression used to filter knowledge bases returned by the list method. The expression has the following syntax: [AND ] ... The following fields and operators are supported: * display_name with has(:) operator * language_code with equals(=) operator Examples: * 'language_code=en-us' matches knowledge bases with en-us language code. * 'display_name:articles' matches knowledge bases whose display name contains \"articles\". * 'display_name:\"Best Articles\"' matches knowledge bases whose display name contains \"Best Articles\". * 'language_code=en-gb AND display_name=articles' matches all knowledge bases whose display name contains \"articles\" and whose language code is \"en-gb\". Note: An empty filter string (i.e. \"\") is a no-op and will result in no filtering. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return in a single page. By default 10 and at most 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list of knowledge bases for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/knowledgeBases",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListKnowledgeBasesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.knowledgeBases.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Not specified means `update all`. Currently, only `display_name` can be updated, an InvalidArgument will be returned for attempting to update other fields.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"documents": {
+"methods": {
+"create": {
+"description": "Creates a new document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}/documents",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.knowledgeBases.documents.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"importGcsCustomMetadata": {
+"description": "Whether to import custom metadata from Google Cloud Storage. Only valid when the document source is Google Cloud Storage URI.",
+"location": "query",
+"type": "boolean"
+},
+"parent": {
+"description": "Required. The knowledge base to create a document for. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/documents",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.knowledgeBases.documents.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to delete. Format: `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified document. Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.knowledgeBases.documents.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to retrieve. Format `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all documents of the knowledge base. Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}/documents",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.knowledgeBases.documents.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression used to filter documents returned by the list method. The expression has the following syntax: [AND ] ... The following fields and operators are supported: * knowledge_types with has(:) operator * display_name with has(:) operator * state with equals(=) operator Examples: * \"knowledge_types:FAQ\" matches documents with FAQ knowledge type. * \"display_name:customer\" matches documents whose display name contains \"customer\". * \"state=ACTIVE\" matches documents with ACTIVE state. * \"knowledge_types:FAQ AND state=ACTIVE\" matches all active FAQ documents. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return in a single page. By default 10 and at most 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The knowledge base to list all documents for. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/documents",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListDocumentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.knowledgeBases.documents.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Not specified means `update all`. Currently, only `display_name` can be updated, an InvalidArgument will be returned for attempting to update other fields.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"reload": {
+"description": "Reloads the specified document from its specified source, content_uri or content. The previously loaded content of the document will be deleted. Note: Even when the content of the document has not changed, there still may be side effects because of internal implementation changes. Note: If the document source is Google Cloud Storage URI, its metadata will be replaced with the custom metadata from Google Cloud Storage if the `import_gcs_custom_metadata` field is set to true in the request. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}:reload",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.knowledgeBases.documents.reload",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to reload. Format: `projects//locations//knowledgeBases//documents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}:reload",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ReloadDocumentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"sessions": {
+"methods": {
+"deleteContexts": {
+"description": "Deletes all active contexts in the specified session.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/contexts",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.sessions.deleteContexts",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the session to delete all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"detectIntent": {
+"description": "Processes a natural language query and returns structured, actionable data as a result. This method is not idempotent, because it may cause contexts and session entity types to be updated, which in turn might affect results of future queries. If you might use [Agent Assist](https://cloud.google.com/dialogflow/docs/#aa) or other CCAI products now or in the future, consider using AnalyzeContent instead of `DetectIntent`. `AnalyzeContent` has additional functionality for Agent Assist and other CCAI products. Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}:detectIntent",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.sessions.detectIntent",
+"parameterOrder": [
+"session"
+],
+"parameters": {
+"session": {
+"description": "Required. The name of the session this query is sent to. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment (`Environment ID` might be referred to as environment name at some places). If `User ID` is not specified, we are using \"-\". It's up to the API caller to choose an appropriate `Session ID` and `User Id`. They can be a random number or some type of user and session identifiers (preferably hashed). The length of the `Session ID` and `User ID` must not exceed 36 characters. For more information, see the [API interactions guide](https://cloud.google.com/dialogflow/docs/api-overview). Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+session}:detectIntent",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"contexts": {
+"methods": {
+"create": {
+"description": "Creates a context. If the specified context already exists, overrides the context.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/contexts",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.sessions.contexts.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The session to create a context for. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.sessions.contexts.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the context to delete. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.sessions.contexts.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all contexts in the specified session.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/contexts",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.sessions.contexts.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The session to list all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListContextsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.sessions.contexts.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"entityTypes": {
+"methods": {
+"create": {
+"description": "Creates a session entity type. If the specified session entity type already exists, overrides the session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/entityTypes",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.sessions.entityTypes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The session to create a session entity type for. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.sessions.entityTypes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entity type to delete. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.sessions.entityTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all session entity types in the specified session. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/entityTypes",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.sessions.entityTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The session to list all session entity types from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListSessionEntityTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.sessions.entityTypes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"versions": {
+"methods": {
+"create": {
+"description": "Creates an agent version. The new version points to the agent instance in the \"default\" environment.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/versions",
+"httpMethod": "POST",
+"id": "dialogflow.projects.agent.versions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The agent to create a version for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/versions",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Delete the specified agent version.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/versions/{versionsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.agent.versions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the version to delete. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified agent version.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/versions/{versionsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.versions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all versions of the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/versions",
+"httpMethod": "GET",
+"id": "dialogflow.projects.agent.versions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all versions from. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/versions",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListVersionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified agent version. Note that this method does not allow you to update the state of the agent the given version points to. It allows you to update only mutable properties of the version resource.",
+"flatPath": "v2beta1/projects/{projectsId}/agent/versions/{versionsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.agent.versions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The unique identifier of this agent version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
+"location": "path",
+"pattern": "^projects/[^/]+/agent/versions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"answerRecords": {
+"methods": {
+"get": {
+"deprecated": true,
+"description": "Deprecated. Retrieves a specific answer record.",
+"flatPath": "v2beta1/projects/{projectsId}/answerRecords/{answerRecordsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.answerRecords.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the answer record to retrieve. Format: `projects//locations//answerRecords/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/answerRecords/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1AnswerRecord"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all answer records in the specified project in reverse chronological order.",
+"flatPath": "v2beta1/projects/{projectsId}/answerRecords",
+"httpMethod": "GET",
+"id": "dialogflow.projects.answerRecords.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"deprecated": true,
+"description": "Optional. Filters to restrict results to specific answer records. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of records to return in a single page. The server may return fewer records than this. If unspecified, we use 10. The maximum is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The ListAnswerRecordsResponse.next_page_token value returned from a previous list request used to continue listing on the next page.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list all answer records for in reverse chronological order. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/answerRecords",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListAnswerRecordsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified answer record.",
+"flatPath": "v2beta1/projects/{projectsId}/answerRecords/{answerRecordsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.answerRecords.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The unique identifier of this answer record. Required for AnswerRecords.UpdateAnswerRecord method. Format: `projects//locations//answerRecords/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/answerRecords/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1AnswerRecord"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1AnswerRecord"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"conversationProfiles": {
+"methods": {
+"clearSuggestionFeatureConfig": {
+"description": "Clears a suggestion feature from a conversation profile for the given participant role. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: ClearSuggestionFeatureConfigOperationMetadata - `response`: ConversationProfile",
+"flatPath": "v2beta1/projects/{projectsId}/conversationProfiles/{conversationProfilesId}:clearSuggestionFeatureConfig",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversationProfiles.clearSuggestionFeatureConfig",
+"parameterOrder": [
+"conversationProfile"
+],
+"parameters": {
+"conversationProfile": {
+"description": "Required. The Conversation Profile to add or update the suggestion feature config. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+conversationProfile}:clearSuggestionFeatureConfig",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ClearSuggestionFeatureConfigRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates a conversation profile in the specified project. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren't populated in the response. You can retrieve them via GetConversationProfile API.",
+"flatPath": "v2beta1/projects/{projectsId}/conversationProfiles",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversationProfiles.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project to create a conversation profile for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/conversationProfiles",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified conversation profile.",
+"flatPath": "v2beta1/projects/{projectsId}/conversationProfiles/{conversationProfilesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.conversationProfiles.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the conversation profile to delete. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified conversation profile.",
+"flatPath": "v2beta1/projects/{projectsId}/conversationProfiles/{conversationProfilesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.conversationProfiles.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the conversation profile. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all conversation profiles in the specified project.",
+"flatPath": "v2beta1/projects/{projectsId}/conversationProfiles",
+"httpMethod": "GET",
+"id": "dialogflow.projects.conversationProfiles.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list all conversation profiles from. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/conversationProfiles",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListConversationProfilesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified conversation profile. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren't populated in the response. You can retrieve them via GetConversationProfile API.",
+"flatPath": "v2beta1/projects/{projectsId}/conversationProfiles/{conversationProfilesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.conversationProfiles.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"setSuggestionFeatureConfig": {
+"description": "Adds or updates a suggestion feature in a conversation profile. If the conversation profile contains the type of suggestion feature for the participant role, it will update it. Otherwise it will insert the suggestion feature. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: SetSuggestionFeatureConfigOperationMetadata - `response`: ConversationProfile If a long running operation to add or update suggestion feature config for the same conversation profile, participant role and suggestion feature type exists, please cancel the existing long running operation before sending such request, otherwise the request will be rejected.",
+"flatPath": "v2beta1/projects/{projectsId}/conversationProfiles/{conversationProfilesId}:setSuggestionFeatureConfig",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversationProfiles.setSuggestionFeatureConfig",
+"parameterOrder": [
+"conversationProfile"
+],
+"parameters": {
+"conversationProfile": {
+"description": "Required. The Conversation Profile to add or update the suggestion feature config. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+conversationProfile}:setSuggestionFeatureConfig",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SetSuggestionFeatureConfigRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"conversations": {
+"methods": {
+"complete": {
+"description": "Completes the specified conversation. Finished conversations are purged from the database after 30 days.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}:complete",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.complete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource identifier of the conversation to close. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}:complete",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1CompleteConversationRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates a new conversation. Conversations are auto-completed after 24 hours. Conversation Lifecycle: There are two stages during a conversation: Automated Agent Stage and Assist Stage. For Automated Agent Stage, there will be a dialogflow agent responding to user queries. For Assist Stage, there's no dialogflow agent responding to user queries. But we will provide suggestions which are generated from conversation. If Conversation.conversation_profile is configured for a dialogflow agent, conversation will start from `Automated Agent Stage`, otherwise, it will start from `Assist Stage`. And during `Automated Agent Stage`, once an Intent with Intent.live_agent_handoff is triggered, conversation will transfer to Assist Stage.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"conversationId": {
+"description": "Optional. Identifier of the conversation. Generally it's auto generated by Google. Only set it if you cannot wait for the response to return a auto-generated one to you. The conversation ID must be compliant with the regression formula `a-zA-Z*` with the characters length in range of [3,64]. If the field is provided, the caller is responsible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource identifier of the project creating the conversation. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/conversations",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specific conversation.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.conversations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the conversation. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all conversations in the specified project.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations",
+"httpMethod": "GET",
+"id": "dialogflow.projects.conversations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. A filter expression that filters conversations listed in the response. Only `lifecycle_state` can be filtered on in this way. For example, the following expression only returns `COMPLETED` conversations: `lifecycle_state = \"COMPLETED\"` For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project from which to list all conversation. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/conversations",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListConversationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"messages": {
+"methods": {
+"batchCreate": {
+"description": "Batch ingests messages to conversation. Customers can use this RPC to ingest historical messages to conversation.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/messages:batchCreate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.messages.batchCreate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource identifier of the conversation to create message. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/messages:batchCreate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchCreateMessagesRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchCreateMessagesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Lists messages that belong to a given conversation. `messages` are ordered by `create_time` in descending order. To fetch updates without duplication, send request with filter `create_time_epoch_microseconds > [first item's create_time of previous request]` and empty page_token.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/messages",
+"httpMethod": "GET",
+"id": "dialogflow.projects.conversations.messages.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter on message fields. Currently predicates on `create_time` and `create_time_epoch_microseconds` are supported. `create_time` only support milliseconds accuracy. E.g., `create_time_epoch_microseconds > 1551790877964485` or `create_time > \"2017-01-15T01:30:15.01Z\"`. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the conversation to list messages for. Format: `projects//locations//conversations/`",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/messages",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListMessagesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"participants": {
+"methods": {
+"analyzeContent": {
+"description": "Adds a text (chat, for example), or audio (phone recording, for example) message from a participant into the conversation. Note: Always use agent versions for production traffic sent to virtual agents. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}:analyzeContent",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.participants.analyzeContent",
+"parameterOrder": [
+"participant"
+],
+"parameters": {
+"participant": {
+"description": "Required. The name of the participant this text comes from. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+participant}:analyzeContent",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1AnalyzeContentRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1AnalyzeContentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates a new participant in a conversation.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.participants.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource identifier of the conversation adding the participant. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/participants",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves a conversation participant.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.conversations.participants.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the participant. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all participants in the specified conversation.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants",
+"httpMethod": "GET",
+"id": "dialogflow.projects.conversations.participants.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The conversation to list all participants from. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/participants",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListParticipantsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified participant.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.conversations.participants.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to specify which fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"suggestions": {
+"methods": {
+"compile": {
+"deprecated": true,
+"description": "Deprecated. use SuggestArticles and SuggestFaqAnswers instead. Gets suggestions for a participant based on specific historical messages. Note that ListSuggestions will only list the auto-generated suggestions, while CompileSuggestion will try to compile suggestion based on the provided conversation context in the real time.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:compile",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.participants.suggestions.compile",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestion for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:compile",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1CompileSuggestionRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1CompileSuggestionResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"deprecated": true,
+"description": "Deprecated: Use inline suggestion, event based suggestion or Suggestion* API instead. See HumanAgentAssistantConfig.name for more details. Removal Date: 2020-09-01. Retrieves suggestions for live agents. This method should be used by human agent client software to fetch auto generated suggestions in real-time, while the conversation with an end user is in progress. The functionality is implemented in terms of the [list pagination](https://cloud.google.com/apis/design/design_patterns#list_pagination) design pattern. The client app should use the `next_page_token` field to fetch the next batch of suggestions. `suggestions` are sorted by `create_time` in descending order. To fetch latest suggestion, just set `page_size` to 1. To fetch new suggestions without duplication, send request with filter `create_time_epoch_microseconds > [first item's create_time of previous request]` and empty page_token.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions",
+"httpMethod": "GET",
+"id": "dialogflow.projects.conversations.participants.suggestions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter on suggestions fields. Currently predicates on `create_time` and `create_time_epoch_microseconds` are supported. `create_time` only support milliseconds accuracy. E.g., `create_time_epoch_microseconds > 1551790877964485` or `create_time > \"2017-01-15T01:30:15.01Z\"` For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. The default value is 100; the maximum value is 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the participant to fetch suggestions for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListSuggestionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestArticles": {
+"description": "Gets suggested articles for a participant based on specific historical messages. Note that ListSuggestions will only list the auto-generated suggestions, while CompileSuggestion will try to compile suggestion based on the provided conversation context in the real time.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:suggestArticles",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.participants.suggestions.suggestArticles",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestion for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:suggestArticles",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestArticlesRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestArticlesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestFaqAnswers": {
+"description": "Gets suggested faq answers for a participant based on specific historical messages.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:suggestFaqAnswers",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.participants.suggestions.suggestFaqAnswers",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestion for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:suggestFaqAnswers",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestFaqAnswersRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestFaqAnswersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestKnowledgeAssist": {
+"description": "Gets knowledge assist suggestions based on historical messages.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:suggestKnowledgeAssist",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.participants.suggestions.suggestKnowledgeAssist",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestions for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:suggestKnowledgeAssist",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestSmartReplies": {
+"description": "Gets smart replies for a participant based on specific historical messages.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:suggestSmartReplies",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.participants.suggestions.suggestSmartReplies",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestion for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:suggestSmartReplies",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestSmartRepliesRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestSmartRepliesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"suggestions": {
+"methods": {
+"searchKnowledge": {
+"description": "Get answers for the given query based on knowledge documents.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/suggestions:searchKnowledge",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.suggestions.searchKnowledge",
+"parameterOrder": [
+"conversation"
+],
+"parameters": {
+"conversation": {
+"description": "Optional. The conversation (between human agent and end user) where the search request is triggered. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+conversation}/suggestions:searchKnowledge",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestConversationSummary": {
+"description": "Suggest summary for a conversation based on specific historical messages. The range of the messages to be used for summary can be specified in the request.",
+"flatPath": "v2beta1/projects/{projectsId}/conversations/{conversationsId}/suggestions:suggestConversationSummary",
+"httpMethod": "POST",
+"id": "dialogflow.projects.conversations.suggestions.suggestConversationSummary",
+"parameterOrder": [
+"conversation"
+],
+"parameters": {
+"conversation": {
+"description": "Required. The conversation to fetch suggestion for. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+conversation}/suggestions:suggestConversationSummary",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestConversationSummaryRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"generators": {
+"methods": {
+"create": {
+"description": "Creates a generator.",
+"flatPath": "v2beta1/projects/{projectsId}/generators",
+"httpMethod": "POST",
+"id": "dialogflow.projects.generators.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"generatorId": {
+"description": "Optional. The ID to use for the generator, which will become the final component of the generator's resource name. The generator ID must be compliant with the regression formula `a-zA-Z*` with the characters length in range of [3,64]. If the field is not provided, an Id will be auto-generated. If the field is provided, the caller is responsible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project/location to create generator for. Format: `projects//locations/`",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/generators",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Lists generators.",
+"flatPath": "v2beta1/projects/{projectsId}/generators",
+"httpMethod": "GET",
+"id": "dialogflow.projects.generators.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. Maximum number of conversation models to return in a single page. Default to 10.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project/location to list generators for. Format: `projects//locations/`",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/generators",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListGeneratorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"knowledgeBases": {
+"methods": {
+"create": {
+"description": "Creates a knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases",
+"httpMethod": "POST",
+"id": "dialogflow.projects.knowledgeBases.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project to create a knowledge base for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/knowledgeBases",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.knowledgeBases.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Optional. Force deletes the knowledge base. When set to true, any documents in the knowledge base are also deleted.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The name of the knowledge base to delete. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.knowledgeBases.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the knowledge base to retrieve. Format `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all knowledge bases of the specified agent. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases",
+"httpMethod": "GET",
+"id": "dialogflow.projects.knowledgeBases.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression used to filter knowledge bases returned by the list method. The expression has the following syntax: [AND ] ... The following fields and operators are supported: * display_name with has(:) operator * language_code with equals(=) operator Examples: * 'language_code=en-us' matches knowledge bases with en-us language code. * 'display_name:articles' matches knowledge bases whose display name contains \"articles\". * 'display_name:\"Best Articles\"' matches knowledge bases whose display name contains \"Best Articles\". * 'language_code=en-gb AND display_name=articles' matches all knowledge bases whose display name contains \"articles\" and whose language code is \"en-gb\". Note: An empty filter string (i.e. \"\") is a no-op and will result in no filtering. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return in a single page. By default 10 and at most 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list of knowledge bases for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/knowledgeBases",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListKnowledgeBasesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.knowledgeBases.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Not specified means `update all`. Currently, only `display_name` can be updated, an InvalidArgument will be returned for attempting to update other fields.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"documents": {
+"methods": {
+"create": {
+"description": "Creates a new document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}/documents",
+"httpMethod": "POST",
+"id": "dialogflow.projects.knowledgeBases.documents.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"importGcsCustomMetadata": {
+"description": "Whether to import custom metadata from Google Cloud Storage. Only valid when the document source is Google Cloud Storage URI.",
+"location": "query",
+"type": "boolean"
+},
+"parent": {
+"description": "Required. The knowledge base to create a document for. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/documents",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.knowledgeBases.documents.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to delete. Format: `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified document. Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.knowledgeBases.documents.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to retrieve. Format `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"import": {
+"description": "Create documents by importing data from external sources. Dialogflow supports up to 350 documents in each request. If you try to import more, Dialogflow will return an error. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: ImportDocumentsResponse",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}/documents:import",
+"httpMethod": "POST",
+"id": "dialogflow.projects.knowledgeBases.documents.import",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The knowledge base to import documents into. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/documents:import",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ImportDocumentsRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all documents of the knowledge base. Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}/documents",
+"httpMethod": "GET",
+"id": "dialogflow.projects.knowledgeBases.documents.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression used to filter documents returned by the list method. The expression has the following syntax: [AND ] ... The following fields and operators are supported: * knowledge_types with has(:) operator * display_name with has(:) operator * state with equals(=) operator Examples: * \"knowledge_types:FAQ\" matches documents with FAQ knowledge type. * \"display_name:customer\" matches documents whose display name contains \"customer\". * \"state=ACTIVE\" matches documents with ACTIVE state. * \"knowledge_types:FAQ AND state=ACTIVE\" matches all active FAQ documents. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return in a single page. By default 10 and at most 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The knowledge base to list all documents for. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/documents",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListDocumentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.knowledgeBases.documents.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Not specified means `update all`. Currently, only `display_name` can be updated, an InvalidArgument will be returned for attempting to update other fields.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"reload": {
+"description": "Reloads the specified document from its specified source, content_uri or content. The previously loaded content of the document will be deleted. Note: Even when the content of the document has not changed, there still may be side effects because of internal implementation changes. Note: If the document source is Google Cloud Storage URI, its metadata will be replaced with the custom metadata from Google Cloud Storage if the `import_gcs_custom_metadata` field is set to true in the request. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}:reload",
+"httpMethod": "POST",
+"id": "dialogflow.projects.knowledgeBases.documents.reload",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to reload. Format: `projects//locations//knowledgeBases//documents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}:reload",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ReloadDocumentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"locations": {
+"methods": {
+"deleteAgent": {
+"description": "Deletes the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.deleteAgent",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to delete is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudLocationLocation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getAgent": {
+"description": "Retrieves the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.getAgent",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to fetch is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Agent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getEncryptionSpec": {
+"description": "Gets location-level encryption key specification.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/encryptionSpec",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.getEncryptionSpec",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the encryption spec resource to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/encryptionSpec$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EncryptionSpec"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v2beta1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}/locations",
+"response": {
+"$ref": "GoogleCloudLocationListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"setAgent": {
+"description": "Creates/updates the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.setAgent",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project of this agent. Format: `projects/` or `projects//locations/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Agent"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Agent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"agent": {
+"methods": {
+"export": {
+"description": "Exports the specified agent to a ZIP file. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: ExportAgentResponse",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent:export",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.export",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to export is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:export",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ExportAgentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getFulfillment": {
+"description": "Retrieves the fulfillment.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/fulfillment",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.getFulfillment",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/fulfillment$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Fulfillment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getValidationResult": {
+"description": "Gets agent validation result. Agent validation is performed during training time and is updated automatically when training is completed.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/validationResult",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.getValidationResult",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language for which you want a validation result. If not specified, the agent's default language is used. [Many languages](https://cloud.google.com/dialogflow/docs/reference/language) are supported. Note: languages must be enabled in the agent before they can be used.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project that the agent is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent/validationResult",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ValidationResult"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"import": {
+"description": "Imports the specified agent from a ZIP file. Uploads new intents and entity types without deleting the existing ones. Intents and entity types with the same name are replaced with the new versions from ImportAgentRequest. After the import, the imported draft agent will be trained automatically (unless disabled in agent settings). However, once the import is done, training may not be completed yet. Please call TrainAgent and wait for the operation it returns in order to train explicitly. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) The operation only tracks when importing is complete, not when it is done training. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent:import",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.import",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to import is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:import",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ImportAgentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"restore": {
+"description": "Restores the specified agent from a ZIP file. Replaces the current agent version with a new one. All the intents and entity types in the older version are deleted. After the restore, the restored draft agent will be trained automatically (unless disabled in agent settings). However, once the restore is done, training may not be completed yet. Please call TrainAgent and wait for the operation it returns in order to train explicitly. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) The operation only tracks when restoring is complete, not when it is done training. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent:restore",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.restore",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to restore is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:restore",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1RestoreAgentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"search": {
+"description": "Returns the list of agents. Since there is at most one conversational agent per project, this method is useful primarily for listing all agents across projects the caller has access to. One can achieve that with a wildcard project collection id \"-\". Refer to [List Sub-Collections](https://cloud.google.com/apis/design/design_patterns#list_sub-collections).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent:search",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.search",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list agents from. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:search",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchAgentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"train": {
+"description": "Trains the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent:train",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.train",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project that the agent to train is associated with. Format: `projects/` or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/agent:train",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1TrainAgentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"updateFulfillment": {
+"description": "Updates the fulfillment.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/fulfillment",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.updateFulfillment",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment` This field is not used for Fulfillment in an Environment.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/fulfillment$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields get updated. If the mask is not present, all fields will be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Fulfillment"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Fulfillment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"entityTypes": {
+"methods": {
+"batchDelete": {
+"description": "Deletes entity types in the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes:batchDelete",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.entityTypes.batchDelete",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the agent to delete all entities types for. Supported formats: - `projects//agent`, - `projects//locations//agent`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes:batchDelete",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchDeleteEntityTypesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"batchUpdate": {
+"description": "Updates/Creates multiple entity types in the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: BatchUpdateEntityTypesResponse Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes:batchUpdate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.entityTypes.batchUpdate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the agent to update or create entity types in. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes:batchUpdate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchUpdateEntityTypesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates an entity type in the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.entityTypes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to create a entity type for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified entity type. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes/{entityTypesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.entityTypes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entity type to delete. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified entity type.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes/{entityTypesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.entityTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the entity type. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all entity types in the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.entityTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all entity types from. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListEntityTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified entity type. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes/{entityTypesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.entityTypes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"entities": {
+"methods": {
+"batchCreate": {
+"description": "Creates multiple new entities in the specified entity type. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes/{entityTypesId}/entities:batchCreate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.entityTypes.entities.batchCreate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the entity type to create entities in. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entities:batchCreate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchCreateEntitiesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"batchDelete": {
+"description": "Deletes entities in the specified entity type. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes/{entityTypesId}/entities:batchDelete",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.entityTypes.entities.batchDelete",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the entity type to delete entries for. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entities:batchDelete",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchDeleteEntitiesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"batchUpdate": {
+"description": "Updates or creates multiple entities in the specified entity type. This method does not affect entities in the entity type that aren't explicitly specified in the request. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training). This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty)",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/entityTypes/{entityTypesId}/entities:batchUpdate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.entityTypes.entities.batchUpdate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the entity type to update or create entities in. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entities:batchUpdate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchUpdateEntitiesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"environments": {
+"methods": {
+"create": {
+"description": "Creates an agent environment.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.environments.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"environmentId": {
+"description": "Required. The unique id of the new environment.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to create an environment for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/environments",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified agent environment.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.environments.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the environment to delete. / Format: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified agent environment.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.environments.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"getHistory": {
+"description": "Gets the history of the specified environment.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/history",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.environments.getHistory",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the environment to retrieve history for. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/history",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1EnvironmentHistory"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all non-draft environments of the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.environments.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all environments from. Format: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/environments",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListEnvironmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified agent environment. This method allows you to deploy new agent versions into the environment. When an environment is pointed to a new agent version by setting `environment.agent_version`, the environment is temporarily set to the `LOADING` state. During that time, the environment keeps on serving the previous version of the agent. After the new agent version is done loading, the environment is set back to the `RUNNING` state. You can use \"-\" as Environment ID in environment name to update version in \"draft\" environment. WARNING: this will negate all recent changes to draft and can't be undone. You may want to save the draft to a version before calling this function.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.environments.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowLoadToDraftAndDiscardChanges": {
+"description": "Optional. This field is used to prevent accidental overwrite of the draft environment, which is an operation that cannot be undone. To confirm that the caller desires this overwrite, this field must be explicitly set to true when updating the draft environment (environment ID = `-`).",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. The unique identifier of this agent environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"intents": {
+"methods": {
+"list": {
+"description": "Returns the list of all intents in the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/intents",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.environments.intents.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all intents from. Format: `projects//agent` or `projects//locations//agent`. Alternatively, you can specify the environment to list intents for. Format: `projects//agent/environments/` or `projects//locations//agent/environments/`. Note: training phrases of the intents will not be returned for non-draft environment.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListIntentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"users": {
+"resources": {
+"sessions": {
+"methods": {
+"deleteContexts": {
+"description": "Deletes all active contexts in the specified session.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.deleteContexts",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the session to delete all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"detectIntent": {
+"description": "Processes a natural language query and returns structured, actionable data as a result. This method is not idempotent, because it may cause contexts and session entity types to be updated, which in turn might affect results of future queries. If you might use [Agent Assist](https://cloud.google.com/dialogflow/docs/#aa) or other CCAI products now or in the future, consider using AnalyzeContent instead of `DetectIntent`. `AnalyzeContent` has additional functionality for Agent Assist and other CCAI products. Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}:detectIntent",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.detectIntent",
+"parameterOrder": [
+"session"
+],
+"parameters": {
+"session": {
+"description": "Required. The name of the session this query is sent to. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment (`Environment ID` might be referred to as environment name at some places). If `User ID` is not specified, we are using \"-\". It's up to the API caller to choose an appropriate `Session ID` and `User Id`. They can be a random number or some type of user and session identifiers (preferably hashed). The length of the `Session ID` and `User ID` must not exceed 36 characters. For more information, see the [API interactions guide](https://cloud.google.com/dialogflow/docs/api-overview). Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+session}:detectIntent",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"contexts": {
+"methods": {
+"create": {
+"description": "Creates a context. If the specified context already exists, overrides the context.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.contexts.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The session to create a context for. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.contexts.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the context to delete. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.contexts.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all contexts in the specified session.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.contexts.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The session to list all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListContextsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.contexts.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"entityTypes": {
+"methods": {
+"create": {
+"description": "Creates a session entity type. If the specified session entity type already exists, overrides the session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.entityTypes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The session to create a session entity type for. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.entityTypes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entity type to delete. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.entityTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all session entity types in the specified session. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.entityTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The session to list all session entity types from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListSessionEntityTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/environments/{environmentsId}/users/{usersId}/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.environments.users.sessions.entityTypes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/environments/[^/]+/users/[^/]+/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"intents": {
+"methods": {
+"batchDelete": {
+"description": "Deletes intents in the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/intents:batchDelete",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.intents.batchDelete",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the agent to delete all entities types for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents:batchDelete",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchDeleteIntentsRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"batchUpdate": {
+"description": "Updates/Creates multiple intents in the specified agent. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: An empty [Struct message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#struct) - `response`: BatchUpdateIntentsResponse Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/intents:batchUpdate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.intents.batchUpdate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the agent to update or create intents in. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents:batchUpdate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchUpdateIntentsRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates an intent in the specified agent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/intents",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.intents.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to create a intent for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified intent and its direct or indirect followup intents. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/intents/{intentsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.intents.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the intent to delete. If this intent has direct or indirect followup intents, we also delete them. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/intents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified intent.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/intents/{intentsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.intents.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the intent. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/intents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all intents in the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/intents",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.intents.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all intents from. Format: `projects//agent` or `projects//locations//agent`. Alternatively, you can specify the environment to list intents for. Format: `projects//agent/environments/` or `projects//locations//agent/environments/`. Note: training phrases of the intents will not be returned for non-draft environment.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/intents",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListIntentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified intent. Note: You should always train an agent prior to sending it queries. See the [training documentation](https://cloud.google.com/dialogflow/es/docs/training).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/intents/{intentsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.intents.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/intents/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"sessions": {
+"methods": {
+"deleteContexts": {
+"description": "Deletes all active contexts in the specified session.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/contexts",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.sessions.deleteContexts",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the session to delete all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"detectIntent": {
+"description": "Processes a natural language query and returns structured, actionable data as a result. This method is not idempotent, because it may cause contexts and session entity types to be updated, which in turn might affect results of future queries. If you might use [Agent Assist](https://cloud.google.com/dialogflow/docs/#aa) or other CCAI products now or in the future, consider using AnalyzeContent instead of `DetectIntent`. `AnalyzeContent` has additional functionality for Agent Assist and other CCAI products. Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}:detectIntent",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.sessions.detectIntent",
+"parameterOrder": [
+"session"
+],
+"parameters": {
+"session": {
+"description": "Required. The name of the session this query is sent to. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment (`Environment ID` might be referred to as environment name at some places). If `User ID` is not specified, we are using \"-\". It's up to the API caller to choose an appropriate `Session ID` and `User Id`. They can be a random number or some type of user and session identifiers (preferably hashed). The length of the `Session ID` and `User ID` must not exceed 36 characters. For more information, see the [API interactions guide](https://cloud.google.com/dialogflow/docs/api-overview). Note: Always use agent versions for production traffic. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+session}:detectIntent",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"contexts": {
+"methods": {
+"create": {
+"description": "Creates a context. If the specified context already exists, overrides the context.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/contexts",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.sessions.contexts.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The session to create a context for. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.sessions.contexts.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the context to delete. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.sessions.contexts.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all contexts in the specified session.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/contexts",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.sessions.contexts.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The session to list all contexts from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/contexts",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListContextsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified context.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/contexts/{contextsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.sessions.contexts.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+/contexts/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"entityTypes": {
+"methods": {
+"create": {
+"description": "Creates a session entity type. If the specified session entity type already exists, overrides the session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/entityTypes",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.sessions.entityTypes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The session to create a session entity type for. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.sessions.entityTypes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the entity type to delete. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.sessions.entityTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all session entity types in the specified session. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/entityTypes",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.sessions.entityTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The session to list all session entity types from. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`, If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/entityTypes",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListSessionEntityTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified session entity type. This method doesn't work with Google Assistant integration. Contact Dialogflow support if you need to use session entities with Google Assistant integration.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/sessions/{sessionsId}/entityTypes/{entityTypesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.sessions.entityTypes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/sessions/[^/]+/entityTypes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"versions": {
+"methods": {
+"create": {
+"description": "Creates an agent version. The new version points to the agent instance in the \"default\" environment.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/versions",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.agent.versions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The agent to create a version for. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/versions",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Delete the specified agent version.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/versions/{versionsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.agent.versions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the version to delete. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified agent version.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/versions/{versionsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.versions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all versions of the specified agent.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/versions",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.agent.versions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The agent to list all versions from. Supported formats: - `projects//agent` - `projects//locations//agent`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/versions",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListVersionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified agent version. Note that this method does not allow you to update the state of the agent the given version points to. It allows you to update only mutable properties of the version resource.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/agent/versions/{versionsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.agent.versions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The unique identifier of this agent version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/agent/versions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"answerRecords": {
+"methods": {
+"get": {
+"deprecated": true,
+"description": "Deprecated. Retrieves a specific answer record.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/answerRecords/{answerRecordsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.answerRecords.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the answer record to retrieve. Format: `projects//locations//answerRecords/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/answerRecords/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1AnswerRecord"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all answer records in the specified project in reverse chronological order.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/answerRecords",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.answerRecords.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"deprecated": true,
+"description": "Optional. Filters to restrict results to specific answer records. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of records to return in a single page. The server may return fewer records than this. If unspecified, we use 10. The maximum is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The ListAnswerRecordsResponse.next_page_token value returned from a previous list request used to continue listing on the next page.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list all answer records for in reverse chronological order. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/answerRecords",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListAnswerRecordsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified answer record.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/answerRecords/{answerRecordsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.answerRecords.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The unique identifier of this answer record. Required for AnswerRecords.UpdateAnswerRecord method. Format: `projects//locations//answerRecords/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/answerRecords/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1AnswerRecord"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1AnswerRecord"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"conversationProfiles": {
+"methods": {
+"clearSuggestionFeatureConfig": {
+"description": "Clears a suggestion feature from a conversation profile for the given participant role. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: ClearSuggestionFeatureConfigOperationMetadata - `response`: ConversationProfile",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversationProfiles/{conversationProfilesId}:clearSuggestionFeatureConfig",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversationProfiles.clearSuggestionFeatureConfig",
+"parameterOrder": [
+"conversationProfile"
+],
+"parameters": {
+"conversationProfile": {
+"description": "Required. The Conversation Profile to add or update the suggestion feature config. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+conversationProfile}:clearSuggestionFeatureConfig",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ClearSuggestionFeatureConfigRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates a conversation profile in the specified project. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren't populated in the response. You can retrieve them via GetConversationProfile API.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversationProfiles",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversationProfiles.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project to create a conversation profile for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/conversationProfiles",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified conversation profile.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversationProfiles/{conversationProfilesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.conversationProfiles.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the conversation profile to delete. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified conversation profile.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversationProfiles/{conversationProfilesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.conversationProfiles.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the conversation profile. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all conversation profiles in the specified project.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversationProfiles",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.conversationProfiles.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list all conversation profiles from. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/conversationProfiles",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListConversationProfilesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified conversation profile. ConversationProfile.CreateTime and ConversationProfile.UpdateTime aren't populated in the response. You can retrieve them via GetConversationProfile API.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversationProfiles/{conversationProfilesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.conversationProfiles.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to control which fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"setSuggestionFeatureConfig": {
+"description": "Adds or updates a suggestion feature in a conversation profile. If the conversation profile contains the type of suggestion feature for the participant role, it will update it. Otherwise it will insert the suggestion feature. This method is a [long-running operation](https://cloud.google.com/dialogflow/es/docs/how/long-running-operations). The returned `Operation` type has the following method-specific fields: - `metadata`: SetSuggestionFeatureConfigOperationMetadata - `response`: ConversationProfile If a long running operation to add or update suggestion feature config for the same conversation profile, participant role and suggestion feature type exists, please cancel the existing long running operation before sending such request, otherwise the request will be rejected.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversationProfiles/{conversationProfilesId}:setSuggestionFeatureConfig",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversationProfiles.setSuggestionFeatureConfig",
+"parameterOrder": [
+"conversationProfile"
+],
+"parameters": {
+"conversationProfile": {
+"description": "Required. The Conversation Profile to add or update the suggestion feature config. Format: `projects//locations//conversationProfiles/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversationProfiles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+conversationProfile}:setSuggestionFeatureConfig",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SetSuggestionFeatureConfigRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"conversations": {
+"methods": {
+"complete": {
+"description": "Completes the specified conversation. Finished conversations are purged from the database after 30 days.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}:complete",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.complete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource identifier of the conversation to close. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}:complete",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1CompleteConversationRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates a new conversation. Conversations are auto-completed after 24 hours. Conversation Lifecycle: There are two stages during a conversation: Automated Agent Stage and Assist Stage. For Automated Agent Stage, there will be a dialogflow agent responding to user queries. For Assist Stage, there's no dialogflow agent responding to user queries. But we will provide suggestions which are generated from conversation. If Conversation.conversation_profile is configured for a dialogflow agent, conversation will start from `Automated Agent Stage`, otherwise, it will start from `Assist Stage`. And during `Automated Agent Stage`, once an Intent with Intent.live_agent_handoff is triggered, conversation will transfer to Assist Stage.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"conversationId": {
+"description": "Optional. Identifier of the conversation. Generally it's auto generated by Google. Only set it if you cannot wait for the response to return a auto-generated one to you. The conversation ID must be compliant with the regression formula `a-zA-Z*` with the characters length in range of [3,64]. If the field is provided, the caller is responsible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource identifier of the project creating the conversation. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/conversations",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specific conversation.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.conversations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the conversation. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all conversations in the specified project.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.conversations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. A filter expression that filters conversations listed in the response. Only `lifecycle_state` can be filtered on in this way. For example, the following expression only returns `COMPLETED` conversations: `lifecycle_state = \"COMPLETED\"` For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project from which to list all conversation. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/conversations",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListConversationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"messages": {
+"methods": {
+"batchCreate": {
+"description": "Batch ingests messages to conversation. Customers can use this RPC to ingest historical messages to conversation.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/messages:batchCreate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.messages.batchCreate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource identifier of the conversation to create message. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/messages:batchCreate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchCreateMessagesRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1BatchCreateMessagesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Lists messages that belong to a given conversation. `messages` are ordered by `create_time` in descending order. To fetch updates without duplication, send request with filter `create_time_epoch_microseconds > [first item's create_time of previous request]` and empty page_token.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/messages",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.conversations.messages.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filter on message fields. Currently predicates on `create_time` and `create_time_epoch_microseconds` are supported. `create_time` only support milliseconds accuracy. E.g., `create_time_epoch_microseconds > 1551790877964485` or `create_time > \"2017-01-15T01:30:15.01Z\"`. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the conversation to list messages for. Format: `projects//locations//conversations/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/messages",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListMessagesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"participants": {
+"methods": {
+"analyzeContent": {
+"description": "Adds a text (chat, for example), or audio (phone recording, for example) message from a participant into the conversation. Note: Always use agent versions for production traffic sent to virtual agents. See [Versions and environments](https://cloud.google.com/dialogflow/es/docs/agents-versions).",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants/{participantsId}:analyzeContent",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.participants.analyzeContent",
+"parameterOrder": [
+"participant"
+],
+"parameters": {
+"participant": {
+"description": "Required. The name of the participant this text comes from. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+participant}:analyzeContent",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1AnalyzeContentRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1AnalyzeContentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"create": {
+"description": "Creates a new participant in a conversation.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.participants.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource identifier of the conversation adding the participant. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/participants",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves a conversation participant.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants/{participantsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.conversations.participants.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the participant. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all participants in the specified conversation.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.conversations.participants.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The conversation to list all participants from. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/participants",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListParticipantsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified participant.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants/{participantsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.conversations.participants.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The mask to specify which fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"suggestions": {
+"methods": {
+"suggestArticles": {
+"description": "Gets suggested articles for a participant based on specific historical messages. Note that ListSuggestions will only list the auto-generated suggestions, while CompileSuggestion will try to compile suggestion based on the provided conversation context in the real time.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:suggestArticles",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.participants.suggestions.suggestArticles",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestion for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:suggestArticles",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestArticlesRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestArticlesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestFaqAnswers": {
+"description": "Gets suggested faq answers for a participant based on specific historical messages.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:suggestFaqAnswers",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.participants.suggestions.suggestFaqAnswers",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestion for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:suggestFaqAnswers",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestFaqAnswersRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestFaqAnswersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestKnowledgeAssist": {
+"description": "Gets knowledge assist suggestions based on historical messages.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:suggestKnowledgeAssist",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.participants.suggestions.suggestKnowledgeAssist",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestions for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:suggestKnowledgeAssist",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestSmartReplies": {
+"description": "Gets smart replies for a participant based on specific historical messages.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/participants/{participantsId}/suggestions:suggestSmartReplies",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.participants.suggestions.suggestSmartReplies",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the participant to fetch suggestion for. Format: `projects//locations//conversations//participants/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:suggestSmartReplies",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestSmartRepliesRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestSmartRepliesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"suggestions": {
+"methods": {
+"searchKnowledge": {
+"description": "Get answers for the given query based on knowledge documents.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/suggestions:searchKnowledge",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.suggestions.searchKnowledge",
+"parameterOrder": [
+"conversation"
+],
+"parameters": {
+"conversation": {
+"description": "Optional. The conversation (between human agent and end user) where the search request is triggered. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+conversation}/suggestions:searchKnowledge",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"suggestConversationSummary": {
+"description": "Suggest summary for a conversation based on specific historical messages. The range of the messages to be used for summary can be specified in the request.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/conversations/{conversationsId}/suggestions:suggestConversationSummary",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.conversations.suggestions.suggestConversationSummary",
+"parameterOrder": [
+"conversation"
+],
+"parameters": {
+"conversation": {
+"description": "Required. The conversation to fetch suggestion for. Format: `projects//locations//conversations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/conversations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+conversation}/suggestions:suggestConversationSummary",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestConversationSummaryRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"encryptionSpec": {
+"methods": {
+"initialize": {
+"description": "Initializes a location-level encryption key specification. An error will be thrown if the location has resources already created before the initialization. Once the encryption specification is initialized at a location, it is immutable and all newly created resources under the location will be encrypted with the existing specification.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/encryptionSpec:initialize",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.encryptionSpec.initialize",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The resource name of the encryption key specification resource. Format: projects/{project}/locations/{location}/encryptionSpec",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/encryptionSpec$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}:initialize",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1InitializeEncryptionSpecRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"generators": {
+"methods": {
+"create": {
+"description": "Creates a generator.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/generators",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.generators.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"generatorId": {
+"description": "Optional. The ID to use for the generator, which will become the final component of the generator's resource name. The generator ID must be compliant with the regression formula `a-zA-Z*` with the characters length in range of [3,64]. If the field is not provided, an Id will be auto-generated. If the field is provided, the caller is responsible for 1. the uniqueness of the ID, otherwise the request will be rejected. 2. the consistency for whether to use custom ID or not under a project to better ensure uniqueness.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project/location to create generator for. Format: `projects//locations/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/generators",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes a generator.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/generators/{generatorsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.generators.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The generator resource name to delete. Format: `projects//locations//generators/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/generators/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves a generator.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/generators/{generatorsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.generators.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The generator resource name to retrieve. Format: `projects//locations/`/generators/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/generators/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Lists generators.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/generators",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.generators.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. Maximum number of conversation models to return in a single page. Default to 10.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project/location to list generators for. Format: `projects//locations/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/generators",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListGeneratorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates a generator.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/generators/{generatorsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.generators.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Identifier. The resource name of the generator. Format: `projects//locations//generators/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/generators/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The list of fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"knowledgeBases": {
+"methods": {
+"create": {
+"description": "Creates a knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.knowledgeBases.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project to create a knowledge base for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/knowledgeBases",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.knowledgeBases.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Optional. Force deletes the knowledge base. When set to true, any documents in the knowledge base are also deleted.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The name of the knowledge base to delete. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.knowledgeBases.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the knowledge base to retrieve. Format `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all knowledge bases of the specified agent. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.knowledgeBases.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression used to filter knowledge bases returned by the list method. The expression has the following syntax: [AND ] ... The following fields and operators are supported: * display_name with has(:) operator * language_code with equals(=) operator Examples: * 'language_code=en-us' matches knowledge bases with en-us language code. * 'display_name:articles' matches knowledge bases whose display name contains \"articles\". * 'display_name:\"Best Articles\"' matches knowledge bases whose display name contains \"Best Articles\". * 'language_code=en-gb AND display_name=articles' matches all knowledge bases whose display name contains \"articles\" and whose language code is \"en-gb\". Note: An empty filter string (i.e. \"\") is a no-op and will result in no filtering. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return in a single page. By default 10 and at most 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project to list of knowledge bases for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/knowledgeBases",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListKnowledgeBasesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified knowledge base. Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.knowledgeBases.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Not specified means `update all`. Currently, only `display_name` can be updated, an InvalidArgument will be returned for attempting to update other fields.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+},
+"resources": {
+"documents": {
+"methods": {
+"create": {
+"description": "Creates a new document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}/documents",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.knowledgeBases.documents.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"importGcsCustomMetadata": {
+"description": "Whether to import custom metadata from Google Cloud Storage. Only valid when the document source is Google Cloud Storage URI.",
+"location": "query",
+"type": "boolean"
+},
+"parent": {
+"description": "Required. The knowledge base to create a document for. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/documents",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes the specified document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: An [Empty message](https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#empty) Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.knowledgeBases.documents.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to delete. Format: `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified document. Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.knowledgeBases.documents.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to retrieve. Format `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"import": {
+"description": "Create documents by importing data from external sources. Dialogflow supports up to 350 documents in each request. If you try to import more, Dialogflow will return an error. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: ImportDocumentsResponse",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}/documents:import",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.knowledgeBases.documents.import",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The knowledge base to import documents into. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/documents:import",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ImportDocumentsRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns the list of all documents of the knowledge base. Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}/documents",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.knowledgeBases.documents.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter expression used to filter documents returned by the list method. The expression has the following syntax: [AND ] ... The following fields and operators are supported: * knowledge_types with has(:) operator * display_name with has(:) operator * state with equals(=) operator Examples: * \"knowledge_types:FAQ\" matches documents with FAQ knowledge type. * \"display_name:customer\" matches documents whose display name contains \"customer\". * \"state=ACTIVE\" matches documents with ACTIVE state. * \"knowledge_types:FAQ AND state=ACTIVE\" matches all active FAQ documents. For more information about filtering, see [API Filtering](https://aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return in a single page. By default 10 and at most 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The knowledge base to list all documents for. Format: `projects//locations//knowledgeBases/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/documents",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListDocumentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified document. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.knowledgeBases.documents.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Not specified means `update all`. Currently, only `display_name` can be updated, an InvalidArgument will be returned for attempting to update other fields.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"reload": {
+"description": "Reloads the specified document from its specified source, content_uri or content. The previously loaded content of the document will be deleted. Note: Even when the content of the document has not changed, there still may be side effects because of internal implementation changes. Note: If the document source is Google Cloud Storage URI, its metadata will be replaced with the custom metadata from Google Cloud Storage if the `import_gcs_custom_metadata` field is set to true in the request. This method is a [long-running operation](https://cloud.google.com/dialogflow/cx/docs/how/long-running-operation). The returned `Operation` type has the following method-specific fields: - `metadata`: KnowledgeOperationMetadata - `response`: Document Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/knowledgeBases/{knowledgeBasesId}/documents/{documentsId}:reload",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.knowledgeBases.documents.reload",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the document to reload. Format: `projects//locations//knowledgeBases//documents/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/knowledgeBases/[^/]+/documents/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}:reload",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1ReloadDocumentRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}:cancel",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}/operations",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"sipTrunks": {
+"methods": {
+"create": {
+"description": "Creates a SipTrunk for a specified location.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/sipTrunks",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.sipTrunks.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The location to create a SIP trunk for. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/sipTrunks",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SipTrunk"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SipTrunk"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"delete": {
+"description": "Deletes a specified SipTrunk.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/sipTrunks/{sipTrunksId}",
+"httpMethod": "DELETE",
+"id": "dialogflow.projects.locations.sipTrunks.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the SIP trunk to delete. Format: `projects//locations//sipTrunks/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sipTrunks/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Retrieves the specified SipTrunk.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/sipTrunks/{sipTrunksId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.sipTrunks.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the SIP trunk to delete. Format: `projects//locations//sipTrunks/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sipTrunks/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SipTrunk"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Returns a list of SipTrunks in the specified location.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/sipTrunks",
+"httpMethod": "GET",
+"id": "dialogflow.projects.locations.sipTrunks.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return in a single page. By default 100 and at most 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The location to list SIP trunks from. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/sipTrunks",
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1ListSipTrunksResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"patch": {
+"description": "Updates the specified SipTrunk.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/sipTrunks/{sipTrunksId}",
+"httpMethod": "PATCH",
+"id": "dialogflow.projects.locations.sipTrunks.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The unique identifier of the SIP trunk. Format: `projects//locations//sipTrunks/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sipTrunks/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated. If the mask is not present, all fields will be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SipTrunk"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SipTrunk"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"statelessSuggestion": {
+"methods": {
+"generate": {
+"description": "Generates and returns a suggestion for a conversation that does not have a resource created for it.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/statelessSuggestion:generate",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.statelessSuggestion.generate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource to charge for the Suggestion's generation. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/statelessSuggestion:generate",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1GenerateStatelessSuggestionRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1GenerateStatelessSuggestionResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"suggestions": {
+"methods": {
+"generateStatelessSummary": {
+"description": "Generates and returns a summary for a conversation that does not have a resource created for it.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/suggestions:generateStatelessSummary",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.suggestions.generateStatelessSummary",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource to charge for the Summary's generation. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:generateStatelessSummary",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"searchKnowledge": {
+"description": "Get answers for the given query based on knowledge documents.",
+"flatPath": "v2beta1/projects/{projectsId}/locations/{locationsId}/suggestions:searchKnowledge",
+"httpMethod": "POST",
+"id": "dialogflow.projects.locations.suggestions.searchKnowledge",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource contains the conversation profile Format: 'projects/' or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:searchKnowledge",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v2beta1/projects/{projectsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "dialogflow.projects.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}:cancel",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v2beta1/projects/{projectsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "dialogflow.projects.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v2beta1/projects/{projectsId}/operations",
+"httpMethod": "GET",
+"id": "dialogflow.projects.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta1/{+name}/operations",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+},
+"suggestions": {
+"methods": {
+"generateStatelessSummary": {
+"description": "Generates and returns a summary for a conversation that does not have a resource created for it.",
+"flatPath": "v2beta1/projects/{projectsId}/suggestions:generateStatelessSummary",
+"httpMethod": "POST",
+"id": "dialogflow.projects.suggestions.generateStatelessSummary",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource to charge for the Summary's generation. Format: `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:generateStatelessSummary",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+},
+"searchKnowledge": {
+"description": "Get answers for the given query based on knowledge documents.",
+"flatPath": "v2beta1/projects/{projectsId}/suggestions:searchKnowledge",
+"httpMethod": "POST",
+"id": "dialogflow.projects.suggestions.searchKnowledge",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource contains the conversation profile Format: 'projects/' or `projects//locations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta1/{+parent}/suggestions:searchKnowledge",
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequest"
+},
+"response": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/dialogflow"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20250103",
+"rootUrl": "https://dialogflow.googleapis.com/",
+"schemas": {
+"GoogleCloudDialogflowCxV3AdvancedSettings": {
+"description": "Hierarchical advanced settings for agent/flow/page/fulfillment/parameter. Settings exposed at lower level overrides the settings exposed at higher level. Overriding occurs at the sub-setting level. For example, the playback_interruption_settings at fulfillment level only overrides the playback_interruption_settings at the agent level, leaving other settings at the agent level unchanged. DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.",
+"id": "GoogleCloudDialogflowCxV3AdvancedSettings",
+"properties": {
+"audioExportGcsDestination": {
+"$ref": "GoogleCloudDialogflowCxV3GcsDestination",
+"description": "If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels: - Agent level - Flow level"
+},
+"dtmfSettings": {
+"$ref": "GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettings",
+"description": "Settings for DTMF. Exposed at the following levels: - Agent level - Flow level - Page level - Parameter level."
+},
+"loggingSettings": {
+"$ref": "GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettings",
+"description": "Settings for logging. Settings for Dialogflow History, Contact Center messages, StackDriver logs, and speech logging. Exposed at the following levels: - Agent level."
+},
+"speechSettings": {
+"$ref": "GoogleCloudDialogflowCxV3AdvancedSettingsSpeechSettings",
+"description": "Settings for speech to text detection. Exposed at the following levels: - Agent level - Flow level - Page level - Parameter level"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettings": {
+"description": "Define behaviors for DTMF (dual tone multi frequency).",
+"id": "GoogleCloudDialogflowCxV3AdvancedSettingsDtmfSettings",
+"properties": {
+"enabled": {
+"description": "If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a \"3\" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance).",
+"type": "boolean"
+},
+"endpointingTimeoutDuration": {
+"description": "Endpoint timeout setting for matching dtmf input to regex.",
+"format": "google-duration",
+"type": "string"
+},
+"finishDigit": {
+"description": "The digit that terminates a DTMF digit sequence.",
+"type": "string"
+},
+"interdigitTimeoutDuration": {
+"description": "Interdigit timeout setting for matching dtmf input to regex.",
+"format": "google-duration",
+"type": "string"
+},
+"maxDigits": {
+"description": "Max length of DTMF digits.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettings": {
+"description": "Define behaviors on logging.",
+"id": "GoogleCloudDialogflowCxV3AdvancedSettingsLoggingSettings",
+"properties": {
+"enableConsentBasedRedaction": {
+"description": "Enables consent-based end-user input redaction, if true, a pre-defined session parameter `$session.params.conversation-redaction` will be used to determine if the utterance should be redacted.",
+"type": "boolean"
+},
+"enableInteractionLogging": {
+"description": "Enables DF Interaction logging.",
+"type": "boolean"
+},
+"enableStackdriverLogging": {
+"description": "Enables Google Cloud Logging.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3AdvancedSettingsSpeechSettings": {
+"description": "Define behaviors of speech to text detection.",
+"id": "GoogleCloudDialogflowCxV3AdvancedSettingsSpeechSettings",
+"properties": {
+"endpointerSensitivity": {
+"description": "Sensitivity of the speech model that detects the end of speech. Scale from 0 to 100.",
+"format": "int32",
+"type": "integer"
+},
+"models": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Mapping from language to Speech-to-Text model. The mapped Speech-to-Text model will be selected for requests from its corresponding language. For more information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/concept/speech-models).",
+"type": "object"
+},
+"noSpeechTimeout": {
+"description": "Timeout before detecting no speech.",
+"format": "google-duration",
+"type": "string"
+},
+"useTimeoutBasedEndpointing": {
+"description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3AudioInput": {
+"description": "Represents the natural speech audio to be processed.",
+"id": "GoogleCloudDialogflowCxV3AudioInput",
+"properties": {
+"audio": {
+"description": "The natural language speech audio to be processed. A single request can contain up to 2 minutes of speech audio data. The transcribed text cannot contain more than 256 bytes. For non-streaming audio detect intent, both `config` and `audio` must be provided. For streaming audio detect intent, `config` must be provided in the first request and `audio` must be provided in all following requests.",
+"format": "byte",
+"type": "string"
+},
+"config": {
+"$ref": "GoogleCloudDialogflowCxV3InputAudioConfig",
+"description": "Required. Instructs the speech recognizer how to process the speech audio."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3BargeInConfig": {
+"description": "Configuration of the barge-in behavior. Barge-in instructs the API to return a detected utterance at a proper time while the client is playing back the response audio from a previous request. When the client sees the utterance, it should stop the playback and immediately get ready for receiving the responses for the current request. The barge-in handling requires the client to start streaming audio input as soon as it starts playing back the audio from the previous response. The playback is modeled into two phases: * No barge-in phase: which goes first and during which speech detection should not be carried out. * Barge-in phase: which follows the no barge-in phase and during which the API starts speech detection and may inform the client that an utterance has been detected. Note that no-speech event is not expected in this phase. The client provides this configuration in terms of the durations of those two phases. The durations are measured in terms of the audio length from the start of the input audio. No-speech event is a response with END_OF_UTTERANCE without any transcript following up.",
+"id": "GoogleCloudDialogflowCxV3BargeInConfig",
+"properties": {
+"noBargeInDuration": {
+"description": "Duration that is not eligible for barge-in at the beginning of the input audio.",
+"format": "google-duration",
+"type": "string"
+},
+"totalDuration": {
+"description": "Total duration for the playback at the beginning of the input audio.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3BatchRunTestCasesMetadata": {
+"description": "Metadata returned for the TestCases.BatchRunTestCases long running operation.",
+"id": "GoogleCloudDialogflowCxV3BatchRunTestCasesMetadata",
+"properties": {
+"errors": {
+"description": "The test errors.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3TestError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3BatchRunTestCasesResponse": {
+"description": "The response message for TestCases.BatchRunTestCases.",
+"id": "GoogleCloudDialogflowCxV3BatchRunTestCasesResponse",
+"properties": {
+"results": {
+"description": "The test case results. The detailed conversation turns are empty in this response.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3TestCaseResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ContinuousTestResult": {
+"description": "Represents a result from running a test case in an agent environment.",
+"id": "GoogleCloudDialogflowCxV3ContinuousTestResult",
+"properties": {
+"name": {
+"description": "The resource name for the continuous test result. Format: `projects//locations//agents//environments//continuousTestResults/`.",
+"type": "string"
+},
+"result": {
+"description": "The result of this continuous test run, i.e. whether all the tests in this continuous test run pass or not.",
+"enum": [
+"AGGREGATED_TEST_RESULT_UNSPECIFIED",
+"PASSED",
+"FAILED"
+],
+"enumDescriptions": [
+"Not specified. Should never be used.",
+"All the tests passed.",
+"At least one test did not pass."
+],
+"type": "string"
+},
+"runTime": {
+"description": "Time when the continuous testing run starts.",
+"format": "google-datetime",
+"type": "string"
+},
+"testCaseResults": {
+"description": "A list of individual test case results names in this continuous test run.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ConversationSignals": {
+"description": "This message is used to hold all the Conversation Signals data, which will be converted to JSON and exported to BigQuery.",
+"id": "GoogleCloudDialogflowCxV3ConversationSignals",
+"properties": {
+"turnSignals": {
+"$ref": "GoogleCloudDialogflowCxV3TurnSignals",
+"description": "Required. Turn signals for the current turn."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ConversationTurn": {
+"description": "One interaction between a human and virtual agent. The human provides some input and the virtual agent provides a response.",
+"id": "GoogleCloudDialogflowCxV3ConversationTurn",
+"properties": {
+"userInput": {
+"$ref": "GoogleCloudDialogflowCxV3ConversationTurnUserInput",
+"description": "The user input."
+},
+"virtualAgentOutput": {
+"$ref": "GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutput",
+"description": "The virtual agent output."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ConversationTurnUserInput": {
+"description": "The input from the human user.",
+"id": "GoogleCloudDialogflowCxV3ConversationTurnUserInput",
+"properties": {
+"enableSentimentAnalysis": {
+"description": "Whether sentiment analysis is enabled.",
+"type": "boolean"
+},
+"injectedParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Parameters that need to be injected into the conversation during intent detection.",
+"type": "object"
+},
+"input": {
+"$ref": "GoogleCloudDialogflowCxV3QueryInput",
+"description": "Supports text input, event input, dtmf input in the test case."
+},
+"isWebhookEnabled": {
+"description": "If webhooks should be allowed to trigger in response to the user utterance. Often if parameters are injected, webhooks should not be enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutput": {
+"description": "The output from the virtual agent.",
+"id": "GoogleCloudDialogflowCxV3ConversationTurnVirtualAgentOutput",
+"properties": {
+"currentPage": {
+"$ref": "GoogleCloudDialogflowCxV3Page",
+"description": "The Page on which the utterance was spoken. Only name and displayName will be set."
+},
+"diagnosticInfo": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Required. Input only. The diagnostic info output for the turn. Required to calculate the testing coverage.",
+"type": "object"
+},
+"differences": {
+"description": "Output only. If this is part of a result conversation turn, the list of differences between the original run and the replay for this output, if any.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3TestRunDifference"
+},
+"readOnly": true,
+"type": "array"
+},
+"sessionParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The session parameters available to the bot at this point.",
+"type": "object"
+},
+"status": {
+"$ref": "GoogleRpcStatus",
+"description": "Response error from the agent in the test result. If set, other output is empty."
+},
+"textResponses": {
+"description": "The text responses from the agent for the turn.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageText"
+},
+"type": "array"
+},
+"triggeredIntent": {
+"$ref": "GoogleCloudDialogflowCxV3Intent",
+"description": "The Intent that triggered the response. Only name and displayName will be set."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3CreateVersionOperationMetadata": {
+"description": "Metadata associated with the long running operation for Versions.CreateVersion.",
+"id": "GoogleCloudDialogflowCxV3CreateVersionOperationMetadata",
+"properties": {
+"version": {
+"description": "Name of the created version. Format: `projects//locations//agents//flows//versions/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3DataStoreConnection": {
+"description": "A data store connection. It represents a data store in Discovery Engine and the type of the contents it contains.",
+"id": "GoogleCloudDialogflowCxV3DataStoreConnection",
+"properties": {
+"dataStore": {
+"description": "The full name of the referenced data store. Formats: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}` `projects/{project}/locations/{location}/dataStores/{data_store}`",
+"type": "string"
+},
+"dataStoreType": {
+"description": "The type of the connected data store.",
+"enum": [
+"DATA_STORE_TYPE_UNSPECIFIED",
+"PUBLIC_WEB",
+"UNSTRUCTURED",
+"STRUCTURED"
+],
+"enumDescriptions": [
+"Not specified. This value indicates that the data store type is not specified, so it will not be used during search.",
+"A data store that contains public web content.",
+"A data store that contains unstructured private data.",
+"A data store that contains structured data (for example FAQ)."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3DeployFlowMetadata": {
+"description": "Metadata returned for the Environments.DeployFlow long running operation.",
+"id": "GoogleCloudDialogflowCxV3DeployFlowMetadata",
+"properties": {
+"testErrors": {
+"description": "Errors of running deployment tests.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3TestError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3DeployFlowResponse": {
+"description": "The response message for Environments.DeployFlow.",
+"id": "GoogleCloudDialogflowCxV3DeployFlowResponse",
+"properties": {
+"deployment": {
+"description": "The name of the flow version Deployment. Format: `projects//locations//agents//environments//deployments/`.",
+"type": "string"
+},
+"environment": {
+"$ref": "GoogleCloudDialogflowCxV3Environment",
+"description": "The updated environment where the flow is deployed."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3DtmfInput": {
+"description": "Represents the input for dtmf event.",
+"id": "GoogleCloudDialogflowCxV3DtmfInput",
+"properties": {
+"digits": {
+"description": "The dtmf digits.",
+"type": "string"
+},
+"finishDigit": {
+"description": "The finish digit (if any).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3Environment": {
+"description": "Represents an environment for an agent. You can create multiple versions of your agent and publish them to separate environments. When you edit an agent, you are editing the draft agent. At any point, you can save the draft agent as an agent version, which is an immutable snapshot of your agent. When you save the draft agent, it is published to the default environment. When you create agent versions, you can publish them to custom environments. You can create a variety of custom environments for testing, development, production, etc.",
+"id": "GoogleCloudDialogflowCxV3Environment",
+"properties": {
+"description": {
+"description": "The human-readable description of the environment. The maximum length is 500 characters. If exceeded, the request is rejected.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The human-readable name of the environment (unique in an agent). Limit of 64 characters.",
+"type": "string"
+},
+"name": {
+"description": "The name of the environment. Format: `projects//locations//agents//environments/`.",
+"type": "string"
+},
+"testCasesConfig": {
+"$ref": "GoogleCloudDialogflowCxV3EnvironmentTestCasesConfig",
+"description": "The test cases config for continuous tests of this environment."
+},
+"updateTime": {
+"description": "Output only. Update time of this environment.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"versionConfigs": {
+"description": "A list of configurations for flow versions. You should include version configs for all flows that are reachable from `Start Flow` in the agent. Otherwise, an error will be returned.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3EnvironmentVersionConfig"
+},
+"type": "array"
+},
+"webhookConfig": {
+"$ref": "GoogleCloudDialogflowCxV3EnvironmentWebhookConfig",
+"description": "The webhook configuration for this environment."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3EnvironmentTestCasesConfig": {
+"description": "The configuration for continuous tests.",
+"id": "GoogleCloudDialogflowCxV3EnvironmentTestCasesConfig",
+"properties": {
+"enableContinuousRun": {
+"description": "Whether to run test cases in TestCasesConfig.test_cases periodically. Default false. If set to true, run once a day.",
+"type": "boolean"
+},
+"enablePredeploymentRun": {
+"description": "Whether to run test cases in TestCasesConfig.test_cases before deploying a flow version to the environment. Default false.",
+"type": "boolean"
+},
+"testCases": {
+"description": "A list of test case names to run. They should be under the same agent. Format of each test case name: `projects//locations//agents//testCases/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3EnvironmentVersionConfig": {
+"description": "Configuration for the version.",
+"id": "GoogleCloudDialogflowCxV3EnvironmentVersionConfig",
+"properties": {
+"version": {
+"description": "Required. Both flow and playbook versions are supported. Format for flow version: projects//locations//agents//flows//versions/. Format for playbook version: projects//locations//agents//playbooks//versions/.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3EnvironmentWebhookConfig": {
+"description": "Configuration for webhooks.",
+"id": "GoogleCloudDialogflowCxV3EnvironmentWebhookConfig",
+"properties": {
+"webhookOverrides": {
+"description": "The list of webhooks to override for the agent environment. The webhook must exist in the agent. You can override fields in `generic_web_service` and `service_directory`.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3Webhook"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3EventHandler": {
+"description": "An event handler specifies an event that can be handled during a session. When the specified event happens, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the event, it will be called. * If there is a `target_page` associated with the event, the session will transition into the specified page. * If there is a `target_flow` associated with the event, the session will transition into the specified flow.",
+"id": "GoogleCloudDialogflowCxV3EventHandler",
+"properties": {
+"event": {
+"description": "Required. The name of the event to handle.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The unique identifier of this event handler.",
+"readOnly": true,
+"type": "string"
+},
+"targetFlow": {
+"description": "The target flow to transition to. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+},
+"targetPage": {
+"description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"targetPlaybook": {
+"description": "The target playbook to transition to. Format: `projects//locations//agents//playbooks/`.",
+"type": "string"
+},
+"triggerFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3Fulfillment",
+"description": "The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3EventInput": {
+"description": "Represents the event to trigger.",
+"id": "GoogleCloudDialogflowCxV3EventInput",
+"properties": {
+"event": {
+"description": "Name of the event.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ExportAgentResponse": {
+"description": "The response message for Agents.ExportAgent.",
+"id": "GoogleCloudDialogflowCxV3ExportAgentResponse",
+"properties": {
+"agentContent": {
+"description": "Uncompressed raw byte content for agent. This field is populated if none of `agent_uri` and `git_destination` are specified in ExportAgentRequest.",
+"format": "byte",
+"type": "string"
+},
+"agentUri": {
+"description": "The URI to a file containing the exported agent. This field is populated if `agent_uri` is specified in ExportAgentRequest.",
+"type": "string"
+},
+"commitSha": {
+"description": "Commit SHA of the git push. This field is populated if `git_destination` is specified in ExportAgentRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ExportEntityTypesMetadata": {
+"description": "Metadata returned for the EntityTypes.ExportEntityTypes long running operation.",
+"id": "GoogleCloudDialogflowCxV3ExportEntityTypesMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ExportEntityTypesResponse": {
+"description": "The response message for EntityTypes.ExportEntityTypes.",
+"id": "GoogleCloudDialogflowCxV3ExportEntityTypesResponse",
+"properties": {
+"entityTypesContent": {
+"$ref": "GoogleCloudDialogflowCxV3InlineDestination",
+"description": "Uncompressed byte content for entity types. This field is populated only if `entity_types_content_inline` is set to true in ExportEntityTypesRequest."
+},
+"entityTypesUri": {
+"description": "The URI to a file containing the exported entity types. This field is populated only if `entity_types_uri` is specified in ExportEntityTypesRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ExportFlowResponse": {
+"description": "The response message for Flows.ExportFlow.",
+"id": "GoogleCloudDialogflowCxV3ExportFlowResponse",
+"properties": {
+"flowContent": {
+"description": "Uncompressed raw byte content for flow.",
+"format": "byte",
+"type": "string"
+},
+"flowUri": {
+"description": "The URI to a file containing the exported flow. This field is populated only if `flow_uri` is specified in ExportFlowRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ExportIntentsMetadata": {
+"description": "Metadata returned for the Intents.ExportIntents long running operation.",
+"id": "GoogleCloudDialogflowCxV3ExportIntentsMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ExportIntentsResponse": {
+"description": "The response message for Intents.ExportIntents.",
+"id": "GoogleCloudDialogflowCxV3ExportIntentsResponse",
+"properties": {
+"intentsContent": {
+"$ref": "GoogleCloudDialogflowCxV3InlineDestination",
+"description": "Uncompressed byte content for intents. This field is populated only if `intents_content_inline` is set to true in ExportIntentsRequest."
+},
+"intentsUri": {
+"description": "The URI to a file containing the exported intents. This field is populated only if `intents_uri` is specified in ExportIntentsRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ExportTestCasesMetadata": {
+"description": "Metadata returned for the TestCases.ExportTestCases long running operation. This message currently has no fields.",
+"id": "GoogleCloudDialogflowCxV3ExportTestCasesMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ExportTestCasesResponse": {
+"description": "The response message for TestCases.ExportTestCases.",
+"id": "GoogleCloudDialogflowCxV3ExportTestCasesResponse",
+"properties": {
+"content": {
+"description": "Uncompressed raw byte content for test cases.",
+"format": "byte",
+"type": "string"
+},
+"gcsUri": {
+"description": "The URI to a file containing the exported test cases. This field is populated only if `gcs_uri` is specified in ExportTestCasesRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3Form": {
+"description": "A form is a data model that groups related parameters that can be collected from the user. The process in which the agent prompts the user and collects parameter values from the user is called form filling. A form can be added to a page. When form filling is done, the filled parameters will be written to the session.",
+"id": "GoogleCloudDialogflowCxV3Form",
+"properties": {
+"parameters": {
+"description": "Parameters to collect from the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3FormParameter"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3FormParameter": {
+"description": "Represents a form parameter.",
+"id": "GoogleCloudDialogflowCxV3FormParameter",
+"properties": {
+"advancedSettings": {
+"$ref": "GoogleCloudDialogflowCxV3AdvancedSettings",
+"description": "Hierarchical advanced settings for this parameter. The settings exposed at the lower level overrides the settings exposed at the higher level."
+},
+"defaultValue": {
+"description": "The default value of an optional parameter. If the parameter is required, the default value will be ignored.",
+"type": "any"
+},
+"displayName": {
+"description": "Required. The human-readable name of the parameter, unique within the form.",
+"type": "string"
+},
+"entityType": {
+"description": "Required. The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types.",
+"type": "string"
+},
+"fillBehavior": {
+"$ref": "GoogleCloudDialogflowCxV3FormParameterFillBehavior",
+"description": "Required. Defines fill behavior for the parameter."
+},
+"isList": {
+"description": "Indicates whether the parameter represents a list of values.",
+"type": "boolean"
+},
+"redact": {
+"description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.",
+"type": "boolean"
+},
+"required": {
+"description": "Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3FormParameterFillBehavior": {
+"description": "Configuration for how the filling of a parameter should be handled.",
+"id": "GoogleCloudDialogflowCxV3FormParameterFillBehavior",
+"properties": {
+"initialPromptFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3Fulfillment",
+"description": "Required. The fulfillment to provide the initial prompt that the agent can present to the user in order to fill the parameter."
+},
+"repromptEventHandlers": {
+"description": "The handlers for parameter-level events, used to provide reprompt for the parameter or transition to a different page/flow. The supported events are: * `sys.no-match-`, where N can be from 1 to 6 * `sys.no-match-default` * `sys.no-input-`, where N can be from 1 to 6 * `sys.no-input-default` * `sys.invalid-parameter` `initial_prompt_fulfillment` provides the first prompt for the parameter. If the user's response does not fill the parameter, a no-match/no-input event will be triggered, and the fulfillment associated with the `sys.no-match-1`/`sys.no-input-1` handler (if defined) will be called to provide a prompt. The `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to the next no-match/no-input event, and so on. A `sys.no-match-default` or `sys.no-input-default` handler will be used to handle all following no-match/no-input events after all numbered no-match/no-input handlers for the parameter are consumed. A `sys.invalid-parameter` handler can be defined to handle the case where the parameter values have been `invalidated` by webhook. For example, if the user's response fill the parameter, however the parameter was invalidated by webhook, the fulfillment associated with the `sys.invalid-parameter` handler (if defined) will be called to provide a prompt. If the event handler for the corresponding event can't be found on the parameter, `initial_prompt_fulfillment` will be re-prompted.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3EventHandler"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3Fulfillment": {
+"description": "A fulfillment can do one or more of the following actions at the same time: * Generate rich message responses. * Set parameter values. * Call the webhook. Fulfillments can be called at various stages in the Page or Form lifecycle. For example, when a DetectIntentRequest drives a session to enter a new page, the page's entry fulfillment can add a static response to the QueryResult in the returning DetectIntentResponse, call the webhook (for example, to load user data from a database), or both.",
+"id": "GoogleCloudDialogflowCxV3Fulfillment",
+"properties": {
+"advancedSettings": {
+"$ref": "GoogleCloudDialogflowCxV3AdvancedSettings",
+"description": "Hierarchical advanced settings for this fulfillment. The settings exposed at the lower level overrides the settings exposed at the higher level."
+},
+"conditionalCases": {
+"description": "Conditional cases for this fulfillment.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3FulfillmentConditionalCases"
+},
+"type": "array"
+},
+"enableGenerativeFallback": {
+"description": "If the flag is true, the agent will utilize LLM to generate a text response. If LLM generation fails, the defined responses in the fulfillment will be respected. This flag is only useful for fulfillments associated with no-match event handlers.",
+"type": "boolean"
+},
+"messages": {
+"description": "The list of rich message responses to present to the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessage"
+},
+"type": "array"
+},
+"returnPartialResponses": {
+"description": "Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.",
+"type": "boolean"
+},
+"setParameterActions": {
+"description": "Set parameter values before executing the webhook.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3FulfillmentSetParameterAction"
+},
+"type": "array"
+},
+"tag": {
+"description": "The value of this field will be populated in the WebhookRequest `fulfillmentInfo.tag` field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes. This field is required if `webhook` is specified.",
+"type": "string"
+},
+"webhook": {
+"description": "The webhook to call. Format: `projects//locations//agents//webhooks/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3FulfillmentConditionalCases": {
+"description": "A list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.",
+"id": "GoogleCloudDialogflowCxV3FulfillmentConditionalCases",
+"properties": {
+"cases": {
+"description": "A list of cascading if-else conditions.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCase"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCase": {
+"description": "Each case has a Boolean condition. When it is evaluated to be True, the corresponding messages will be selected and evaluated recursively.",
+"id": "GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCase",
+"properties": {
+"caseContent": {
+"description": "A list of case content.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContent"
+},
+"type": "array"
+},
+"condition": {
+"description": "The condition to activate and select this case. Empty means the condition is always true. The condition is evaluated against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContent": {
+"description": "The list of messages or conditional cases to activate for this case.",
+"id": "GoogleCloudDialogflowCxV3FulfillmentConditionalCasesCaseCaseContent",
+"properties": {
+"additionalCases": {
+"$ref": "GoogleCloudDialogflowCxV3FulfillmentConditionalCases",
+"description": "Additional cases to be evaluated."
+},
+"message": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessage",
+"description": "Returned message."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3FulfillmentSetParameterAction": {
+"description": "Setting a parameter value.",
+"id": "GoogleCloudDialogflowCxV3FulfillmentSetParameterAction",
+"properties": {
+"parameter": {
+"description": "Display name of the parameter.",
+"type": "string"
+},
+"value": {
+"description": "The new value of the parameter. A null value clears the parameter.",
+"type": "any"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3GcsDestination": {
+"description": "Google Cloud Storage location for a Dialogflow operation that writes or exports objects (e.g. exported agent or transcripts) outside of Dialogflow.",
+"id": "GoogleCloudDialogflowCxV3GcsDestination",
+"properties": {
+"uri": {
+"description": "Required. The Google Cloud Storage URI for the exported objects. A URI is of the form: `gs://bucket/object-name-or-prefix` Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportEntityTypesMetadata": {
+"description": "Metadata returned for the EntityTypes.ImportEntityTypes long running operation.",
+"id": "GoogleCloudDialogflowCxV3ImportEntityTypesMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportEntityTypesResponse": {
+"description": "The response message for EntityTypes.ImportEntityTypes.",
+"id": "GoogleCloudDialogflowCxV3ImportEntityTypesResponse",
+"properties": {
+"conflictingResources": {
+"$ref": "GoogleCloudDialogflowCxV3ImportEntityTypesResponseConflictingResources",
+"description": "Info which resources have conflicts when REPORT_CONFLICT merge_option is set in ImportEntityTypesRequest."
+},
+"entityTypes": {
+"description": "The unique identifier of the imported entity types. Format: `projects//locations//agents//entity_types/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportEntityTypesResponseConflictingResources": {
+"description": "Conflicting resources detected during the import process. Only filled when REPORT_CONFLICT is set in the request and there are conflicts in the display names.",
+"id": "GoogleCloudDialogflowCxV3ImportEntityTypesResponseConflictingResources",
+"properties": {
+"entityDisplayNames": {
+"description": "Display names of conflicting entities.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"entityTypeDisplayNames": {
+"description": "Display names of conflicting entity types.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportFlowResponse": {
+"description": "The response message for Flows.ImportFlow.",
+"id": "GoogleCloudDialogflowCxV3ImportFlowResponse",
+"properties": {
+"flow": {
+"description": "The unique identifier of the new flow. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportIntentsMetadata": {
+"description": "Metadata returned for the Intents.ImportIntents long running operation.",
+"id": "GoogleCloudDialogflowCxV3ImportIntentsMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportIntentsResponse": {
+"description": "The response message for Intents.ImportIntents.",
+"id": "GoogleCloudDialogflowCxV3ImportIntentsResponse",
+"properties": {
+"conflictingResources": {
+"$ref": "GoogleCloudDialogflowCxV3ImportIntentsResponseConflictingResources",
+"description": "Info which resources have conflicts when REPORT_CONFLICT merge_option is set in ImportIntentsRequest."
+},
+"intents": {
+"description": "The unique identifier of the imported intents. Format: `projects//locations//agents//intents/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportIntentsResponseConflictingResources": {
+"description": "Conflicting resources detected during the import process. Only filled when REPORT_CONFLICT is set in the request and there are conflicts in the display names.",
+"id": "GoogleCloudDialogflowCxV3ImportIntentsResponseConflictingResources",
+"properties": {
+"entityDisplayNames": {
+"description": "Display names of conflicting entities.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"intentDisplayNames": {
+"description": "Display names of conflicting intents.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportTestCasesMetadata": {
+"description": "Metadata returned for the TestCases.ImportTestCases long running operation.",
+"id": "GoogleCloudDialogflowCxV3ImportTestCasesMetadata",
+"properties": {
+"errors": {
+"description": "Errors for failed test cases.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3TestCaseError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ImportTestCasesResponse": {
+"description": "The response message for TestCases.ImportTestCases.",
+"id": "GoogleCloudDialogflowCxV3ImportTestCasesResponse",
+"properties": {
+"names": {
+"description": "The unique identifiers of the new test cases. Format: `projects//locations//agents//testCases/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3InlineDestination": {
+"description": "Inline destination for a Dialogflow operation that writes or exports objects (e.g. intents) outside of Dialogflow.",
+"id": "GoogleCloudDialogflowCxV3InlineDestination",
+"properties": {
+"content": {
+"description": "Output only. The uncompressed byte content for the objects. Only populated in responses.",
+"format": "byte",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3InputAudioConfig": {
+"description": "Instructs the speech recognizer on how to process the audio content.",
+"id": "GoogleCloudDialogflowCxV3InputAudioConfig",
+"properties": {
+"audioEncoding": {
+"description": "Required. Audio encoding of the audio content to process.",
+"enum": [
+"AUDIO_ENCODING_UNSPECIFIED",
+"AUDIO_ENCODING_LINEAR_16",
+"AUDIO_ENCODING_FLAC",
+"AUDIO_ENCODING_MULAW",
+"AUDIO_ENCODING_AMR",
+"AUDIO_ENCODING_AMR_WB",
+"AUDIO_ENCODING_OGG_OPUS",
+"AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE",
+"AUDIO_ENCODING_ALAW"
+],
+"enumDescriptions": [
+"Not specified.",
+"Uncompressed 16-bit signed little-endian samples (Linear PCM).",
+"[`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio Codec) is the recommended encoding because it is lossless (therefore recognition is not compromised) and requires only about half the bandwidth of `LINEAR16`. `FLAC` stream encoding supports 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are supported.",
+"8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
+"Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000.",
+"Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.",
+"Opus encoded audio frames in Ogg container ([OggOpus](https://wiki.xiph.org/OggOpus)). `sample_rate_hertz` must be 16000.",
+"Although the use of lossy encodings is not recommended, if a very low bitrate encoding is required, `OGG_OPUS` is highly preferred over Speex encoding. The [Speex](https://speex.org/) encoding supported by Dialogflow API has a header byte in each block, as in MIME type `audio/x-speex-with-header-byte`. It is a variant of the RTP Speex encoding defined in [RFC 5574](https://tools.ietf.org/html/rfc5574). The stream is a sequence of blocks, one block per RTP packet. Each block starts with a byte containing the length of the block, in bytes, followed by one or more frames of Speex data, padded to an integral number of bytes (octets) as specified in RFC 5574. In other words, each RTP header is replaced with a single byte containing the block length. Only Speex wideband is supported. `sample_rate_hertz` must be 16000.",
+"8-bit samples that compand 13-bit audio samples using G.711 PCMU/a-law."
+],
+"type": "string"
+},
+"bargeInConfig": {
+"$ref": "GoogleCloudDialogflowCxV3BargeInConfig",
+"description": "Configuration of barge-in behavior during the streaming of input audio."
+},
+"enableWordInfo": {
+"description": "Optional. If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult with information about the recognized speech words, e.g. start and end time offsets. If false or unspecified, Speech doesn't return any word-level information.",
+"type": "boolean"
+},
+"model": {
+"description": "Optional. Which Speech model to select for the given request. For more information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/concept/speech-models).",
+"type": "string"
+},
+"modelVariant": {
+"description": "Optional. Which variant of the Speech model to use.",
+"enum": [
+"SPEECH_MODEL_VARIANT_UNSPECIFIED",
+"USE_BEST_AVAILABLE",
+"USE_STANDARD",
+"USE_ENHANCED"
+],
+"enumDescriptions": [
+"No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.",
+"Use the best available variant of the Speech model that the caller is eligible for.",
+"Use standard model variant even if an enhanced model is available. See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) for details about enhanced models.",
+"Use an enhanced model variant: * If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant. The [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) describes which models have enhanced variants."
+],
+"type": "string"
+},
+"optOutConformerModelMigration": {
+"description": "If `true`, the request will opt out for STT conformer model migration. This field will be deprecated once force migration takes place in June 2024. Please refer to [Dialogflow CX Speech model migration](https://cloud.google.com/dialogflow/cx/docs/concept/speech-model-migration).",
+"type": "boolean"
+},
+"phraseHints": {
+"description": "Optional. A list of strings containing words and phrases that the speech recognizer should recognize with higher likelihood. See [the Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more details.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sampleRateHertz": {
+"description": "Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics) for more details.",
+"format": "int32",
+"type": "integer"
+},
+"singleUtterance": {
+"description": "Optional. If `false` (default), recognition does not cease until the client closes the stream. If `true`, the recognizer will detect a single spoken utterance in input audio. Recognition ceases when it detects the audio's voice has stopped or paused. In this case, once a detected intent is received, the client should close the stream and start a new request with a new stream as needed. Note: This setting is relevant only for streaming methods.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3Intent": {
+"description": "An intent represents a user's intent to interact with a conversational agent. You can provide information for the Dialogflow API to use to match user input to an intent by adding training phrases (i.e., examples of user input) to your intent.",
+"id": "GoogleCloudDialogflowCxV3Intent",
+"properties": {
+"description": {
+"description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The human-readable name of the intent, unique within the agent.",
+"type": "string"
+},
+"isFallback": {
+"description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event.",
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys.contextual\" means the intent is a contextual intent.",
+"type": "object"
+},
+"name": {
+"description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`.",
+"type": "string"
+},
+"parameters": {
+"description": "The collection of parameters associated with the intent.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3IntentParameter"
+},
+"type": "array"
+},
+"priority": {
+"description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.",
+"format": "int32",
+"type": "integer"
+},
+"trainingPhrases": {
+"description": "The collection of training phrases the agent is trained on to identify the intent.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3IntentTrainingPhrase"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3IntentInput": {
+"description": "Represents the intent to trigger programmatically rather than as a result of natural language processing.",
+"id": "GoogleCloudDialogflowCxV3IntentInput",
+"properties": {
+"intent": {
+"description": "Required. The unique identifier of the intent. Format: `projects//locations//agents//intents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3IntentParameter": {
+"description": "Represents an intent parameter.",
+"id": "GoogleCloudDialogflowCxV3IntentParameter",
+"properties": {
+"entityType": {
+"description": "Required. The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types.",
+"type": "string"
+},
+"id": {
+"description": "Required. The unique identifier of the parameter. This field is used by training phrases to annotate their parts.",
+"type": "string"
+},
+"isList": {
+"description": "Indicates whether the parameter represents a list of values.",
+"type": "boolean"
+},
+"redact": {
+"description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3IntentTrainingPhrase": {
+"description": "Represents an example that the agent is trained on to identify the intent.",
+"id": "GoogleCloudDialogflowCxV3IntentTrainingPhrase",
+"properties": {
+"id": {
+"description": "Output only. The unique identifier of the training phrase.",
+"readOnly": true,
+"type": "string"
+},
+"parts": {
+"description": "Required. The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `parameter_id` field is set.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3IntentTrainingPhrasePart"
+},
+"type": "array"
+},
+"repeatCount": {
+"description": "Indicates how many times this example was added to the intent.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3IntentTrainingPhrasePart": {
+"description": "Represents a part of a training phrase.",
+"id": "GoogleCloudDialogflowCxV3IntentTrainingPhrasePart",
+"properties": {
+"parameterId": {
+"description": "The parameter used to annotate this part of the training phrase. This field is required for annotated parts of the training phrase.",
+"type": "string"
+},
+"text": {
+"description": "Required. The text for this part.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3KnowledgeConnectorSettings": {
+"description": "The Knowledge Connector settings for this page or flow. This includes information such as the attached Knowledge Bases, and the way to execute fulfillment.",
+"id": "GoogleCloudDialogflowCxV3KnowledgeConnectorSettings",
+"properties": {
+"dataStoreConnections": {
+"description": "Optional. List of related data store connections.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3DataStoreConnection"
+},
+"type": "array"
+},
+"enabled": {
+"description": "Whether Knowledge Connector is enabled or not.",
+"type": "boolean"
+},
+"targetFlow": {
+"description": "The target flow to transition to. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+},
+"targetPage": {
+"description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"triggerFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3Fulfillment",
+"description": "The fulfillment to be triggered. When the answers from the Knowledge Connector are selected by Dialogflow, you can utitlize the request scoped parameter `$request.knowledge.answers` (contains up to the 5 highest confidence answers) and `$request.knowledge.questions` (contains the corresponding questions) to construct the fulfillment."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3LanguageInfo": {
+"description": "Represents the language information of the request.",
+"id": "GoogleCloudDialogflowCxV3LanguageInfo",
+"properties": {
+"confidenceScore": {
+"description": "The confidence score of the detected language between 0 and 1.",
+"format": "float",
+"type": "number"
+},
+"inputLanguageCode": {
+"description": "The language code specified in the original request.",
+"type": "string"
+},
+"resolvedLanguageCode": {
+"description": "The language code detected for this request based on the user conversation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3Page": {
+"description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages. For each flow, you define many pages, where your combined pages can handle a complete conversation on the topics the flow is designed for. At any given moment, exactly one page is the current page, the current page is considered active, and the flow associated with that page is considered active. Every flow has a special start page. When a flow initially becomes active, the start page page becomes the current page. For each conversational turn, the current page will either stay the same or transition to another page. You configure each page to collect information from the end-user that is relevant for the conversational state represented by the page. For more information, see the [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page).",
+"id": "GoogleCloudDialogflowCxV3Page",
+"properties": {
+"advancedSettings": {
+"$ref": "GoogleCloudDialogflowCxV3AdvancedSettings",
+"description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
+},
+"description": {
+"description": "The description of the page. The maximum length is 500 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The human-readable name of the page, unique within the flow.",
+"type": "string"
+},
+"entryFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3Fulfillment",
+"description": "The fulfillment to call when the session is entering the page."
+},
+"eventHandlers": {
+"description": "Handlers associated with the page to handle events such as webhook errors, no match or no input.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3EventHandler"
+},
+"type": "array"
+},
+"form": {
+"$ref": "GoogleCloudDialogflowCxV3Form",
+"description": "The form associated with the page, used for collecting parameters relevant to the page."
+},
+"knowledgeConnectorSettings": {
+"$ref": "GoogleCloudDialogflowCxV3KnowledgeConnectorSettings",
+"description": "Optional. Knowledge connector configuration."
+},
+"name": {
+"description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"transitionRouteGroups": {
+"description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"transitionRoutes": {
+"description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3TransitionRoute"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3PageInfo": {
+"description": "Represents page information communicated to and from the webhook.",
+"id": "GoogleCloudDialogflowCxV3PageInfo",
+"properties": {
+"currentPage": {
+"description": "Always present for WebhookRequest. Ignored for WebhookResponse. The unique identifier of the current page. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"displayName": {
+"description": "Always present for WebhookRequest. Ignored for WebhookResponse. The display name of the current page.",
+"type": "string"
+},
+"formInfo": {
+"$ref": "GoogleCloudDialogflowCxV3PageInfoFormInfo",
+"description": "Optional for both WebhookRequest and WebhookResponse. Information about the form."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3PageInfoFormInfo": {
+"description": "Represents form information.",
+"id": "GoogleCloudDialogflowCxV3PageInfoFormInfo",
+"properties": {
+"parameterInfo": {
+"description": "Optional for both WebhookRequest and WebhookResponse. The parameters contained in the form. Note that the webhook cannot add or remove any form parameter.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3PageInfoFormInfoParameterInfo"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3PageInfoFormInfoParameterInfo": {
+"description": "Represents parameter information.",
+"id": "GoogleCloudDialogflowCxV3PageInfoFormInfoParameterInfo",
+"properties": {
+"displayName": {
+"description": "Always present for WebhookRequest. Required for WebhookResponse. The human-readable name of the parameter, unique within the form. This field cannot be modified by the webhook.",
+"type": "string"
+},
+"justCollected": {
+"description": "Optional for WebhookRequest. Ignored for WebhookResponse. Indicates if the parameter value was just collected on the last conversation turn.",
+"type": "boolean"
+},
+"required": {
+"description": "Optional for both WebhookRequest and WebhookResponse. Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.",
+"type": "boolean"
+},
+"state": {
+"description": "Always present for WebhookRequest. Required for WebhookResponse. The state of the parameter. This field can be set to INVALID by the webhook to invalidate the parameter; other values set by the webhook will be ignored.",
+"enum": [
+"PARAMETER_STATE_UNSPECIFIED",
+"EMPTY",
+"INVALID",
+"FILLED"
+],
+"enumDescriptions": [
+"Not specified. This value should be never used.",
+"Indicates that the parameter does not have a value.",
+"Indicates that the parameter value is invalid. This field can be used by the webhook to invalidate the parameter and ask the server to collect it from the user again.",
+"Indicates that the parameter has a value."
+],
+"type": "string"
+},
+"value": {
+"description": "Optional for both WebhookRequest and WebhookResponse. The value of the parameter. This field can be set by the webhook to change the parameter value.",
+"type": "any"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3QueryInput": {
+"description": "Represents the query input. It can contain one of: 1. A conversational query in the form of text. 2. An intent query that specifies which intent to trigger. 3. Natural language speech audio to be processed. 4. An event to be triggered. 5. DTMF digits to invoke an intent and fill in parameter value. 6. The results of a tool executed by the client.",
+"id": "GoogleCloudDialogflowCxV3QueryInput",
+"properties": {
+"audio": {
+"$ref": "GoogleCloudDialogflowCxV3AudioInput",
+"description": "The natural language speech audio to be processed."
+},
+"dtmf": {
+"$ref": "GoogleCloudDialogflowCxV3DtmfInput",
+"description": "The DTMF event to be handled."
+},
+"event": {
+"$ref": "GoogleCloudDialogflowCxV3EventInput",
+"description": "The event to be triggered."
+},
+"intent": {
+"$ref": "GoogleCloudDialogflowCxV3IntentInput",
+"description": "The intent to be triggered."
+},
+"languageCode": {
+"description": "Required. The language of the input. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language.",
+"type": "string"
+},
+"text": {
+"$ref": "GoogleCloudDialogflowCxV3TextInput",
+"description": "The natural language text to be processed."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessage": {
+"description": "Represents a response message that can be returned by a conversational agent. Response messages are also used for output audio synthesis. The approach is as follows: * If at least one OutputAudioText response is present, then all OutputAudioText responses are linearly concatenated, and the result is used for output audio synthesis. * If the OutputAudioText responses are a mixture of text and SSML, then the concatenated result is treated as SSML; otherwise, the result is treated as either text or SSML as appropriate. The agent designer should ideally use either text or SSML consistently throughout the bot design. * Otherwise, all Text responses are linearly concatenated, and the result is used for output audio synthesis. This approach allows for more sophisticated user experience scenarios, where the text displayed to the user may differ from what is heard.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessage",
+"properties": {
+"channel": {
+"description": "The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.",
+"type": "string"
+},
+"conversationSuccess": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageConversationSuccess",
+"description": "Indicates that the conversation succeeded."
+},
+"endInteraction": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageEndInteraction",
+"description": "Output only. A signal that indicates the interaction with the Dialogflow agent has ended. This message is generated by Dialogflow only when the conversation reaches `END_SESSION` page. It is not supposed to be defined by the user. It's guaranteed that there is at most one such message in each response.",
+"readOnly": true
+},
+"knowledgeInfoCard": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCard",
+"description": "Represents info card for knowledge answers, to be better rendered in Dialogflow Messenger."
+},
+"liveAgentHandoff": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoff",
+"description": "Hands off conversation to a human agent."
+},
+"mixedAudio": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageMixedAudio",
+"description": "Output only. An audio response message composed of both the synthesized Dialogflow agent responses and responses defined via play_audio. This message is generated by Dialogflow only and not supposed to be defined by the user.",
+"readOnly": true
+},
+"outputAudioText": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageOutputAudioText",
+"description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Returns a response containing a custom, platform-specific payload.",
+"type": "object"
+},
+"playAudio": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessagePlayAudio",
+"description": "Signal that the client should play an audio clip hosted at a client-specific URI. Dialogflow uses this to construct mixed_audio. However, Dialogflow itself does not try to read or process the URI in any way."
+},
+"responseType": {
+"description": "Response type.",
+"enum": [
+"RESPONSE_TYPE_UNSPECIFIED",
+"ENTRY_PROMPT",
+"PARAMETER_PROMPT",
+"HANDLER_PROMPT"
+],
+"enumDescriptions": [
+"Not specified.",
+"The response is from an entry prompt in the page.",
+"The response is from form-filling prompt in the page.",
+"The response is from a transition route or an event handler in the page or flow or transition route group."
+],
+"type": "string"
+},
+"telephonyTransferCall": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCall",
+"description": "A signal that the client should transfer the phone call connected to this agent to a third-party endpoint."
+},
+"text": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageText",
+"description": "Returns a text response."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageConversationSuccess": {
+"description": "Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates that the conversation succeeded. * In a webhook response when you determine that you handled the customer issue.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageConversationSuccess",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Custom metadata. Dialogflow doesn't impose any structure on this.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageEndInteraction": {
+"description": "Indicates that interaction with the Dialogflow agent has ended. This message is generated by Dialogflow only and not supposed to be defined by the user.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageEndInteraction",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCard": {
+"description": "Represents info card response. If the response contains generative knowledge prediction, Dialogflow will return a payload with Infobot Messenger compatible info card. Otherwise, the info card response is skipped.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageKnowledgeInfoCard",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoff": {
+"description": "Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates something went extremely wrong in the conversation. * In a webhook response when you determine that the customer issue can only be handled by a human.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageLiveAgentHandoff",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Custom metadata for your handoff procedure. Dialogflow doesn't impose any structure on this.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageMixedAudio": {
+"description": "Represents an audio message that is composed of both segments synthesized from the Dialogflow agent prompts and ones hosted externally at the specified URIs. The external URIs are specified via play_audio. This message is generated by Dialogflow only and not supposed to be defined by the user.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageMixedAudio",
+"properties": {
+"segments": {
+"description": "Segments this audio response is composed of.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessageMixedAudioSegment"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageMixedAudioSegment": {
+"description": "Represents one segment of audio.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageMixedAudioSegment",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Output only. Whether the playback of this segment can be interrupted by the end user's speech and the client should then start the next Dialogflow request.",
+"readOnly": true,
+"type": "boolean"
+},
+"audio": {
+"description": "Raw audio synthesized from the Dialogflow agent's response using the output config specified in the request.",
+"format": "byte",
+"type": "string"
+},
+"uri": {
+"description": "Client-specific URI that points to an audio clip accessible to the client. Dialogflow does not impose any validation on it.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageOutputAudioText": {
+"description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageOutputAudioText",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Output only. Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.",
+"readOnly": true,
+"type": "boolean"
+},
+"ssml": {
+"description": "The SSML text to be synthesized. For more information, see [SSML](/speech/text-to-speech/docs/ssml).",
+"type": "string"
+},
+"text": {
+"description": "The raw text to be synthesized.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessagePlayAudio": {
+"description": "Specifies an audio clip to be played by the client as part of the response.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessagePlayAudio",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Output only. Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.",
+"readOnly": true,
+"type": "boolean"
+},
+"audioUri": {
+"description": "Required. URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCall": {
+"description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageTelephonyTransferCall",
+"properties": {
+"phoneNumber": {
+"description": "Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3ResponseMessageText": {
+"description": "The text response message.",
+"id": "GoogleCloudDialogflowCxV3ResponseMessageText",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Output only. Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.",
+"readOnly": true,
+"type": "boolean"
+},
+"text": {
+"description": "Required. A collection of text response variants. If multiple variants are defined, only one text response variant is returned at runtime.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3RunContinuousTestMetadata": {
+"description": "Metadata returned for the Environments.RunContinuousTest long running operation.",
+"id": "GoogleCloudDialogflowCxV3RunContinuousTestMetadata",
+"properties": {
+"errors": {
+"description": "The test errors.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3TestError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3RunContinuousTestResponse": {
+"description": "The response message for Environments.RunContinuousTest.",
+"id": "GoogleCloudDialogflowCxV3RunContinuousTestResponse",
+"properties": {
+"continuousTestResult": {
+"$ref": "GoogleCloudDialogflowCxV3ContinuousTestResult",
+"description": "The result for a continuous test run."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3RunTestCaseMetadata": {
+"description": "Metadata returned for the TestCases.RunTestCase long running operation. This message currently has no fields.",
+"id": "GoogleCloudDialogflowCxV3RunTestCaseMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3RunTestCaseResponse": {
+"description": "The response message for TestCases.RunTestCase.",
+"id": "GoogleCloudDialogflowCxV3RunTestCaseResponse",
+"properties": {
+"result": {
+"$ref": "GoogleCloudDialogflowCxV3TestCaseResult",
+"description": "The result."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3SessionInfo": {
+"description": "Represents session information communicated to and from the webhook.",
+"id": "GoogleCloudDialogflowCxV3SessionInfo",
+"properties": {
+"parameters": {
+"additionalProperties": {
+"type": "any"
+},
+"description": "Optional for WebhookRequest. Optional for WebhookResponse. All parameters collected from forms and intents during the session. Parameters can be created, updated, or removed by the webhook. To remove a parameter from the session, the webhook should explicitly set the parameter value to null in WebhookResponse. The map is keyed by parameters' display names.",
+"type": "object"
+},
+"session": {
+"description": "Always present for WebhookRequest. Ignored for WebhookResponse. The unique identifier of the session. This field can be used by the webhook to identify a session. Format: `projects//locations//agents//sessions/` or `projects//locations//agents//environments//sessions/` if environment is specified.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TestCase": {
+"description": "Represents a test case.",
+"id": "GoogleCloudDialogflowCxV3TestCase",
+"properties": {
+"creationTime": {
+"description": "Output only. When the test was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Required. The human-readable name of the test case, unique within the agent. Limit of 200 characters.",
+"type": "string"
+},
+"lastTestResult": {
+"$ref": "GoogleCloudDialogflowCxV3TestCaseResult",
+"description": "The latest test result."
+},
+"name": {
+"description": "The unique identifier of the test case. TestCases.CreateTestCase will populate the name automatically. Otherwise use format: `projects//locations//agents//testCases/`.",
+"type": "string"
+},
+"notes": {
+"description": "Additional freeform notes about the test case. Limit of 400 characters.",
+"type": "string"
+},
+"tags": {
+"description": "Tags are short descriptions that users may apply to test cases for organizational and filtering purposes. Each tag should start with \"#\" and has a limit of 30 characters.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"testCaseConversationTurns": {
+"description": "The conversation turns uttered when the test case was created, in chronological order. These include the canonical set of agent utterances that should occur when the agent is working properly.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3ConversationTurn"
+},
+"type": "array"
+},
+"testConfig": {
+"$ref": "GoogleCloudDialogflowCxV3TestConfig",
+"description": "Config for the test case."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TestCaseError": {
+"description": "Error info for importing a test.",
+"id": "GoogleCloudDialogflowCxV3TestCaseError",
+"properties": {
+"status": {
+"$ref": "GoogleRpcStatus",
+"description": "The status associated with the test case."
+},
+"testCase": {
+"$ref": "GoogleCloudDialogflowCxV3TestCase",
+"description": "The test case."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TestCaseResult": {
+"description": "Represents a result from running a test case in an agent environment.",
+"id": "GoogleCloudDialogflowCxV3TestCaseResult",
+"properties": {
+"conversationTurns": {
+"description": "The conversation turns uttered during the test case replay in chronological order.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3ConversationTurn"
+},
+"type": "array"
+},
+"environment": {
+"description": "Environment where the test was run. If not set, it indicates the draft environment.",
+"type": "string"
+},
+"name": {
+"description": "The resource name for the test case result. Format: `projects//locations//agents//testCases//results/`.",
+"type": "string"
+},
+"testResult": {
+"description": "Whether the test case passed in the agent environment.",
+"enum": [
+"TEST_RESULT_UNSPECIFIED",
+"PASSED",
+"FAILED"
+],
+"enumDescriptions": [
+"Not specified. Should never be used.",
+"The test passed.",
+"The test did not pass."
+],
+"type": "string"
+},
+"testTime": {
+"description": "The time that the test was run.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TestConfig": {
+"description": "Represents configurations for a test case.",
+"id": "GoogleCloudDialogflowCxV3TestConfig",
+"properties": {
+"flow": {
+"description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If neither is set, the test case will start with start page on the default start flow.",
+"type": "string"
+},
+"page": {
+"description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If neither is set, the test case will start with start page on the default start flow.",
+"type": "string"
+},
+"trackingParameters": {
+"description": "Session parameters to be compared when calculating differences.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TestError": {
+"description": "Error info for running a test.",
+"id": "GoogleCloudDialogflowCxV3TestError",
+"properties": {
+"status": {
+"$ref": "GoogleRpcStatus",
+"description": "The status associated with the test."
+},
+"testCase": {
+"description": "The test case resource name.",
+"type": "string"
+},
+"testTime": {
+"description": "The timestamp when the test was completed.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TestRunDifference": {
+"description": "The description of differences between original and replayed agent output.",
+"id": "GoogleCloudDialogflowCxV3TestRunDifference",
+"properties": {
+"description": {
+"description": "A human readable description of the diff, showing the actual output vs expected output.",
+"type": "string"
+},
+"type": {
+"description": "The type of diff.",
+"enum": [
+"DIFF_TYPE_UNSPECIFIED",
+"INTENT",
+"PAGE",
+"PARAMETERS",
+"UTTERANCE",
+"FLOW"
+],
+"enumDescriptions": [
+"Should never be used.",
+"The intent.",
+"The page.",
+"The parameters.",
+"The message utterance.",
+"The flow."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TextInput": {
+"description": "Represents the natural language text to be processed.",
+"id": "GoogleCloudDialogflowCxV3TextInput",
+"properties": {
+"text": {
+"description": "Required. The UTF-8 encoded natural language text to be processed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TransitionRoute": {
+"description": "A transition route specifies a intent that can be matched and/or a data condition that can be evaluated during a session. When a specified transition is matched, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the transition, it will be called. * If there is a `target_page` associated with the transition, the session will transition into the specified page. * If there is a `target_flow` associated with the transition, the session will transition into the specified flow.",
+"id": "GoogleCloudDialogflowCxV3TransitionRoute",
+"properties": {
+"condition": {
+"description": "The condition to evaluate against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled.",
+"type": "string"
+},
+"description": {
+"description": "Optional. The description of the transition route. The maximum length is 500 characters.",
+"type": "string"
+},
+"intent": {
+"description": "The unique identifier of an Intent. Format: `projects//locations//agents//intents/`. Indicates that the transition can only happen when the given intent is matched. At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The unique identifier of this transition route.",
+"readOnly": true,
+"type": "string"
+},
+"targetFlow": {
+"description": "The target flow to transition to. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+},
+"targetPage": {
+"description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"triggerFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3Fulfillment",
+"description": "The fulfillment to call when the condition is satisfied. At least one of `trigger_fulfillment` and `target` must be specified. When both are defined, `trigger_fulfillment` is executed first."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3TurnSignals": {
+"description": "Collection of all signals that were extracted for a single turn of the conversation.",
+"id": "GoogleCloudDialogflowCxV3TurnSignals",
+"properties": {
+"agentEscalated": {
+"description": "Whether agent responded with LiveAgentHandoff fulfillment.",
+"type": "boolean"
+},
+"dtmfUsed": {
+"description": "Whether user was using DTMF input.",
+"type": "boolean"
+},
+"failureReasons": {
+"description": "Failure reasons of the turn.",
+"items": {
+"enum": [
+"FAILURE_REASON_UNSPECIFIED",
+"FAILED_INTENT",
+"FAILED_WEBHOOK"
+],
+"enumDescriptions": [
+"Failure reason is not assigned.",
+"Whether NLU failed to recognize user intent.",
+"Whether webhook failed during the turn."
+],
+"type": "string"
+},
+"type": "array"
+},
+"noMatch": {
+"description": "Whether NLU predicted NO_MATCH.",
+"type": "boolean"
+},
+"noUserInput": {
+"description": "Whether user provided no input.",
+"type": "boolean"
+},
+"reachedEndPage": {
+"description": "Whether turn resulted in End Session page.",
+"type": "boolean"
+},
+"sentimentMagnitude": {
+"description": "Sentiment magnitude of the user utterance if [sentiment](https://cloud.google.com/dialogflow/cx/docs/concept/sentiment) was enabled.",
+"format": "float",
+"type": "number"
+},
+"sentimentScore": {
+"description": "Sentiment score of the user utterance if [sentiment](https://cloud.google.com/dialogflow/cx/docs/concept/sentiment) was enabled.",
+"format": "float",
+"type": "number"
+},
+"userEscalated": {
+"description": "Whether user was specifically asking for a live agent.",
+"type": "boolean"
+},
+"webhookStatuses": {
+"description": "Human-readable statuses of the webhooks triggered during this turn.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3Webhook": {
+"description": "Webhooks host the developer's business logic. During a session, webhooks allow the developer to use the data extracted by Dialogflow's natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.",
+"id": "GoogleCloudDialogflowCxV3Webhook",
+"properties": {
+"disabled": {
+"description": "Indicates whether the webhook is disabled.",
+"type": "boolean"
+},
+"displayName": {
+"description": "Required. The human-readable name of the webhook, unique within the agent.",
+"type": "string"
+},
+"genericWebService": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookGenericWebService",
+"description": "Configuration for a generic web service."
+},
+"name": {
+"description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`.",
+"type": "string"
+},
+"serviceDirectory": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfig",
+"description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
+},
+"timeout": {
+"description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookGenericWebService": {
+"description": "Represents configuration for a generic web service.",
+"id": "GoogleCloudDialogflowCxV3WebhookGenericWebService",
+"properties": {
+"allowedCaCerts": {
+"description": "Optional. Specifies a list of allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, Dialogflow will use Google's default trust store to verify certificates. N.B. Make sure the HTTPS server certificates are signed with \"subject alt name\". For instance a certificate can be self-signed using the following command, ``` openssl x509 -req -days 200 -in example.com.csr \\ -signkey example.com.key \\ -out example.com.crt \\ -extfile <(printf \"\\nsubjectAltName='DNS:www.example.com'\") ```",
+"items": {
+"format": "byte",
+"type": "string"
+},
+"type": "array"
+},
+"httpMethod": {
+"description": "Optional. HTTP method for the flexible webhook calls. Standard webhook always uses POST.",
+"enum": [
+"HTTP_METHOD_UNSPECIFIED",
+"POST",
+"GET",
+"HEAD",
+"PUT",
+"DELETE",
+"PATCH",
+"OPTIONS"
+],
+"enumDescriptions": [
+"HTTP method not specified.",
+"HTTP POST Method.",
+"HTTP GET Method.",
+"HTTP HEAD Method.",
+"HTTP PUT Method.",
+"HTTP DELETE Method.",
+"HTTP PATCH Method.",
+"HTTP OPTIONS Method."
+],
+"type": "string"
+},
+"oauthConfig": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookGenericWebServiceOAuthConfig",
+"description": "Optional. The OAuth configuration of the webhook. If specified, Dialogflow will initiate the OAuth client credential flow to exchange an access token from the 3rd party platform and put it in the auth header."
+},
+"parameterMapping": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Maps the values extracted from specific fields of the flexible webhook response into session parameters. - Key: session parameter name - Value: field path in the webhook response",
+"type": "object"
+},
+"password": {
+"deprecated": true,
+"description": "The password for HTTP Basic authentication.",
+"type": "string"
+},
+"requestBody": {
+"description": "Optional. Defines a custom JSON object as request body to send to flexible webhook.",
+"type": "string"
+},
+"requestHeaders": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The HTTP request headers to send together with webhook requests.",
+"type": "object"
+},
+"serviceAgentAuth": {
+"description": "Optional. Indicate the auth token type generated from the [Diglogflow service agent](https://cloud.google.com/iam/docs/service-agents#dialogflow-service-agent). The generated token is sent in the Authorization header.",
+"enum": [
+"SERVICE_AGENT_AUTH_UNSPECIFIED",
+"NONE",
+"ID_TOKEN",
+"ACCESS_TOKEN"
+],
+"enumDescriptions": [
+"Service agent auth type unspecified. Default to ID_TOKEN.",
+"No token used.",
+"Use [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. This can be used to access Cloud Function and Cloud Run after you grant Invoker role to `service-@gcp-sa-dialogflow.iam.gserviceaccount.com`.",
+"Use [access token](https://cloud.google.com/docs/authentication/token-types#access) generated from service agent. This can be used to access other Google Cloud APIs after you grant required roles to `service-@gcp-sa-dialogflow.iam.gserviceaccount.com`."
+],
+"type": "string"
+},
+"uri": {
+"description": "Required. The webhook URI for receiving POST requests. It must use https protocol.",
+"type": "string"
+},
+"username": {
+"deprecated": true,
+"description": "The user name for HTTP Basic authentication.",
+"type": "string"
+},
+"webhookType": {
+"description": "Optional. Type of the webhook.",
+"enum": [
+"WEBHOOK_TYPE_UNSPECIFIED",
+"STANDARD",
+"FLEXIBLE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"Represents a standard webhook.",
+"Represents a flexible webhook."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookGenericWebServiceOAuthConfig": {
+"description": "Represents configuration of OAuth client credential flow for 3rd party API authentication.",
+"id": "GoogleCloudDialogflowCxV3WebhookGenericWebServiceOAuthConfig",
+"properties": {
+"clientId": {
+"description": "Required. The client ID provided by the 3rd party platform.",
+"type": "string"
+},
+"clientSecret": {
+"description": "Required. The client secret provided by the 3rd party platform.",
+"type": "string"
+},
+"scopes": {
+"description": "Optional. The OAuth scopes to grant.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"tokenEndpoint": {
+"description": "Required. The token endpoint provided by the 3rd party platform to exchange an access token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookRequest": {
+"description": "The request message for a webhook call. The request is sent as a JSON object and the field names will be presented in camel cases. You may see undocumented fields in an actual request. These fields are used internally by Dialogflow and should be ignored.",
+"id": "GoogleCloudDialogflowCxV3WebhookRequest",
+"properties": {
+"detectIntentResponseId": {
+"description": "Always present. The unique identifier of the DetectIntentResponse that will be returned to the API caller.",
+"type": "string"
+},
+"dtmfDigits": {
+"description": "If DTMF was provided as input, this field will contain the DTMF digits.",
+"type": "string"
+},
+"fulfillmentInfo": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookRequestFulfillmentInfo",
+"description": "Always present. Information about the fulfillment that triggered this webhook call."
+},
+"intentInfo": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookRequestIntentInfo",
+"description": "Information about the last matched intent."
+},
+"languageCode": {
+"description": "The language code specified in the original request.",
+"type": "string"
+},
+"languageInfo": {
+"$ref": "GoogleCloudDialogflowCxV3LanguageInfo",
+"description": "Information about the language of the request."
+},
+"messages": {
+"description": "The list of rich message responses to present to the user. Webhook can choose to append or replace this list in WebhookResponse.fulfillment_response;",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessage"
+},
+"type": "array"
+},
+"pageInfo": {
+"$ref": "GoogleCloudDialogflowCxV3PageInfo",
+"description": "Information about page status."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Custom data set in QueryParameters.payload.",
+"type": "object"
+},
+"sentimentAnalysisResult": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookRequestSentimentAnalysisResult",
+"description": "The sentiment analysis result of the current user request. The field is filled when sentiment analysis is configured to be enabled for the request."
+},
+"sessionInfo": {
+"$ref": "GoogleCloudDialogflowCxV3SessionInfo",
+"description": "Information about session status."
+},
+"text": {
+"description": "If natural language text was provided as input, this field will contain a copy of the text.",
+"type": "string"
+},
+"transcript": {
+"description": "If natural language speech audio was provided as input, this field will contain the transcript for the audio.",
+"type": "string"
+},
+"triggerEvent": {
+"description": "If an event was provided as input, this field will contain the name of the event.",
+"type": "string"
+},
+"triggerIntent": {
+"description": "If an intent was provided as input, this field will contain a copy of the intent identifier. Format: `projects//locations//agents//intents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookRequestFulfillmentInfo": {
+"description": "Represents fulfillment information communicated to the webhook.",
+"id": "GoogleCloudDialogflowCxV3WebhookRequestFulfillmentInfo",
+"properties": {
+"tag": {
+"description": "Always present. The value of the Fulfillment.tag field will be populated in this field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookRequestIntentInfo": {
+"description": "Represents intent information communicated to the webhook.",
+"id": "GoogleCloudDialogflowCxV3WebhookRequestIntentInfo",
+"properties": {
+"confidence": {
+"description": "The confidence of the matched intent. Values range from 0.0 (completely uncertain) to 1.0 (completely certain).",
+"format": "float",
+"type": "number"
+},
+"displayName": {
+"description": "Always present. The display name of the last matched intent.",
+"type": "string"
+},
+"lastMatchedIntent": {
+"description": "Always present. The unique identifier of the last matched intent. Format: `projects//locations//agents//intents/`.",
+"type": "string"
+},
+"parameters": {
+"additionalProperties": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookRequestIntentInfoIntentParameterValue"
+},
+"description": "Parameters identified as a result of intent matching. This is a map of the name of the identified parameter to the value of the parameter identified from the user's utterance. All parameters defined in the matched intent that are identified will be surfaced here.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookRequestIntentInfoIntentParameterValue": {
+"description": "Represents a value for an intent parameter.",
+"id": "GoogleCloudDialogflowCxV3WebhookRequestIntentInfoIntentParameterValue",
+"properties": {
+"originalValue": {
+"description": "Always present. Original text value extracted from user utterance.",
+"type": "string"
+},
+"resolvedValue": {
+"description": "Always present. Structured value for the parameter extracted from user utterance.",
+"type": "any"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookRequestSentimentAnalysisResult": {
+"description": "Represents the result of sentiment analysis.",
+"id": "GoogleCloudDialogflowCxV3WebhookRequestSentimentAnalysisResult",
+"properties": {
+"magnitude": {
+"description": "A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment, regardless of score (positive or negative).",
+"format": "float",
+"type": "number"
+},
+"score": {
+"description": "Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookResponse": {
+"description": "The response message for a webhook call.",
+"id": "GoogleCloudDialogflowCxV3WebhookResponse",
+"properties": {
+"fulfillmentResponse": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookResponseFulfillmentResponse",
+"description": "The fulfillment response to send to the user. This field can be omitted by the webhook if it does not intend to send any response to the user."
+},
+"pageInfo": {
+"$ref": "GoogleCloudDialogflowCxV3PageInfo",
+"description": "Information about page status. This field can be omitted by the webhook if it does not intend to modify page status."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Value to append directly to QueryResult.webhook_payloads.",
+"type": "object"
+},
+"sessionInfo": {
+"$ref": "GoogleCloudDialogflowCxV3SessionInfo",
+"description": "Information about session status. This field can be omitted by the webhook if it does not intend to modify session status."
+},
+"targetFlow": {
+"description": "The target flow to transition to. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+},
+"targetPage": {
+"description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookResponseFulfillmentResponse": {
+"description": "Represents a fulfillment response to the user.",
+"id": "GoogleCloudDialogflowCxV3WebhookResponseFulfillmentResponse",
+"properties": {
+"mergeBehavior": {
+"description": "Merge behavior for `messages`.",
+"enum": [
+"MERGE_BEHAVIOR_UNSPECIFIED",
+"APPEND",
+"REPLACE"
+],
+"enumDescriptions": [
+"Not specified. `APPEND` will be used.",
+"`messages` will be appended to the list of messages waiting to be sent to the user.",
+"`messages` will replace the list of messages waiting to be sent to the user."
+],
+"type": "string"
+},
+"messages": {
+"description": "The list of rich message responses to present to the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3ResponseMessage"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfig": {
+"description": "Represents configuration for a [Service Directory](https://cloud.google.com/service-directory) service.",
+"id": "GoogleCloudDialogflowCxV3WebhookServiceDirectoryConfig",
+"properties": {
+"genericWebService": {
+"$ref": "GoogleCloudDialogflowCxV3WebhookGenericWebService",
+"description": "Generic Service configuration of this webhook."
+},
+"service": {
+"description": "Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects//locations//namespaces//services/`. `Location ID` of the service directory must be the same as the location of the agent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1AdvancedSettings": {
+"description": "Hierarchical advanced settings for agent/flow/page/fulfillment/parameter. Settings exposed at lower level overrides the settings exposed at higher level. Overriding occurs at the sub-setting level. For example, the playback_interruption_settings at fulfillment level only overrides the playback_interruption_settings at the agent level, leaving other settings at the agent level unchanged. DTMF settings does not override each other. DTMF settings set at different levels define DTMF detections running in parallel. Hierarchy: Agent->Flow->Page->Fulfillment/Parameter.",
+"id": "GoogleCloudDialogflowCxV3beta1AdvancedSettings",
+"properties": {
+"audioExportGcsDestination": {
+"$ref": "GoogleCloudDialogflowCxV3beta1GcsDestination",
+"description": "If present, incoming audio is exported by Dialogflow to the configured Google Cloud Storage destination. Exposed at the following levels: - Agent level - Flow level"
+},
+"dtmfSettings": {
+"$ref": "GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettings",
+"description": "Settings for DTMF. Exposed at the following levels: - Agent level - Flow level - Page level - Parameter level."
+},
+"loggingSettings": {
+"$ref": "GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettings",
+"description": "Settings for logging. Settings for Dialogflow History, Contact Center messages, StackDriver logs, and speech logging. Exposed at the following levels: - Agent level."
+},
+"speechSettings": {
+"$ref": "GoogleCloudDialogflowCxV3beta1AdvancedSettingsSpeechSettings",
+"description": "Settings for speech to text detection. Exposed at the following levels: - Agent level - Flow level - Page level - Parameter level"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettings": {
+"description": "Define behaviors for DTMF (dual tone multi frequency).",
+"id": "GoogleCloudDialogflowCxV3beta1AdvancedSettingsDtmfSettings",
+"properties": {
+"enabled": {
+"description": "If true, incoming audio is processed for DTMF (dual tone multi frequency) events. For example, if the caller presses a button on their telephone keypad and DTMF processing is enabled, Dialogflow will detect the event (e.g. a \"3\" was pressed) in the incoming audio and pass the event to the bot to drive business logic (e.g. when 3 is pressed, return the account balance).",
+"type": "boolean"
+},
+"endpointingTimeoutDuration": {
+"description": "Endpoint timeout setting for matching dtmf input to regex.",
+"format": "google-duration",
+"type": "string"
+},
+"finishDigit": {
+"description": "The digit that terminates a DTMF digit sequence.",
+"type": "string"
+},
+"interdigitTimeoutDuration": {
+"description": "Interdigit timeout setting for matching dtmf input to regex.",
+"format": "google-duration",
+"type": "string"
+},
+"maxDigits": {
+"description": "Max length of DTMF digits.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettings": {
+"description": "Define behaviors on logging.",
+"id": "GoogleCloudDialogflowCxV3beta1AdvancedSettingsLoggingSettings",
+"properties": {
+"enableConsentBasedRedaction": {
+"description": "Enables consent-based end-user input redaction, if true, a pre-defined session parameter `$session.params.conversation-redaction` will be used to determine if the utterance should be redacted.",
+"type": "boolean"
+},
+"enableInteractionLogging": {
+"description": "Enables DF Interaction logging.",
+"type": "boolean"
+},
+"enableStackdriverLogging": {
+"description": "Enables Google Cloud Logging.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1AdvancedSettingsSpeechSettings": {
+"description": "Define behaviors of speech to text detection.",
+"id": "GoogleCloudDialogflowCxV3beta1AdvancedSettingsSpeechSettings",
+"properties": {
+"endpointerSensitivity": {
+"description": "Sensitivity of the speech model that detects the end of speech. Scale from 0 to 100.",
+"format": "int32",
+"type": "integer"
+},
+"models": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Mapping from language to Speech-to-Text model. The mapped Speech-to-Text model will be selected for requests from its corresponding language. For more information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/concept/speech-models).",
+"type": "object"
+},
+"noSpeechTimeout": {
+"description": "Timeout before detecting no speech.",
+"format": "google-duration",
+"type": "string"
+},
+"useTimeoutBasedEndpointing": {
+"description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1AudioInput": {
+"description": "Represents the natural speech audio to be processed.",
+"id": "GoogleCloudDialogflowCxV3beta1AudioInput",
+"properties": {
+"audio": {
+"description": "The natural language speech audio to be processed. A single request can contain up to 2 minutes of speech audio data. The transcribed text cannot contain more than 256 bytes. For non-streaming audio detect intent, both `config` and `audio` must be provided. For streaming audio detect intent, `config` must be provided in the first request and `audio` must be provided in all following requests.",
+"format": "byte",
+"type": "string"
+},
+"config": {
+"$ref": "GoogleCloudDialogflowCxV3beta1InputAudioConfig",
+"description": "Required. Instructs the speech recognizer how to process the speech audio."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1BargeInConfig": {
+"description": "Configuration of the barge-in behavior. Barge-in instructs the API to return a detected utterance at a proper time while the client is playing back the response audio from a previous request. When the client sees the utterance, it should stop the playback and immediately get ready for receiving the responses for the current request. The barge-in handling requires the client to start streaming audio input as soon as it starts playing back the audio from the previous response. The playback is modeled into two phases: * No barge-in phase: which goes first and during which speech detection should not be carried out. * Barge-in phase: which follows the no barge-in phase and during which the API starts speech detection and may inform the client that an utterance has been detected. Note that no-speech event is not expected in this phase. The client provides this configuration in terms of the durations of those two phases. The durations are measured in terms of the audio length from the start of the input audio. No-speech event is a response with END_OF_UTTERANCE without any transcript following up.",
+"id": "GoogleCloudDialogflowCxV3beta1BargeInConfig",
+"properties": {
+"noBargeInDuration": {
+"description": "Duration that is not eligible for barge-in at the beginning of the input audio.",
+"format": "google-duration",
+"type": "string"
+},
+"totalDuration": {
+"description": "Total duration for the playback at the beginning of the input audio.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1BatchRunTestCasesMetadata": {
+"description": "Metadata returned for the TestCases.BatchRunTestCases long running operation.",
+"id": "GoogleCloudDialogflowCxV3beta1BatchRunTestCasesMetadata",
+"properties": {
+"errors": {
+"description": "The test errors.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1BatchRunTestCasesResponse": {
+"description": "The response message for TestCases.BatchRunTestCases.",
+"id": "GoogleCloudDialogflowCxV3beta1BatchRunTestCasesResponse",
+"properties": {
+"results": {
+"description": "The test case results. The detailed conversation turns are empty in this response.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestCaseResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ContinuousTestResult": {
+"description": "Represents a result from running a test case in an agent environment.",
+"id": "GoogleCloudDialogflowCxV3beta1ContinuousTestResult",
+"properties": {
+"name": {
+"description": "The resource name for the continuous test result. Format: `projects//locations//agents//environments//continuousTestResults/`.",
+"type": "string"
+},
+"result": {
+"description": "The result of this continuous test run, i.e. whether all the tests in this continuous test run pass or not.",
+"enum": [
+"AGGREGATED_TEST_RESULT_UNSPECIFIED",
+"PASSED",
+"FAILED"
+],
+"enumDescriptions": [
+"Not specified. Should never be used.",
+"All the tests passed.",
+"At least one test did not pass."
+],
+"type": "string"
+},
+"runTime": {
+"description": "Time when the continuous testing run starts.",
+"format": "google-datetime",
+"type": "string"
+},
+"testCaseResults": {
+"description": "A list of individual test case results names in this continuous test run.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ConversationSignals": {
+"description": "This message is used to hold all the Conversation Signals data, which will be converted to JSON and exported to BigQuery.",
+"id": "GoogleCloudDialogflowCxV3beta1ConversationSignals",
+"properties": {
+"turnSignals": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TurnSignals",
+"description": "Required. Turn signals for the current turn."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ConversationTurn": {
+"description": "One interaction between a human and virtual agent. The human provides some input and the virtual agent provides a response.",
+"id": "GoogleCloudDialogflowCxV3beta1ConversationTurn",
+"properties": {
+"userInput": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ConversationTurnUserInput",
+"description": "The user input."
+},
+"virtualAgentOutput": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutput",
+"description": "The virtual agent output."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ConversationTurnUserInput": {
+"description": "The input from the human user.",
+"id": "GoogleCloudDialogflowCxV3beta1ConversationTurnUserInput",
+"properties": {
+"enableSentimentAnalysis": {
+"description": "Whether sentiment analysis is enabled.",
+"type": "boolean"
+},
+"injectedParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Parameters that need to be injected into the conversation during intent detection.",
+"type": "object"
+},
+"input": {
+"$ref": "GoogleCloudDialogflowCxV3beta1QueryInput",
+"description": "Supports text input, event input, dtmf input in the test case."
+},
+"isWebhookEnabled": {
+"description": "If webhooks should be allowed to trigger in response to the user utterance. Often if parameters are injected, webhooks should not be enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutput": {
+"description": "The output from the virtual agent.",
+"id": "GoogleCloudDialogflowCxV3beta1ConversationTurnVirtualAgentOutput",
+"properties": {
+"currentPage": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Page",
+"description": "The Page on which the utterance was spoken. Only name and displayName will be set."
+},
+"diagnosticInfo": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Required. Input only. The diagnostic info output for the turn. Required to calculate the testing coverage.",
+"type": "object"
+},
+"differences": {
+"description": "Output only. If this is part of a result conversation turn, the list of differences between the original run and the replay for this output, if any.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestRunDifference"
+},
+"readOnly": true,
+"type": "array"
+},
+"sessionParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The session parameters available to the bot at this point.",
+"type": "object"
+},
+"status": {
+"$ref": "GoogleRpcStatus",
+"description": "Response error from the agent in the test result. If set, other output is empty."
+},
+"textResponses": {
+"description": "The text responses from the agent for the turn.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageText"
+},
+"type": "array"
+},
+"triggeredIntent": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Intent",
+"description": "The Intent that triggered the response. Only name and displayName will be set."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1CreateVersionOperationMetadata": {
+"description": "Metadata associated with the long running operation for Versions.CreateVersion.",
+"id": "GoogleCloudDialogflowCxV3beta1CreateVersionOperationMetadata",
+"properties": {
+"version": {
+"description": "Name of the created version. Format: `projects//locations//agents//flows//versions/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1DataStoreConnection": {
+"description": "A data store connection. It represents a data store in Discovery Engine and the type of the contents it contains.",
+"id": "GoogleCloudDialogflowCxV3beta1DataStoreConnection",
+"properties": {
+"dataStore": {
+"description": "The full name of the referenced data store. Formats: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}` `projects/{project}/locations/{location}/dataStores/{data_store}`",
+"type": "string"
+},
+"dataStoreType": {
+"description": "The type of the connected data store.",
+"enum": [
+"DATA_STORE_TYPE_UNSPECIFIED",
+"PUBLIC_WEB",
+"UNSTRUCTURED",
+"STRUCTURED"
+],
+"enumDescriptions": [
+"Not specified. This value indicates that the data store type is not specified, so it will not be used during search.",
+"A data store that contains public web content.",
+"A data store that contains unstructured private data.",
+"A data store that contains structured data (for example FAQ)."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1DeployFlowMetadata": {
+"description": "Metadata returned for the Environments.DeployFlow long running operation.",
+"id": "GoogleCloudDialogflowCxV3beta1DeployFlowMetadata",
+"properties": {
+"testErrors": {
+"description": "Errors of running deployment tests.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1DeployFlowResponse": {
+"description": "The response message for Environments.DeployFlow.",
+"id": "GoogleCloudDialogflowCxV3beta1DeployFlowResponse",
+"properties": {
+"deployment": {
+"description": "The name of the flow version deployment. Format: `projects//locations//agents//environments//deployments/`.",
+"type": "string"
+},
+"environment": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Environment",
+"description": "The updated environment where the flow is deployed."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1DtmfInput": {
+"description": "Represents the input for dtmf event.",
+"id": "GoogleCloudDialogflowCxV3beta1DtmfInput",
+"properties": {
+"digits": {
+"description": "The dtmf digits.",
+"type": "string"
+},
+"finishDigit": {
+"description": "The finish digit (if any).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1Environment": {
+"description": "Represents an environment for an agent. You can create multiple versions of your agent and publish them to separate environments. When you edit an agent, you are editing the draft agent. At any point, you can save the draft agent as an agent version, which is an immutable snapshot of your agent. When you save the draft agent, it is published to the default environment. When you create agent versions, you can publish them to custom environments. You can create a variety of custom environments for testing, development, production, etc.",
+"id": "GoogleCloudDialogflowCxV3beta1Environment",
+"properties": {
+"description": {
+"description": "The human-readable description of the environment. The maximum length is 500 characters. If exceeded, the request is rejected.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The human-readable name of the environment (unique in an agent). Limit of 64 characters.",
+"type": "string"
+},
+"name": {
+"description": "The name of the environment. Format: `projects//locations//agents//environments/`.",
+"type": "string"
+},
+"testCasesConfig": {
+"$ref": "GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfig",
+"description": "The test cases config for continuous tests of this environment."
+},
+"updateTime": {
+"description": "Output only. Update time of this environment.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"versionConfigs": {
+"description": "A list of configurations for flow versions. You should include version configs for all flows that are reachable from `Start Flow` in the agent. Otherwise, an error will be returned.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfig"
+},
+"type": "array"
+},
+"webhookConfig": {
+"$ref": "GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfig",
+"description": "The webhook configuration for this environment."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfig": {
+"description": "The configuration for continuous tests.",
+"id": "GoogleCloudDialogflowCxV3beta1EnvironmentTestCasesConfig",
+"properties": {
+"enableContinuousRun": {
+"description": "Whether to run test cases in TestCasesConfig.test_cases periodically. Default false. If set to true, run once a day.",
+"type": "boolean"
+},
+"enablePredeploymentRun": {
+"description": "Whether to run test cases in TestCasesConfig.test_cases before deploying a flow version to the environment. Default false.",
+"type": "boolean"
+},
+"testCases": {
+"description": "A list of test case names to run. They should be under the same agent. Format of each test case name: `projects//locations//agents//testCases/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfig": {
+"description": "Configuration for the version.",
+"id": "GoogleCloudDialogflowCxV3beta1EnvironmentVersionConfig",
+"properties": {
+"version": {
+"description": "Required. Both flow and playbook versions are supported. Format for flow version: projects//locations//agents//flows//versions/. Format for playbook version: projects//locations//agents//playbooks//versions/.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfig": {
+"description": "Configuration for webhooks.",
+"id": "GoogleCloudDialogflowCxV3beta1EnvironmentWebhookConfig",
+"properties": {
+"webhookOverrides": {
+"description": "The list of webhooks to override for the agent environment. The webhook must exist in the agent. You can override fields in `generic_web_service` and `service_directory`.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Webhook"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1EventHandler": {
+"description": "An event handler specifies an event that can be handled during a session. When the specified event happens, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the event, it will be called. * If there is a `target_page` associated with the event, the session will transition into the specified page. * If there is a `target_flow` associated with the event, the session will transition into the specified flow.",
+"id": "GoogleCloudDialogflowCxV3beta1EventHandler",
+"properties": {
+"event": {
+"description": "Required. The name of the event to handle.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The unique identifier of this event handler.",
+"readOnly": true,
+"type": "string"
+},
+"targetFlow": {
+"description": "The target flow to transition to. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+},
+"targetPage": {
+"description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"targetPlaybook": {
+"description": "The target playbook to transition to. Format: `projects//locations//agents//playbooks/`.",
+"type": "string"
+},
+"triggerFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Fulfillment",
+"description": "The fulfillment to call when the event occurs. Handling webhook errors with a fulfillment enabled with webhook could cause infinite loop. It is invalid to specify such fulfillment for a handler handling webhooks."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1EventInput": {
+"description": "Represents the event to trigger.",
+"id": "GoogleCloudDialogflowCxV3beta1EventInput",
+"properties": {
+"event": {
+"description": "Name of the event.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ExportAgentResponse": {
+"description": "The response message for Agents.ExportAgent.",
+"id": "GoogleCloudDialogflowCxV3beta1ExportAgentResponse",
+"properties": {
+"agentContent": {
+"description": "Uncompressed raw byte content for agent. This field is populated if none of `agent_uri` and `git_destination` are specified in ExportAgentRequest.",
+"format": "byte",
+"type": "string"
+},
+"agentUri": {
+"description": "The URI to a file containing the exported agent. This field is populated if `agent_uri` is specified in ExportAgentRequest.",
+"type": "string"
+},
+"commitSha": {
+"description": "Commit SHA of the git push. This field is populated if `git_destination` is specified in ExportAgentRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ExportEntityTypesMetadata": {
+"description": "Metadata returned for the EntityTypes.ExportEntityTypes long running operation.",
+"id": "GoogleCloudDialogflowCxV3beta1ExportEntityTypesMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ExportEntityTypesResponse": {
+"description": "The response message for EntityTypes.ExportEntityTypes.",
+"id": "GoogleCloudDialogflowCxV3beta1ExportEntityTypesResponse",
+"properties": {
+"entityTypesContent": {
+"$ref": "GoogleCloudDialogflowCxV3beta1InlineDestination",
+"description": "Uncompressed byte content for entity types. This field is populated only if `entity_types_content_inline` is set to true in ExportEntityTypesRequest."
+},
+"entityTypesUri": {
+"description": "The URI to a file containing the exported entity types. This field is populated only if `entity_types_uri` is specified in ExportEntityTypesRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ExportFlowResponse": {
+"description": "The response message for Flows.ExportFlow.",
+"id": "GoogleCloudDialogflowCxV3beta1ExportFlowResponse",
+"properties": {
+"flowContent": {
+"description": "Uncompressed raw byte content for flow.",
+"format": "byte",
+"type": "string"
+},
+"flowUri": {
+"description": "The URI to a file containing the exported flow. This field is populated only if `flow_uri` is specified in ExportFlowRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ExportIntentsMetadata": {
+"description": "Metadata returned for the Intents.ExportIntents long running operation.",
+"id": "GoogleCloudDialogflowCxV3beta1ExportIntentsMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ExportIntentsResponse": {
+"description": "The response message for Intents.ExportIntents.",
+"id": "GoogleCloudDialogflowCxV3beta1ExportIntentsResponse",
+"properties": {
+"intentsContent": {
+"$ref": "GoogleCloudDialogflowCxV3beta1InlineDestination",
+"description": "Uncompressed byte content for intents. This field is populated only if `intents_content_inline` is set to true in ExportIntentsRequest."
+},
+"intentsUri": {
+"description": "The URI to a file containing the exported intents. This field is populated only if `intents_uri` is specified in ExportIntentsRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ExportTestCasesMetadata": {
+"description": "Metadata returned for the TestCases.ExportTestCases long running operation. This message currently has no fields.",
+"id": "GoogleCloudDialogflowCxV3beta1ExportTestCasesMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ExportTestCasesResponse": {
+"description": "The response message for TestCases.ExportTestCases.",
+"id": "GoogleCloudDialogflowCxV3beta1ExportTestCasesResponse",
+"properties": {
+"content": {
+"description": "Uncompressed raw byte content for test cases.",
+"format": "byte",
+"type": "string"
+},
+"gcsUri": {
+"description": "The URI to a file containing the exported test cases. This field is populated only if `gcs_uri` is specified in ExportTestCasesRequest.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1Form": {
+"description": "A form is a data model that groups related parameters that can be collected from the user. The process in which the agent prompts the user and collects parameter values from the user is called form filling. A form can be added to a page. When form filling is done, the filled parameters will be written to the session.",
+"id": "GoogleCloudDialogflowCxV3beta1Form",
+"properties": {
+"parameters": {
+"description": "Parameters to collect from the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1FormParameter"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1FormParameter": {
+"description": "Represents a form parameter.",
+"id": "GoogleCloudDialogflowCxV3beta1FormParameter",
+"properties": {
+"advancedSettings": {
+"$ref": "GoogleCloudDialogflowCxV3beta1AdvancedSettings",
+"description": "Hierarchical advanced settings for this parameter. The settings exposed at the lower level overrides the settings exposed at the higher level."
+},
+"defaultValue": {
+"description": "The default value of an optional parameter. If the parameter is required, the default value will be ignored.",
+"type": "any"
+},
+"displayName": {
+"description": "Required. The human-readable name of the parameter, unique within the form.",
+"type": "string"
+},
+"entityType": {
+"description": "Required. The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types.",
+"type": "string"
+},
+"fillBehavior": {
+"$ref": "GoogleCloudDialogflowCxV3beta1FormParameterFillBehavior",
+"description": "Required. Defines fill behavior for the parameter."
+},
+"isList": {
+"description": "Indicates whether the parameter represents a list of values.",
+"type": "boolean"
+},
+"redact": {
+"description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.",
+"type": "boolean"
+},
+"required": {
+"description": "Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1FormParameterFillBehavior": {
+"description": "Configuration for how the filling of a parameter should be handled.",
+"id": "GoogleCloudDialogflowCxV3beta1FormParameterFillBehavior",
+"properties": {
+"initialPromptFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Fulfillment",
+"description": "Required. The fulfillment to provide the initial prompt that the agent can present to the user in order to fill the parameter."
+},
+"repromptEventHandlers": {
+"description": "The handlers for parameter-level events, used to provide reprompt for the parameter or transition to a different page/flow. The supported events are: * `sys.no-match-`, where N can be from 1 to 6 * `sys.no-match-default` * `sys.no-input-`, where N can be from 1 to 6 * `sys.no-input-default` * `sys.invalid-parameter` `initial_prompt_fulfillment` provides the first prompt for the parameter. If the user's response does not fill the parameter, a no-match/no-input event will be triggered, and the fulfillment associated with the `sys.no-match-1`/`sys.no-input-1` handler (if defined) will be called to provide a prompt. The `sys.no-match-2`/`sys.no-input-2` handler (if defined) will respond to the next no-match/no-input event, and so on. A `sys.no-match-default` or `sys.no-input-default` handler will be used to handle all following no-match/no-input events after all numbered no-match/no-input handlers for the parameter are consumed. A `sys.invalid-parameter` handler can be defined to handle the case where the parameter values have been `invalidated` by webhook. For example, if the user's response fill the parameter, however the parameter was invalidated by webhook, the fulfillment associated with the `sys.invalid-parameter` handler (if defined) will be called to provide a prompt. If the event handler for the corresponding event can't be found on the parameter, `initial_prompt_fulfillment` will be re-prompted.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1EventHandler"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1Fulfillment": {
+"description": "A fulfillment can do one or more of the following actions at the same time: * Generate rich message responses. * Set parameter values. * Call the webhook. Fulfillments can be called at various stages in the Page or Form lifecycle. For example, when a DetectIntentRequest drives a session to enter a new page, the page's entry fulfillment can add a static response to the QueryResult in the returning DetectIntentResponse, call the webhook (for example, to load user data from a database), or both.",
+"id": "GoogleCloudDialogflowCxV3beta1Fulfillment",
+"properties": {
+"advancedSettings": {
+"$ref": "GoogleCloudDialogflowCxV3beta1AdvancedSettings",
+"description": "Hierarchical advanced settings for this fulfillment. The settings exposed at the lower level overrides the settings exposed at the higher level."
+},
+"conditionalCases": {
+"description": "Conditional cases for this fulfillment.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases"
+},
+"type": "array"
+},
+"enableGenerativeFallback": {
+"description": "If the flag is true, the agent will utilize LLM to generate a text response. If LLM generation fails, the defined responses in the fulfillment will be respected. This flag is only useful for fulfillments associated with no-match event handlers.",
+"type": "boolean"
+},
+"messages": {
+"description": "The list of rich message responses to present to the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessage"
+},
+"type": "array"
+},
+"returnPartialResponses": {
+"description": "Whether Dialogflow should return currently queued fulfillment response messages in streaming APIs. If a webhook is specified, it happens before Dialogflow invokes webhook. Warning: 1) This flag only affects streaming API. Responses are still queued and returned once in non-streaming API. 2) The flag can be enabled in any fulfillment but only the first 3 partial responses will be returned. You may only want to apply it to fulfillments that have slow webhooks.",
+"type": "boolean"
+},
+"setParameterActions": {
+"description": "Set parameter values before executing the webhook.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterAction"
+},
+"type": "array"
+},
+"tag": {
+"description": "The value of this field will be populated in the WebhookRequest `fulfillmentInfo.tag` field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes. This field is required if `webhook` is specified.",
+"type": "string"
+},
+"webhook": {
+"description": "The webhook to call. Format: `projects//locations//agents//webhooks/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases": {
+"description": "A list of cascading if-else conditions. Cases are mutually exclusive. The first one with a matching condition is selected, all the rest ignored.",
+"id": "GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases",
+"properties": {
+"cases": {
+"description": "A list of cascading if-else conditions.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCase"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCase": {
+"description": "Each case has a Boolean condition. When it is evaluated to be True, the corresponding messages will be selected and evaluated recursively.",
+"id": "GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCase",
+"properties": {
+"caseContent": {
+"description": "A list of case content.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContent"
+},
+"type": "array"
+},
+"condition": {
+"description": "The condition to activate and select this case. Empty means the condition is always true. The condition is evaluated against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContent": {
+"description": "The list of messages or conditional cases to activate for this case.",
+"id": "GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCasesCaseCaseContent",
+"properties": {
+"additionalCases": {
+"$ref": "GoogleCloudDialogflowCxV3beta1FulfillmentConditionalCases",
+"description": "Additional cases to be evaluated."
+},
+"message": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessage",
+"description": "Returned message."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterAction": {
+"description": "Setting a parameter value.",
+"id": "GoogleCloudDialogflowCxV3beta1FulfillmentSetParameterAction",
+"properties": {
+"parameter": {
+"description": "Display name of the parameter.",
+"type": "string"
+},
+"value": {
+"description": "The new value of the parameter. A null value clears the parameter.",
+"type": "any"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1GcsDestination": {
+"description": "Google Cloud Storage location for a Dialogflow operation that writes or exports objects (e.g. exported agent or transcripts) outside of Dialogflow.",
+"id": "GoogleCloudDialogflowCxV3beta1GcsDestination",
+"properties": {
+"uri": {
+"description": "Required. The Google Cloud Storage URI for the exported objects. A URI is of the form: `gs://bucket/object-name-or-prefix` Whether a full object name, or just a prefix, its usage depends on the Dialogflow operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportEntityTypesMetadata": {
+"description": "Metadata returned for the EntityTypes.ImportEntityTypes long running operation.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportEntityTypesMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportEntityTypesResponse": {
+"description": "The response message for EntityTypes.ImportEntityTypes.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportEntityTypesResponse",
+"properties": {
+"conflictingResources": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ImportEntityTypesResponseConflictingResources",
+"description": "Info which resources have conflicts when REPORT_CONFLICT merge_option is set in ImportEntityTypesRequest."
+},
+"entityTypes": {
+"description": "The unique identifier of the imported entity types. Format: `projects//locations//agents//entity_types/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportEntityTypesResponseConflictingResources": {
+"description": "Conflicting resources detected during the import process. Only filled when REPORT_CONFLICT is set in the request and there are conflicts in the display names.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportEntityTypesResponseConflictingResources",
+"properties": {
+"entityDisplayNames": {
+"description": "Display names of conflicting entities.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"entityTypeDisplayNames": {
+"description": "Display names of conflicting entity types.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportFlowResponse": {
+"description": "The response message for Flows.ImportFlow.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportFlowResponse",
+"properties": {
+"flow": {
+"description": "The unique identifier of the new flow. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportIntentsMetadata": {
+"description": "Metadata returned for the Intents.ImportIntents long running operation.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportIntentsMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportIntentsResponse": {
+"description": "The response message for Intents.ImportIntents.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportIntentsResponse",
+"properties": {
+"conflictingResources": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ImportIntentsResponseConflictingResources",
+"description": "Info which resources have conflicts when REPORT_CONFLICT merge_option is set in ImportIntentsRequest."
+},
+"intents": {
+"description": "The unique identifier of the imported intents. Format: `projects//locations//agents//intents/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportIntentsResponseConflictingResources": {
+"description": "Conflicting resources detected during the import process. Only filled when REPORT_CONFLICT is set in the request and there are conflicts in the display names.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportIntentsResponseConflictingResources",
+"properties": {
+"entityDisplayNames": {
+"description": "Display names of conflicting entities.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"intentDisplayNames": {
+"description": "Display names of conflicting intents.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportTestCasesMetadata": {
+"description": "Metadata returned for the TestCases.ImportTestCases long running operation.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportTestCasesMetadata",
+"properties": {
+"errors": {
+"description": "Errors for failed test cases.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestCaseError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ImportTestCasesResponse": {
+"description": "The response message for TestCases.ImportTestCases.",
+"id": "GoogleCloudDialogflowCxV3beta1ImportTestCasesResponse",
+"properties": {
+"names": {
+"description": "The unique identifiers of the new test cases. Format: `projects//locations//agents//testCases/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1InlineDestination": {
+"description": "Inline destination for a Dialogflow operation that writes or exports objects (e.g. intents) outside of Dialogflow.",
+"id": "GoogleCloudDialogflowCxV3beta1InlineDestination",
+"properties": {
+"content": {
+"description": "Output only. The uncompressed byte content for the objects. Only populated in responses.",
+"format": "byte",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1InputAudioConfig": {
+"description": "Instructs the speech recognizer on how to process the audio content.",
+"id": "GoogleCloudDialogflowCxV3beta1InputAudioConfig",
+"properties": {
+"audioEncoding": {
+"description": "Required. Audio encoding of the audio content to process.",
+"enum": [
+"AUDIO_ENCODING_UNSPECIFIED",
+"AUDIO_ENCODING_LINEAR_16",
+"AUDIO_ENCODING_FLAC",
+"AUDIO_ENCODING_MULAW",
+"AUDIO_ENCODING_AMR",
+"AUDIO_ENCODING_AMR_WB",
+"AUDIO_ENCODING_OGG_OPUS",
+"AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE",
+"AUDIO_ENCODING_ALAW"
+],
+"enumDescriptions": [
+"Not specified.",
+"Uncompressed 16-bit signed little-endian samples (Linear PCM).",
+"[`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio Codec) is the recommended encoding because it is lossless (therefore recognition is not compromised) and requires only about half the bandwidth of `LINEAR16`. `FLAC` stream encoding supports 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are supported.",
+"8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
+"Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000.",
+"Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.",
+"Opus encoded audio frames in Ogg container ([OggOpus](https://wiki.xiph.org/OggOpus)). `sample_rate_hertz` must be 16000.",
+"Although the use of lossy encodings is not recommended, if a very low bitrate encoding is required, `OGG_OPUS` is highly preferred over Speex encoding. The [Speex](https://speex.org/) encoding supported by Dialogflow API has a header byte in each block, as in MIME type `audio/x-speex-with-header-byte`. It is a variant of the RTP Speex encoding defined in [RFC 5574](https://tools.ietf.org/html/rfc5574). The stream is a sequence of blocks, one block per RTP packet. Each block starts with a byte containing the length of the block, in bytes, followed by one or more frames of Speex data, padded to an integral number of bytes (octets) as specified in RFC 5574. In other words, each RTP header is replaced with a single byte containing the block length. Only Speex wideband is supported. `sample_rate_hertz` must be 16000.",
+"8-bit samples that compand 13-bit audio samples using G.711 PCMU/a-law."
+],
+"type": "string"
+},
+"bargeInConfig": {
+"$ref": "GoogleCloudDialogflowCxV3beta1BargeInConfig",
+"description": "Configuration of barge-in behavior during the streaming of input audio."
+},
+"enableWordInfo": {
+"description": "Optional. If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult with information about the recognized speech words, e.g. start and end time offsets. If false or unspecified, Speech doesn't return any word-level information.",
+"type": "boolean"
+},
+"model": {
+"description": "Optional. Which Speech model to select for the given request. For more information, see [Speech models](https://cloud.google.com/dialogflow/cx/docs/concept/speech-models).",
+"type": "string"
+},
+"modelVariant": {
+"description": "Optional. Which variant of the Speech model to use.",
+"enum": [
+"SPEECH_MODEL_VARIANT_UNSPECIFIED",
+"USE_BEST_AVAILABLE",
+"USE_STANDARD",
+"USE_ENHANCED"
+],
+"enumDescriptions": [
+"No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.",
+"Use the best available variant of the Speech model that the caller is eligible for.",
+"Use standard model variant even if an enhanced model is available. See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) for details about enhanced models.",
+"Use an enhanced model variant: * If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant. The [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) describes which models have enhanced variants."
+],
+"type": "string"
+},
+"optOutConformerModelMigration": {
+"description": "If `true`, the request will opt out for STT conformer model migration. This field will be deprecated once force migration takes place in June 2024. Please refer to [Dialogflow CX Speech model migration](https://cloud.google.com/dialogflow/cx/docs/concept/speech-model-migration).",
+"type": "boolean"
+},
+"phraseHints": {
+"description": "Optional. A list of strings containing words and phrases that the speech recognizer should recognize with higher likelihood. See [the Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more details.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sampleRateHertz": {
+"description": "Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics) for more details.",
+"format": "int32",
+"type": "integer"
+},
+"singleUtterance": {
+"description": "Optional. If `false` (default), recognition does not cease until the client closes the stream. If `true`, the recognizer will detect a single spoken utterance in input audio. Recognition ceases when it detects the audio's voice has stopped or paused. In this case, once a detected intent is received, the client should close the stream and start a new request with a new stream as needed. Note: This setting is relevant only for streaming methods.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1Intent": {
+"description": "An intent represents a user's intent to interact with a conversational agent. You can provide information for the Dialogflow API to use to match user input to an intent by adding training phrases (i.e., examples of user input) to your intent.",
+"id": "GoogleCloudDialogflowCxV3beta1Intent",
+"properties": {
+"description": {
+"description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The human-readable name of the intent, unique within the agent.",
+"type": "string"
+},
+"isFallback": {
+"description": "Indicates whether this is a fallback intent. Currently only default fallback intent is allowed in the agent, which is added upon agent creation. Adding training phrases to fallback intent is useful in the case of requests that are mistakenly matched, since training phrases assigned to fallback intents act as negative examples that triggers no-match event.",
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The key/value metadata to label an intent. Labels can contain lowercase letters, digits and the symbols '-' and '_'. International characters are allowed, including letters from unicase alphabets. Keys must start with a letter. Keys and values can be no longer than 63 characters and no more than 128 bytes. Prefix \"sys-\" is reserved for Dialogflow defined labels. Currently allowed Dialogflow defined labels include: * sys-head * sys-contextual The above labels do not require value. \"sys-head\" means the intent is a head intent. \"sys-contextual\" means the intent is a contextual intent.",
+"type": "object"
+},
+"name": {
+"description": "The unique identifier of the intent. Required for the Intents.UpdateIntent method. Intents.CreateIntent populates the name automatically. Format: `projects//locations//agents//intents/`.",
+"type": "string"
+},
+"parameters": {
+"description": "The collection of parameters associated with the intent.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1IntentParameter"
+},
+"type": "array"
+},
+"priority": {
+"description": "The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.",
+"format": "int32",
+"type": "integer"
+},
+"trainingPhrases": {
+"description": "The collection of training phrases the agent is trained on to identify the intent.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1IntentTrainingPhrase"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1IntentInput": {
+"description": "Represents the intent to trigger programmatically rather than as a result of natural language processing.",
+"id": "GoogleCloudDialogflowCxV3beta1IntentInput",
+"properties": {
+"intent": {
+"description": "Required. The unique identifier of the intent. Format: `projects//locations//agents//intents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1IntentParameter": {
+"description": "Represents an intent parameter.",
+"id": "GoogleCloudDialogflowCxV3beta1IntentParameter",
+"properties": {
+"entityType": {
+"description": "Required. The entity type of the parameter. Format: `projects/-/locations/-/agents/-/entityTypes/` for system entity types (for example, `projects/-/locations/-/agents/-/entityTypes/sys.date`), or `projects//locations//agents//entityTypes/` for developer entity types.",
+"type": "string"
+},
+"id": {
+"description": "Required. The unique identifier of the parameter. This field is used by training phrases to annotate their parts.",
+"type": "string"
+},
+"isList": {
+"description": "Indicates whether the parameter represents a list of values.",
+"type": "boolean"
+},
+"redact": {
+"description": "Indicates whether the parameter content should be redacted in log. If redaction is enabled, the parameter content will be replaced by parameter name during logging. Note: the parameter content is subject to redaction if either parameter level redaction or entity type level redaction is enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1IntentTrainingPhrase": {
+"description": "Represents an example that the agent is trained on to identify the intent.",
+"id": "GoogleCloudDialogflowCxV3beta1IntentTrainingPhrase",
+"properties": {
+"id": {
+"description": "Output only. The unique identifier of the training phrase.",
+"readOnly": true,
+"type": "string"
+},
+"parts": {
+"description": "Required. The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `parameter_id` field is set.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePart"
+},
+"type": "array"
+},
+"repeatCount": {
+"description": "Indicates how many times this example was added to the intent.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePart": {
+"description": "Represents a part of a training phrase.",
+"id": "GoogleCloudDialogflowCxV3beta1IntentTrainingPhrasePart",
+"properties": {
+"parameterId": {
+"description": "The parameter used to annotate this part of the training phrase. This field is required for annotated parts of the training phrase.",
+"type": "string"
+},
+"text": {
+"description": "Required. The text for this part.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings": {
+"description": "The Knowledge Connector settings for this page or flow. This includes information such as the attached Knowledge Bases, and the way to execute fulfillment.",
+"id": "GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings",
+"properties": {
+"dataStoreConnections": {
+"description": "Optional. List of related data store connections.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1DataStoreConnection"
+},
+"type": "array"
+},
+"enabled": {
+"description": "Whether Knowledge Connector is enabled or not.",
+"type": "boolean"
+},
+"targetFlow": {
+"description": "The target flow to transition to. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+},
+"targetPage": {
+"description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"triggerFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Fulfillment",
+"description": "The fulfillment to be triggered. When the answers from the Knowledge Connector are selected by Dialogflow, you can utitlize the request scoped parameter `$request.knowledge.answers` (contains up to the 5 highest confidence answers) and `$request.knowledge.questions` (contains the corresponding questions) to construct the fulfillment."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1LanguageInfo": {
+"description": "Represents the language information of the request.",
+"id": "GoogleCloudDialogflowCxV3beta1LanguageInfo",
+"properties": {
+"confidenceScore": {
+"description": "The confidence score of the detected language between 0 and 1.",
+"format": "float",
+"type": "number"
+},
+"inputLanguageCode": {
+"description": "The language code specified in the original request.",
+"type": "string"
+},
+"resolvedLanguageCode": {
+"description": "The language code detected for this request based on the user conversation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1Page": {
+"description": "A Dialogflow CX conversation (session) can be described and visualized as a state machine. The states of a CX session are represented by pages. For each flow, you define many pages, where your combined pages can handle a complete conversation on the topics the flow is designed for. At any given moment, exactly one page is the current page, the current page is considered active, and the flow associated with that page is considered active. Every flow has a special start page. When a flow initially becomes active, the start page page becomes the current page. For each conversational turn, the current page will either stay the same or transition to another page. You configure each page to collect information from the end-user that is relevant for the conversational state represented by the page. For more information, see the [Page guide](https://cloud.google.com/dialogflow/cx/docs/concept/page).",
+"id": "GoogleCloudDialogflowCxV3beta1Page",
+"properties": {
+"advancedSettings": {
+"$ref": "GoogleCloudDialogflowCxV3beta1AdvancedSettings",
+"description": "Hierarchical advanced settings for this page. The settings exposed at the lower level overrides the settings exposed at the higher level."
+},
+"description": {
+"description": "The description of the page. The maximum length is 500 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The human-readable name of the page, unique within the flow.",
+"type": "string"
+},
+"entryFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Fulfillment",
+"description": "The fulfillment to call when the session is entering the page."
+},
+"eventHandlers": {
+"description": "Handlers associated with the page to handle events such as webhook errors, no match or no input.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1EventHandler"
+},
+"type": "array"
+},
+"form": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Form",
+"description": "The form associated with the page, used for collecting parameters relevant to the page."
+},
+"knowledgeConnectorSettings": {
+"$ref": "GoogleCloudDialogflowCxV3beta1KnowledgeConnectorSettings",
+"description": "Optional. Knowledge connector configuration."
+},
+"name": {
+"description": "The unique identifier of the page. Required for the Pages.UpdatePage method. Pages.CreatePage populates the name automatically. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"transitionRouteGroups": {
+"description": "Ordered list of `TransitionRouteGroups` added to the page. Transition route groups must be unique within a page. If the page links both flow-level transition route groups and agent-level transition route groups, the flow-level ones will have higher priority and will be put before the agent-level ones. * If multiple transition routes within a page scope refer to the same intent, then the precedence order is: page's transition route -> page's transition route group -> flow's transition routes. * If multiple transition route groups within a page contain the same intent, then the first group in the ordered list takes precedence. Format:`projects//locations//agents//flows//transitionRouteGroups/` or `projects//locations//agents//transitionRouteGroups/` for agent-level groups.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"transitionRoutes": {
+"description": "A list of transitions for the transition rules of this page. They route the conversation to another page in the same flow, or another flow. When we are in a certain page, the TransitionRoutes are evalauted in the following order: * TransitionRoutes defined in the page with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in flow with intent specified. * TransitionRoutes defined in the transition route groups with intent specified. * TransitionRoutes defined in the page with only condition specified. * TransitionRoutes defined in the transition route groups with only condition specified.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TransitionRoute"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1PageInfo": {
+"description": "Represents page information communicated to and from the webhook.",
+"id": "GoogleCloudDialogflowCxV3beta1PageInfo",
+"properties": {
+"currentPage": {
+"description": "Always present for WebhookRequest. Ignored for WebhookResponse. The unique identifier of the current page. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"displayName": {
+"description": "Always present for WebhookRequest. Ignored for WebhookResponse. The display name of the current page.",
+"type": "string"
+},
+"formInfo": {
+"$ref": "GoogleCloudDialogflowCxV3beta1PageInfoFormInfo",
+"description": "Optional for both WebhookRequest and WebhookResponse. Information about the form."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1PageInfoFormInfo": {
+"description": "Represents form information.",
+"id": "GoogleCloudDialogflowCxV3beta1PageInfoFormInfo",
+"properties": {
+"parameterInfo": {
+"description": "Optional for both WebhookRequest and WebhookResponse. The parameters contained in the form. Note that the webhook cannot add or remove any form parameter.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1PageInfoFormInfoParameterInfo"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1PageInfoFormInfoParameterInfo": {
+"description": "Represents parameter information.",
+"id": "GoogleCloudDialogflowCxV3beta1PageInfoFormInfoParameterInfo",
+"properties": {
+"displayName": {
+"description": "Always present for WebhookRequest. Required for WebhookResponse. The human-readable name of the parameter, unique within the form. This field cannot be modified by the webhook.",
+"type": "string"
+},
+"justCollected": {
+"description": "Optional for WebhookRequest. Ignored for WebhookResponse. Indicates if the parameter value was just collected on the last conversation turn.",
+"type": "boolean"
+},
+"required": {
+"description": "Optional for both WebhookRequest and WebhookResponse. Indicates whether the parameter is required. Optional parameters will not trigger prompts; however, they are filled if the user specifies them. Required parameters must be filled before form filling concludes.",
+"type": "boolean"
+},
+"state": {
+"description": "Always present for WebhookRequest. Required for WebhookResponse. The state of the parameter. This field can be set to INVALID by the webhook to invalidate the parameter; other values set by the webhook will be ignored.",
+"enum": [
+"PARAMETER_STATE_UNSPECIFIED",
+"EMPTY",
+"INVALID",
+"FILLED"
+],
+"enumDescriptions": [
+"Not specified. This value should be never used.",
+"Indicates that the parameter does not have a value.",
+"Indicates that the parameter value is invalid. This field can be used by the webhook to invalidate the parameter and ask the server to collect it from the user again.",
+"Indicates that the parameter has a value."
+],
+"type": "string"
+},
+"value": {
+"description": "Optional for both WebhookRequest and WebhookResponse. The value of the parameter. This field can be set by the webhook to change the parameter value.",
+"type": "any"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1QueryInput": {
+"description": "Represents the query input. It can contain one of: 1. A conversational query in the form of text. 2. An intent query that specifies which intent to trigger. 3. Natural language speech audio to be processed. 4. An event to be triggered. 5. DTMF digits to invoke an intent and fill in parameter value. 6. The results of a tool executed by the client.",
+"id": "GoogleCloudDialogflowCxV3beta1QueryInput",
+"properties": {
+"audio": {
+"$ref": "GoogleCloudDialogflowCxV3beta1AudioInput",
+"description": "The natural language speech audio to be processed."
+},
+"dtmf": {
+"$ref": "GoogleCloudDialogflowCxV3beta1DtmfInput",
+"description": "The DTMF event to be handled."
+},
+"event": {
+"$ref": "GoogleCloudDialogflowCxV3beta1EventInput",
+"description": "The event to be triggered."
+},
+"intent": {
+"$ref": "GoogleCloudDialogflowCxV3beta1IntentInput",
+"description": "The intent to be triggered."
+},
+"languageCode": {
+"description": "Required. The language of the input. See [Language Support](https://cloud.google.com/dialogflow/cx/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language.",
+"type": "string"
+},
+"text": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TextInput",
+"description": "The natural language text to be processed."
+},
+"toolCallResult": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ToolCallResult",
+"description": "The results of a tool executed by the client."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessage": {
+"description": "Represents a response message that can be returned by a conversational agent. Response messages are also used for output audio synthesis. The approach is as follows: * If at least one OutputAudioText response is present, then all OutputAudioText responses are linearly concatenated, and the result is used for output audio synthesis. * If the OutputAudioText responses are a mixture of text and SSML, then the concatenated result is treated as SSML; otherwise, the result is treated as either text or SSML as appropriate. The agent designer should ideally use either text or SSML consistently throughout the bot design. * Otherwise, all Text responses are linearly concatenated, and the result is used for output audio synthesis. This approach allows for more sophisticated user experience scenarios, where the text displayed to the user may differ from what is heard.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessage",
+"properties": {
+"channel": {
+"description": "The channel which the response is associated with. Clients can specify the channel via QueryParameters.channel, and only associated channel response will be returned.",
+"type": "string"
+},
+"conversationSuccess": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccess",
+"description": "Indicates that the conversation succeeded."
+},
+"endInteraction": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageEndInteraction",
+"description": "Output only. A signal that indicates the interaction with the Dialogflow agent has ended. This message is generated by Dialogflow only when the conversation reaches `END_SESSION` page. It is not supposed to be defined by the user. It's guaranteed that there is at most one such message in each response.",
+"readOnly": true
+},
+"knowledgeInfoCard": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCard",
+"description": "Represents info card for knowledge answers, to be better rendered in Dialogflow Messenger."
+},
+"liveAgentHandoff": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoff",
+"description": "Hands off conversation to a human agent."
+},
+"mixedAudio": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudio",
+"description": "Output only. An audio response message composed of both the synthesized Dialogflow agent responses and responses defined via play_audio. This message is generated by Dialogflow only and not supposed to be defined by the user.",
+"readOnly": true
+},
+"outputAudioText": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioText",
+"description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Returns a response containing a custom, platform-specific payload.",
+"type": "object"
+},
+"playAudio": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudio",
+"description": "Signal that the client should play an audio clip hosted at a client-specific URI. Dialogflow uses this to construct mixed_audio. However, Dialogflow itself does not try to read or process the URI in any way."
+},
+"telephonyTransferCall": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCall",
+"description": "A signal that the client should transfer the phone call connected to this agent to a third-party endpoint."
+},
+"text": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageText",
+"description": "Returns a text response."
+},
+"toolCall": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ToolCall",
+"description": "Returns the definition of a tool call that should be executed by the client."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccess": {
+"description": "Indicates that the conversation succeeded, i.e., the bot handled the issue that the customer talked to it about. Dialogflow only uses this to determine which conversations should be counted as successful and doesn't process the metadata in this message in any way. Note that Dialogflow also considers conversations that get to the conversation end page as successful even if they don't return ConversationSuccess. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates that the conversation succeeded. * In a webhook response when you determine that you handled the customer issue.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageConversationSuccess",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Custom metadata. Dialogflow doesn't impose any structure on this.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageEndInteraction": {
+"description": "Indicates that interaction with the Dialogflow agent has ended. This message is generated by Dialogflow only and not supposed to be defined by the user.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageEndInteraction",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCard": {
+"description": "Represents info card response. If the response contains generative knowledge prediction, Dialogflow will return a payload with Infobot Messenger compatible info card. Otherwise, the info card response is skipped.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageKnowledgeInfoCard",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoff": {
+"description": "Indicates that the conversation should be handed off to a live agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example: * In the entry_fulfillment of a Page if entering the page indicates something went extremely wrong in the conversation. * In a webhook response when you determine that the customer issue can only be handled by a human.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageLiveAgentHandoff",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Custom metadata for your handoff procedure. Dialogflow doesn't impose any structure on this.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudio": {
+"description": "Represents an audio message that is composed of both segments synthesized from the Dialogflow agent prompts and ones hosted externally at the specified URIs. The external URIs are specified via play_audio. This message is generated by Dialogflow only and not supposed to be defined by the user.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudio",
+"properties": {
+"segments": {
+"description": "Segments this audio response is composed of.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioSegment"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioSegment": {
+"description": "Represents one segment of audio.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageMixedAudioSegment",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Output only. Whether the playback of this segment can be interrupted by the end user's speech and the client should then start the next Dialogflow request.",
+"readOnly": true,
+"type": "boolean"
+},
+"audio": {
+"description": "Raw audio synthesized from the Dialogflow agent's response using the output config specified in the request.",
+"format": "byte",
+"type": "string"
+},
+"uri": {
+"description": "Client-specific URI that points to an audio clip accessible to the client. Dialogflow does not impose any validation on it.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioText": {
+"description": "A text or ssml response that is preferentially used for TTS output audio synthesis, as described in the comment on the ResponseMessage message.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageOutputAudioText",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Output only. Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.",
+"readOnly": true,
+"type": "boolean"
+},
+"ssml": {
+"description": "The SSML text to be synthesized. For more information, see [SSML](/speech/text-to-speech/docs/ssml).",
+"type": "string"
+},
+"text": {
+"description": "The raw text to be synthesized.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudio": {
+"description": "Specifies an audio clip to be played by the client as part of the response.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessagePlayAudio",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Output only. Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.",
+"readOnly": true,
+"type": "boolean"
+},
+"audioUri": {
+"description": "Required. URI of the audio clip. Dialogflow does not impose any validation on this value. It is specific to the client that reads it.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCall": {
+"description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageTelephonyTransferCall",
+"properties": {
+"phoneNumber": {
+"description": "Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ResponseMessageText": {
+"description": "The text response message.",
+"id": "GoogleCloudDialogflowCxV3beta1ResponseMessageText",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Output only. Whether the playback of this message can be interrupted by the end user's speech and the client can then starts the next Dialogflow request.",
+"readOnly": true,
+"type": "boolean"
+},
+"text": {
+"description": "Required. A collection of text response variants. If multiple variants are defined, only one text response variant is returned at runtime.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1RunContinuousTestMetadata": {
+"description": "Metadata returned for the Environments.RunContinuousTest long running operation.",
+"id": "GoogleCloudDialogflowCxV3beta1RunContinuousTestMetadata",
+"properties": {
+"errors": {
+"description": "The test errors.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1RunContinuousTestResponse": {
+"description": "The response message for Environments.RunContinuousTest.",
+"id": "GoogleCloudDialogflowCxV3beta1RunContinuousTestResponse",
+"properties": {
+"continuousTestResult": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ContinuousTestResult",
+"description": "The result for a continuous test run."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1RunTestCaseMetadata": {
+"description": "Metadata returned for the TestCases.RunTestCase long running operation. This message currently has no fields.",
+"id": "GoogleCloudDialogflowCxV3beta1RunTestCaseMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1RunTestCaseResponse": {
+"description": "The response message for TestCases.RunTestCase.",
+"id": "GoogleCloudDialogflowCxV3beta1RunTestCaseResponse",
+"properties": {
+"result": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestCaseResult",
+"description": "The result."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1SessionInfo": {
+"description": "Represents session information communicated to and from the webhook.",
+"id": "GoogleCloudDialogflowCxV3beta1SessionInfo",
+"properties": {
+"parameters": {
+"additionalProperties": {
+"type": "any"
+},
+"description": "Optional for WebhookRequest. Optional for WebhookResponse. All parameters collected from forms and intents during the session. Parameters can be created, updated, or removed by the webhook. To remove a parameter from the session, the webhook should explicitly set the parameter value to null in WebhookResponse. The map is keyed by parameters' display names.",
+"type": "object"
+},
+"session": {
+"description": "Always present for WebhookRequest. Ignored for WebhookResponse. The unique identifier of the session. This field can be used by the webhook to identify a session. Format: `projects//locations//agents//sessions/` or `projects//locations//agents//environments//sessions/` if environment is specified.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TestCase": {
+"description": "Represents a test case.",
+"id": "GoogleCloudDialogflowCxV3beta1TestCase",
+"properties": {
+"creationTime": {
+"description": "Output only. When the test was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Required. The human-readable name of the test case, unique within the agent. Limit of 200 characters.",
+"type": "string"
+},
+"lastTestResult": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestCaseResult",
+"description": "The latest test result."
+},
+"name": {
+"description": "The unique identifier of the test case. TestCases.CreateTestCase will populate the name automatically. Otherwise use format: `projects//locations//agents//testCases/`.",
+"type": "string"
+},
+"notes": {
+"description": "Additional freeform notes about the test case. Limit of 400 characters.",
+"type": "string"
+},
+"tags": {
+"description": "Tags are short descriptions that users may apply to test cases for organizational and filtering purposes. Each tag should start with \"#\" and has a limit of 30 characters.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"testCaseConversationTurns": {
+"description": "The conversation turns uttered when the test case was created, in chronological order. These include the canonical set of agent utterances that should occur when the agent is working properly.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ConversationTurn"
+},
+"type": "array"
+},
+"testConfig": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestConfig",
+"description": "Config for the test case."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TestCaseError": {
+"description": "Error info for importing a test.",
+"id": "GoogleCloudDialogflowCxV3beta1TestCaseError",
+"properties": {
+"status": {
+"$ref": "GoogleRpcStatus",
+"description": "The status associated with the test case."
+},
+"testCase": {
+"$ref": "GoogleCloudDialogflowCxV3beta1TestCase",
+"description": "The test case."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TestCaseResult": {
+"description": "Represents a result from running a test case in an agent environment.",
+"id": "GoogleCloudDialogflowCxV3beta1TestCaseResult",
+"properties": {
+"conversationTurns": {
+"description": "The conversation turns uttered during the test case replay in chronological order.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ConversationTurn"
+},
+"type": "array"
+},
+"environment": {
+"description": "Environment where the test was run. If not set, it indicates the draft environment.",
+"type": "string"
+},
+"name": {
+"description": "The resource name for the test case result. Format: `projects//locations//agents//testCases//results/`.",
+"type": "string"
+},
+"testResult": {
+"description": "Whether the test case passed in the agent environment.",
+"enum": [
+"TEST_RESULT_UNSPECIFIED",
+"PASSED",
+"FAILED"
+],
+"enumDescriptions": [
+"Not specified. Should never be used.",
+"The test passed.",
+"The test did not pass."
+],
+"type": "string"
+},
+"testTime": {
+"description": "The time that the test was run.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TestConfig": {
+"description": "Represents configurations for a test case.",
+"id": "GoogleCloudDialogflowCxV3beta1TestConfig",
+"properties": {
+"flow": {
+"description": "Flow name to start the test case with. Format: `projects//locations//agents//flows/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If neither is set, the test case will start with start page on the default start flow.",
+"type": "string"
+},
+"page": {
+"description": "The page to start the test case with. Format: `projects//locations//agents//flows//pages/`. Only one of `flow` and `page` should be set to indicate the starting point of the test case. If neither is set, the test case will start with start page on the default start flow.",
+"type": "string"
+},
+"trackingParameters": {
+"description": "Session parameters to be compared when calculating differences.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TestError": {
+"description": "Error info for running a test.",
+"id": "GoogleCloudDialogflowCxV3beta1TestError",
+"properties": {
+"status": {
+"$ref": "GoogleRpcStatus",
+"description": "The status associated with the test."
+},
+"testCase": {
+"description": "The test case resource name.",
+"type": "string"
+},
+"testTime": {
+"description": "The timestamp when the test was completed.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TestRunDifference": {
+"description": "The description of differences between original and replayed agent output.",
+"id": "GoogleCloudDialogflowCxV3beta1TestRunDifference",
+"properties": {
+"description": {
+"description": "A human readable description of the diff, showing the actual output vs expected output.",
+"type": "string"
+},
+"type": {
+"description": "The type of diff.",
+"enum": [
+"DIFF_TYPE_UNSPECIFIED",
+"INTENT",
+"PAGE",
+"PARAMETERS",
+"UTTERANCE",
+"FLOW"
+],
+"enumDescriptions": [
+"Should never be used.",
+"The intent.",
+"The page.",
+"The parameters.",
+"The message utterance.",
+"The flow."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TextInput": {
+"description": "Represents the natural language text to be processed.",
+"id": "GoogleCloudDialogflowCxV3beta1TextInput",
+"properties": {
+"text": {
+"description": "Required. The UTF-8 encoded natural language text to be processed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ToolCall": {
+"description": "Represents a call of a specific tool's action with the specified inputs.",
+"id": "GoogleCloudDialogflowCxV3beta1ToolCall",
+"properties": {
+"action": {
+"description": "Required. The name of the tool's action associated with this call.",
+"type": "string"
+},
+"inputParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. The action's input parameters.",
+"type": "object"
+},
+"tool": {
+"description": "Required. The tool associated with this call. Format: `projects//locations//agents//tools/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ToolCallResult": {
+"description": "The result of calling a tool's action that has been executed by the client.",
+"id": "GoogleCloudDialogflowCxV3beta1ToolCallResult",
+"properties": {
+"action": {
+"description": "Required. The name of the tool's action associated with this call.",
+"type": "string"
+},
+"error": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ToolCallResultError",
+"description": "The tool call's error."
+},
+"outputParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The tool call's output parameters.",
+"type": "object"
+},
+"tool": {
+"description": "Required. The tool associated with this call. Format: `projects//locations//agents//tools/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1ToolCallResultError": {
+"description": "An error produced by the tool call.",
+"id": "GoogleCloudDialogflowCxV3beta1ToolCallResultError",
+"properties": {
+"message": {
+"description": "Optional. The error message of the function.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TransitionRoute": {
+"description": "A transition route specifies a intent that can be matched and/or a data condition that can be evaluated during a session. When a specified transition is matched, the following actions are taken in order: * If there is a `trigger_fulfillment` associated with the transition, it will be called. * If there is a `target_page` associated with the transition, the session will transition into the specified page. * If there is a `target_flow` associated with the transition, the session will transition into the specified flow.",
+"id": "GoogleCloudDialogflowCxV3beta1TransitionRoute",
+"properties": {
+"condition": {
+"description": "The condition to evaluate against form parameters or session parameters. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition). At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled.",
+"type": "string"
+},
+"description": {
+"description": "Optional. The description of the transition route. The maximum length is 500 characters.",
+"type": "string"
+},
+"intent": {
+"description": "The unique identifier of an Intent. Format: `projects//locations//agents//intents/`. Indicates that the transition can only happen when the given intent is matched. At least one of `intent` or `condition` must be specified. When both `intent` and `condition` are specified, the transition can only happen when both are fulfilled.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The unique identifier of this transition route.",
+"readOnly": true,
+"type": "string"
+},
+"targetFlow": {
+"description": "The target flow to transition to. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+},
+"targetPage": {
+"description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"triggerFulfillment": {
+"$ref": "GoogleCloudDialogflowCxV3beta1Fulfillment",
+"description": "The fulfillment to call when the condition is satisfied. At least one of `trigger_fulfillment` and `target` must be specified. When both are defined, `trigger_fulfillment` is executed first."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1TurnSignals": {
+"description": "Collection of all signals that were extracted for a single turn of the conversation.",
+"id": "GoogleCloudDialogflowCxV3beta1TurnSignals",
+"properties": {
+"agentEscalated": {
+"description": "Whether agent responded with LiveAgentHandoff fulfillment.",
+"type": "boolean"
+},
+"dtmfUsed": {
+"description": "Whether user was using DTMF input.",
+"type": "boolean"
+},
+"failureReasons": {
+"description": "Failure reasons of the turn.",
+"items": {
+"enum": [
+"FAILURE_REASON_UNSPECIFIED",
+"FAILED_INTENT",
+"FAILED_WEBHOOK"
+],
+"enumDescriptions": [
+"Failure reason is not assigned.",
+"Whether NLU failed to recognize user intent.",
+"Whether webhook failed during the turn."
+],
+"type": "string"
+},
+"type": "array"
+},
+"noMatch": {
+"description": "Whether NLU predicted NO_MATCH.",
+"type": "boolean"
+},
+"noUserInput": {
+"description": "Whether user provided no input.",
+"type": "boolean"
+},
+"reachedEndPage": {
+"description": "Whether turn resulted in End Session page.",
+"type": "boolean"
+},
+"sentimentMagnitude": {
+"description": "Sentiment magnitude of the user utterance if [sentiment](https://cloud.google.com/dialogflow/cx/docs/concept/sentiment) was enabled.",
+"format": "float",
+"type": "number"
+},
+"sentimentScore": {
+"description": "Sentiment score of the user utterance if [sentiment](https://cloud.google.com/dialogflow/cx/docs/concept/sentiment) was enabled.",
+"format": "float",
+"type": "number"
+},
+"userEscalated": {
+"description": "Whether user was specifically asking for a live agent.",
+"type": "boolean"
+},
+"webhookStatuses": {
+"description": "Human-readable statuses of the webhooks triggered during this turn.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1Webhook": {
+"description": "Webhooks host the developer's business logic. During a session, webhooks allow the developer to use the data extracted by Dialogflow's natural language processing to generate dynamic responses, validate collected data, or trigger actions on the backend.",
+"id": "GoogleCloudDialogflowCxV3beta1Webhook",
+"properties": {
+"disabled": {
+"description": "Indicates whether the webhook is disabled.",
+"type": "boolean"
+},
+"displayName": {
+"description": "Required. The human-readable name of the webhook, unique within the agent.",
+"type": "string"
+},
+"genericWebService": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookGenericWebService",
+"description": "Configuration for a generic web service."
+},
+"name": {
+"description": "The unique identifier of the webhook. Required for the Webhooks.UpdateWebhook method. Webhooks.CreateWebhook populates the name automatically. Format: `projects//locations//agents//webhooks/`.",
+"type": "string"
+},
+"serviceDirectory": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfig",
+"description": "Configuration for a [Service Directory](https://cloud.google.com/service-directory) service."
+},
+"timeout": {
+"description": "Webhook execution timeout. Execution is considered failed if Dialogflow doesn't receive a response from webhook at the end of the timeout period. Defaults to 5 seconds, maximum allowed timeout is 30 seconds.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookGenericWebService": {
+"description": "Represents configuration for a generic web service.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookGenericWebService",
+"properties": {
+"allowedCaCerts": {
+"description": "Optional. Specifies a list of allowed custom CA certificates (in DER format) for HTTPS verification. This overrides the default SSL trust store. If this is empty or unspecified, Dialogflow will use Google's default trust store to verify certificates. N.B. Make sure the HTTPS server certificates are signed with \"subject alt name\". For instance a certificate can be self-signed using the following command, ``` openssl x509 -req -days 200 -in example.com.csr \\ -signkey example.com.key \\ -out example.com.crt \\ -extfile <(printf \"\\nsubjectAltName='DNS:www.example.com'\") ```",
+"items": {
+"format": "byte",
+"type": "string"
+},
+"type": "array"
+},
+"httpMethod": {
+"description": "Optional. HTTP method for the flexible webhook calls. Standard webhook always uses POST.",
+"enum": [
+"HTTP_METHOD_UNSPECIFIED",
+"POST",
+"GET",
+"HEAD",
+"PUT",
+"DELETE",
+"PATCH",
+"OPTIONS"
+],
+"enumDescriptions": [
+"HTTP method not specified.",
+"HTTP POST Method.",
+"HTTP GET Method.",
+"HTTP HEAD Method.",
+"HTTP PUT Method.",
+"HTTP DELETE Method.",
+"HTTP PATCH Method.",
+"HTTP OPTIONS Method."
+],
+"type": "string"
+},
+"oauthConfig": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceOAuthConfig",
+"description": "Optional. The OAuth configuration of the webhook. If specified, Dialogflow will initiate the OAuth client credential flow to exchange an access token from the 3rd party platform and put it in the auth header."
+},
+"parameterMapping": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Maps the values extracted from specific fields of the flexible webhook response into session parameters. - Key: session parameter name - Value: field path in the webhook response",
+"type": "object"
+},
+"password": {
+"deprecated": true,
+"description": "The password for HTTP Basic authentication.",
+"type": "string"
+},
+"requestBody": {
+"description": "Optional. Defines a custom JSON object as request body to send to flexible webhook.",
+"type": "string"
+},
+"requestHeaders": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The HTTP request headers to send together with webhook requests.",
+"type": "object"
+},
+"serviceAgentAuth": {
+"description": "Optional. Indicate the auth token type generated from the [Diglogflow service agent](https://cloud.google.com/iam/docs/service-agents#dialogflow-service-agent). The generated token is sent in the Authorization header.",
+"enum": [
+"SERVICE_AGENT_AUTH_UNSPECIFIED",
+"NONE",
+"ID_TOKEN",
+"ACCESS_TOKEN"
+],
+"enumDescriptions": [
+"Service agent auth type unspecified. Default to ID_TOKEN.",
+"No token used.",
+"Use [ID token](https://cloud.google.com/docs/authentication/token-types#id) generated from service agent. This can be used to access Cloud Function and Cloud Run after you grant Invoker role to `service-@gcp-sa-dialogflow.iam.gserviceaccount.com`.",
+"Use [access token](https://cloud.google.com/docs/authentication/token-types#access) generated from service agent. This can be used to access other Google Cloud APIs after you grant required roles to `service-@gcp-sa-dialogflow.iam.gserviceaccount.com`."
+],
+"type": "string"
+},
+"uri": {
+"description": "Required. The webhook URI for receiving POST requests. It must use https protocol.",
+"type": "string"
+},
+"username": {
+"deprecated": true,
+"description": "The user name for HTTP Basic authentication.",
+"type": "string"
+},
+"webhookType": {
+"description": "Optional. Type of the webhook.",
+"enum": [
+"WEBHOOK_TYPE_UNSPECIFIED",
+"STANDARD",
+"FLEXIBLE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"Represents a standard webhook.",
+"Represents a flexible webhook."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceOAuthConfig": {
+"description": "Represents configuration of OAuth client credential flow for 3rd party API authentication.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookGenericWebServiceOAuthConfig",
+"properties": {
+"clientId": {
+"description": "Required. The client ID provided by the 3rd party platform.",
+"type": "string"
+},
+"clientSecret": {
+"description": "Required. The client secret provided by the 3rd party platform.",
+"type": "string"
+},
+"scopes": {
+"description": "Optional. The OAuth scopes to grant.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"tokenEndpoint": {
+"description": "Required. The token endpoint provided by the 3rd party platform to exchange an access token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookRequest": {
+"description": "The request message for a webhook call. The request is sent as a JSON object and the field names will be presented in camel cases. You may see undocumented fields in an actual request. These fields are used internally by Dialogflow and should be ignored.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookRequest",
+"properties": {
+"detectIntentResponseId": {
+"description": "Always present. The unique identifier of the DetectIntentResponse that will be returned to the API caller.",
+"type": "string"
+},
+"dtmfDigits": {
+"description": "If DTMF was provided as input, this field will contain the DTMF digits.",
+"type": "string"
+},
+"fulfillmentInfo": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookRequestFulfillmentInfo",
+"description": "Always present. Information about the fulfillment that triggered this webhook call."
+},
+"intentInfo": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfo",
+"description": "Information about the last matched intent."
+},
+"languageCode": {
+"description": "The language code specified in the original request.",
+"type": "string"
+},
+"languageInfo": {
+"$ref": "GoogleCloudDialogflowCxV3beta1LanguageInfo",
+"description": "Information about the language of the request."
+},
+"messages": {
+"description": "The list of rich message responses to present to the user. Webhook can choose to append or replace this list in WebhookResponse.fulfillment_response;",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessage"
+},
+"type": "array"
+},
+"pageInfo": {
+"$ref": "GoogleCloudDialogflowCxV3beta1PageInfo",
+"description": "Information about page status."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Custom data set in QueryParameters.payload.",
+"type": "object"
+},
+"sentimentAnalysisResult": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookRequestSentimentAnalysisResult",
+"description": "The sentiment analysis result of the current user request. The field is filled when sentiment analysis is configured to be enabled for the request."
+},
+"sessionInfo": {
+"$ref": "GoogleCloudDialogflowCxV3beta1SessionInfo",
+"description": "Information about session status."
+},
+"text": {
+"description": "If natural language text was provided as input, this field will contain a copy of the text.",
+"type": "string"
+},
+"transcript": {
+"description": "If natural language speech audio was provided as input, this field will contain the transcript for the audio.",
+"type": "string"
+},
+"triggerEvent": {
+"description": "If an event was provided as input, this field will contain the name of the event.",
+"type": "string"
+},
+"triggerIntent": {
+"description": "If an intent was provided as input, this field will contain a copy of the intent identifier. Format: `projects//locations//agents//intents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookRequestFulfillmentInfo": {
+"description": "Represents fulfillment information communicated to the webhook.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookRequestFulfillmentInfo",
+"properties": {
+"tag": {
+"description": "Always present. The value of the Fulfillment.tag field will be populated in this field by Dialogflow when the associated webhook is called. The tag is typically used by the webhook service to identify which fulfillment is being called, but it could be used for other purposes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfo": {
+"description": "Represents intent information communicated to the webhook.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfo",
+"properties": {
+"confidence": {
+"description": "The confidence of the matched intent. Values range from 0.0 (completely uncertain) to 1.0 (completely certain).",
+"format": "float",
+"type": "number"
+},
+"displayName": {
+"description": "Always present. The display name of the last matched intent.",
+"type": "string"
+},
+"lastMatchedIntent": {
+"description": "Always present. The unique identifier of the last matched intent. Format: `projects//locations//agents//intents/`.",
+"type": "string"
+},
+"parameters": {
+"additionalProperties": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfoIntentParameterValue"
+},
+"description": "Parameters identified as a result of intent matching. This is a map of the name of the identified parameter to the value of the parameter identified from the user's utterance. All parameters defined in the matched intent that are identified will be surfaced here.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfoIntentParameterValue": {
+"description": "Represents a value for an intent parameter.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookRequestIntentInfoIntentParameterValue",
+"properties": {
+"originalValue": {
+"description": "Always present. Original text value extracted from user utterance.",
+"type": "string"
+},
+"resolvedValue": {
+"description": "Always present. Structured value for the parameter extracted from user utterance.",
+"type": "any"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookRequestSentimentAnalysisResult": {
+"description": "Represents the result of sentiment analysis.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookRequestSentimentAnalysisResult",
+"properties": {
+"magnitude": {
+"description": "A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment, regardless of score (positive or negative).",
+"format": "float",
+"type": "number"
+},
+"score": {
+"description": "Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookResponse": {
+"description": "The response message for a webhook call.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookResponse",
+"properties": {
+"fulfillmentResponse": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookResponseFulfillmentResponse",
+"description": "The fulfillment response to send to the user. This field can be omitted by the webhook if it does not intend to send any response to the user."
+},
+"pageInfo": {
+"$ref": "GoogleCloudDialogflowCxV3beta1PageInfo",
+"description": "Information about page status. This field can be omitted by the webhook if it does not intend to modify page status."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Value to append directly to QueryResult.webhook_payloads.",
+"type": "object"
+},
+"sessionInfo": {
+"$ref": "GoogleCloudDialogflowCxV3beta1SessionInfo",
+"description": "Information about session status. This field can be omitted by the webhook if it does not intend to modify session status."
+},
+"targetFlow": {
+"description": "The target flow to transition to. Format: `projects//locations//agents//flows/`.",
+"type": "string"
+},
+"targetPage": {
+"description": "The target page to transition to. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookResponseFulfillmentResponse": {
+"description": "Represents a fulfillment response to the user.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookResponseFulfillmentResponse",
+"properties": {
+"mergeBehavior": {
+"description": "Merge behavior for `messages`.",
+"enum": [
+"MERGE_BEHAVIOR_UNSPECIFIED",
+"APPEND",
+"REPLACE"
+],
+"enumDescriptions": [
+"Not specified. `APPEND` will be used.",
+"`messages` will be appended to the list of messages waiting to be sent to the user.",
+"`messages` will replace the list of messages waiting to be sent to the user."
+],
+"type": "string"
+},
+"messages": {
+"description": "The list of rich message responses to present to the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowCxV3beta1ResponseMessage"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfig": {
+"description": "Represents configuration for a [Service Directory](https://cloud.google.com/service-directory) service.",
+"id": "GoogleCloudDialogflowCxV3beta1WebhookServiceDirectoryConfig",
+"properties": {
+"genericWebService": {
+"$ref": "GoogleCloudDialogflowCxV3beta1WebhookGenericWebService",
+"description": "Generic Service configuration of this webhook."
+},
+"service": {
+"description": "Required. The name of [Service Directory](https://cloud.google.com/service-directory) service. Format: `projects//locations//namespaces//services/`. `Location ID` of the service directory must be the same as the location of the agent.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2AnnotatedMessagePart": {
+"description": "Represents a part of a message possibly annotated with an entity. The part can be an entity or purely a part of the message between two entities or message start/end.",
+"id": "GoogleCloudDialogflowV2AnnotatedMessagePart",
+"properties": {
+"entityType": {
+"description": "The [Dialogflow system entity type](https://cloud.google.com/dialogflow/docs/reference/system-entities) of this message part. If this is empty, Dialogflow could not annotate the phrase part with a system entity.",
+"type": "string"
+},
+"formattedValue": {
+"description": "The [Dialogflow system entity formatted value ](https://cloud.google.com/dialogflow/docs/reference/system-entities) of this message part. For example for a system entity of type `@sys.unit-currency`, this may contain: { \"amount\": 5, \"currency\": \"USD\" } ",
+"type": "any"
+},
+"text": {
+"description": "A part of a message possibly annotated with an entity.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ArticleAnswer": {
+"description": "Represents article answer.",
+"id": "GoogleCloudDialogflowV2ArticleAnswer",
+"properties": {
+"answerRecord": {
+"description": "The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"confidence": {
+"description": "Article match confidence. The system's confidence score that this article is a good match for this conversation, as a value from 0.0 (completely uncertain) to 1.0 (completely certain).",
+"format": "float",
+"type": "number"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map that contains metadata about the answer and the document from which it originates.",
+"type": "object"
+},
+"snippets": {
+"description": "Article snippets.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"title": {
+"description": "The article title.",
+"type": "string"
+},
+"uri": {
+"description": "The article URI.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ArticleSuggestionModelMetadata": {
+"description": "Metadata for article suggestion models.",
+"id": "GoogleCloudDialogflowV2ArticleSuggestionModelMetadata",
+"properties": {
+"trainingModelType": {
+"description": "Optional. Type of the article suggestion model. If not provided, model_type is used.",
+"enum": [
+"MODEL_TYPE_UNSPECIFIED",
+"SMART_REPLY_DUAL_ENCODER_MODEL",
+"SMART_REPLY_BERT_MODEL"
+],
+"enumDescriptions": [
+"ModelType unspecified.",
+"ModelType smart reply dual encoder model.",
+"ModelType smart reply bert model."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2BatchUpdateEntityTypesResponse": {
+"description": "The response message for EntityTypes.BatchUpdateEntityTypes.",
+"id": "GoogleCloudDialogflowV2BatchUpdateEntityTypesResponse",
+"properties": {
+"entityTypes": {
+"description": "The collection of updated or created entity types.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2EntityType"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2BatchUpdateIntentsResponse": {
+"description": "The response message for Intents.BatchUpdateIntents.",
+"id": "GoogleCloudDialogflowV2BatchUpdateIntentsResponse",
+"properties": {
+"intents": {
+"description": "The collection of updated or created intents.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2Intent"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ClearSuggestionFeatureConfigOperationMetadata": {
+"description": "Metadata for a ConversationProfiles.ClearSuggestionFeatureConfig operation.",
+"id": "GoogleCloudDialogflowV2ClearSuggestionFeatureConfigOperationMetadata",
+"properties": {
+"conversationProfile": {
+"description": "The resource name of the conversation profile. Format: `projects//locations//conversationProfiles/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp whe the request was created. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+},
+"participantRole": {
+"description": "Required. The participant role to remove the suggestion feature config. Only HUMAN_AGENT or END_USER can be used.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"type": "string"
+},
+"suggestionFeatureType": {
+"description": "Required. The type of the suggestion feature to remove.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"ARTICLE_SUGGESTION",
+"FAQ",
+"SMART_REPLY",
+"KNOWLEDGE_SEARCH",
+"KNOWLEDGE_ASSIST"
+],
+"enumDescriptions": [
+"Unspecified feature type.",
+"Run article suggestion model for chat.",
+"Run FAQ model for chat.",
+"Run smart reply model for chat.",
+"Run knowledge search with text input from agent or text generated query.",
+"Run knowledge assist with automatic query generation."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2Context": {
+"description": "Dialogflow contexts are similar to natural language context. If a person says to you \"they are orange\", you need context in order to understand what \"they\" is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).",
+"id": "GoogleCloudDialogflowV2Context",
+"properties": {
+"lifespanCount": {
+"description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.",
+"format": "int32",
+"type": "integer"
+},
+"name": {
+"description": "Required. The unique identifier of the context. Format: `projects//agent/sessions//contexts/`, or `projects//agent/environments//users//sessions//contexts/`. The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`",
+"type": "string"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ConversationEvent": {
+"description": "Represents a notification sent to Pub/Sub subscribers for conversation lifecycle events.",
+"id": "GoogleCloudDialogflowV2ConversationEvent",
+"properties": {
+"conversation": {
+"description": "The unique identifier of the conversation this notification refers to. Format: `projects//conversations/`.",
+"type": "string"
+},
+"errorStatus": {
+"$ref": "GoogleRpcStatus",
+"description": "More detailed information about an error. Only set for type UNRECOVERABLE_ERROR_IN_PHONE_CALL."
+},
+"newMessagePayload": {
+"$ref": "GoogleCloudDialogflowV2Message",
+"description": "Payload of NEW_MESSAGE event."
+},
+"newRecognitionResultPayload": {
+"$ref": "GoogleCloudDialogflowV2StreamingRecognitionResult",
+"description": "Payload of NEW_RECOGNITION_RESULT event."
+},
+"type": {
+"description": "The type of the event that this notification refers to.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"CONVERSATION_STARTED",
+"CONVERSATION_FINISHED",
+"HUMAN_INTERVENTION_NEEDED",
+"NEW_MESSAGE",
+"NEW_RECOGNITION_RESULT",
+"UNRECOVERABLE_ERROR"
+],
+"enumDescriptions": [
+"Type not set.",
+"A new conversation has been opened. This is fired when a telephone call is answered, or a conversation is created via the API.",
+"An existing conversation has closed. This is fired when a telephone call is terminated, or a conversation is closed via the API.",
+"An existing conversation has received notification from Dialogflow that human intervention is required.",
+"An existing conversation has received a new message, either from API or telephony. It is configured in ConversationProfile.new_message_event_notification_config",
+"An existing conversation has received a new speech recognition result. This is mainly for delivering intermediate transcripts. The notification is configured in ConversationProfile.new_recognition_event_notification_config.",
+"Unrecoverable error during a telephone call. In general non-recoverable errors only occur if something was misconfigured in the ConversationProfile corresponding to the call. After a non-recoverable error, Dialogflow may stop responding. We don't fire this event: * in an API call because we can directly return the error, or, * when we can recover from an error."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ConversationModel": {
+"description": "Represents a conversation model.",
+"id": "GoogleCloudDialogflowV2ConversationModel",
+"properties": {
+"articleSuggestionModelMetadata": {
+"$ref": "GoogleCloudDialogflowV2ArticleSuggestionModelMetadata",
+"description": "Metadata for article suggestion models."
+},
+"createTime": {
+"description": "Output only. Creation time of this model.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"datasets": {
+"description": "Required. Datasets used to create model.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2InputDataset"
+},
+"type": "array"
+},
+"displayName": {
+"description": "Required. The display name of the model. At most 64 bytes long.",
+"type": "string"
+},
+"languageCode": {
+"description": "Language code for the conversation model. If not specified, the language is en-US. Language at ConversationModel should be set for all non en-us languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\".",
+"type": "string"
+},
+"name": {
+"description": "ConversationModel resource name. Format: `projects//conversationModels/`",
+"type": "string"
+},
+"satisfiesPzi": {
+"description": "Output only. A read only boolean field reflecting Zone Isolation status of the model.",
+"readOnly": true,
+"type": "boolean"
+},
+"satisfiesPzs": {
+"description": "Output only. A read only boolean field reflecting Zone Separation status of the model.",
+"readOnly": true,
+"type": "boolean"
+},
+"smartReplyModelMetadata": {
+"$ref": "GoogleCloudDialogflowV2SmartReplyModelMetadata",
+"description": "Metadata for smart reply models."
+},
+"state": {
+"description": "Output only. State of the model. A model can only serve prediction requests after it gets deployed.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"UNDEPLOYED",
+"DEPLOYING",
+"DEPLOYED",
+"UNDEPLOYING",
+"DELETING",
+"FAILED",
+"PENDING"
+],
+"enumDescriptions": [
+"Should not be used, an un-set enum has this value by default.",
+"Model being created.",
+"Model is not deployed but ready to deploy.",
+"Model is deploying.",
+"Model is deployed and ready to use.",
+"Model is undeploying.",
+"Model is deleting.",
+"Model is in error state. Not ready to deploy and use.",
+"Model is being created but the training has not started, The model may remain in this state until there is enough capacity to start training."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2CreateConversationDatasetOperationMetadata": {
+"description": "Metadata for CreateConversationDataset.",
+"id": "GoogleCloudDialogflowV2CreateConversationDatasetOperationMetadata",
+"properties": {
+"conversationDataset": {
+"description": "The resource name of the conversation dataset that will be created. Format: `projects//locations//conversationDatasets/`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2CreateConversationModelEvaluationOperationMetadata": {
+"description": "Metadata for a ConversationModels.CreateConversationModelEvaluation operation.",
+"id": "GoogleCloudDialogflowV2CreateConversationModelEvaluationOperationMetadata",
+"properties": {
+"conversationModel": {
+"description": "The resource name of the conversation model. Format: `projects//locations//conversationModels/`",
+"type": "string"
+},
+"conversationModelEvaluation": {
+"description": "The resource name of the conversation model. Format: `projects//locations//conversationModels//evaluations/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp when the request to create conversation model was submitted. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "State of CreateConversationModel operation.",
+"enum": [
+"STATE_UNSPECIFIED",
+"INITIALIZING",
+"RUNNING",
+"CANCELLED",
+"SUCCEEDED",
+"FAILED"
+],
+"enumDescriptions": [
+"Operation status not specified.",
+"The operation is being prepared.",
+"The operation is running.",
+"The operation is cancelled.",
+"The operation has succeeded.",
+"The operation has failed."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2CreateConversationModelOperationMetadata": {
+"description": "Metadata for a ConversationModels.CreateConversationModel operation.",
+"id": "GoogleCloudDialogflowV2CreateConversationModelOperationMetadata",
+"properties": {
+"conversationModel": {
+"description": "The resource name of the conversation model. Format: `projects//conversationModels/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp when the request to create conversation model is submitted. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "State of CreateConversationModel operation.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"SUCCEEDED",
+"FAILED",
+"CANCELLED",
+"CANCELLING",
+"TRAINING"
+],
+"enumDescriptions": [
+"Invalid.",
+"Request is submitted, but training has not started yet. The model may remain in this state until there is enough capacity to start training.",
+"The training has succeeded.",
+"The training has succeeded.",
+"The training has been cancelled.",
+"The training is in cancelling state.",
+"Custom model is training."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2DeleteConversationDatasetOperationMetadata": {
+"description": "Metadata for DeleteConversationDataset.",
+"id": "GoogleCloudDialogflowV2DeleteConversationDatasetOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowV2DeleteConversationModelOperationMetadata": {
+"description": "Metadata for a ConversationModels.DeleteConversationModel operation.",
+"id": "GoogleCloudDialogflowV2DeleteConversationModelOperationMetadata",
+"properties": {
+"conversationModel": {
+"description": "The resource name of the conversation model. Format: `projects//conversationModels/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp when delete conversation model request was created. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2DeployConversationModelOperationMetadata": {
+"description": "Metadata for a ConversationModels.DeployConversationModel operation.",
+"id": "GoogleCloudDialogflowV2DeployConversationModelOperationMetadata",
+"properties": {
+"conversationModel": {
+"description": "The resource name of the conversation model. Format: `projects//conversationModels/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp when request to deploy conversation model was submitted. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2EncryptionSpec": {
+"description": "A customer-managed encryption key specification that can be applied to all created resources (e.g. Conversation).",
+"id": "GoogleCloudDialogflowV2EncryptionSpec",
+"properties": {
+"kmsKey": {
+"description": "Required. The name of customer-managed encryption key that is used to secure a resource and its sub-resources. If empty, the resource is secured by the default Google encryption key. Only the key in the same location as this resource is allowed to be used for encryption. Format: `projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{key}`",
+"type": "string"
+},
+"name": {
+"description": "Immutable. The resource name of the encryption key specification resource. Format: projects/{project}/locations/{location}/encryptionSpec",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2EntityType": {
+"description": "Each intent parameter has a type, called the entity type, which dictates exactly how data from an end-user expression is extracted. Dialogflow provides predefined system entities that can match many common types of data. For example, there are system entities for matching dates, times, colors, email addresses, and so on. You can also create your own custom entities for matching custom data. For example, you could define a vegetable entity that can match the types of vegetables available for purchase with a grocery store agent. For more information, see the [Entity guide](https://cloud.google.com/dialogflow/docs/entities-overview).",
+"id": "GoogleCloudDialogflowV2EntityType",
+"properties": {
+"autoExpansionMode": {
+"description": "Optional. Indicates whether the entity type can be automatically expanded.",
+"enum": [
+"AUTO_EXPANSION_MODE_UNSPECIFIED",
+"AUTO_EXPANSION_MODE_DEFAULT"
+],
+"enumDescriptions": [
+"Auto expansion disabled for the entity.",
+"Allows an agent to recognize values that have not been explicitly listed in the entity."
+],
+"type": "string"
+},
+"displayName": {
+"description": "Required. The name of the entity type.",
+"type": "string"
+},
+"enableFuzzyExtraction": {
+"description": "Optional. Enables fuzzy entity extraction during classification.",
+"type": "boolean"
+},
+"entities": {
+"description": "Optional. The collection of entity entries associated with the entity type.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2EntityTypeEntity"
+},
+"type": "array"
+},
+"kind": {
+"description": "Required. Indicates the kind of entity type.",
+"enum": [
+"KIND_UNSPECIFIED",
+"KIND_MAP",
+"KIND_LIST",
+"KIND_REGEXP"
+],
+"enumDescriptions": [
+"Not specified. This value should be never used.",
+"Map entity types allow mapping of a group of synonyms to a reference value.",
+"List entity types contain a set of entries that do not map to reference values. However, list entity types can contain references to other entity types (with or without aliases).",
+"Regexp entity types allow to specify regular expressions in entries values."
+],
+"type": "string"
+},
+"name": {
+"description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Format: `projects//agent/entityTypes/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2EntityTypeEntity": {
+"description": "An **entity entry** for an associated entity type.",
+"id": "GoogleCloudDialogflowV2EntityTypeEntity",
+"properties": {
+"synonyms": {
+"description": "Required. A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"value": {
+"description": "Required. The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A reference value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2EventInput": {
+"description": "Events allow for matching intents by event name instead of the natural language input. For instance, input `` can trigger a personalized welcome response. The parameter `name` may be used by the agent in the response: `\"Hello #welcome_event.name! What can I do for you today?\"`.",
+"id": "GoogleCloudDialogflowV2EventInput",
+"properties": {
+"languageCode": {
+"description": "Required. The language of this query. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language. This field is ignored when used in the context of a WebhookResponse.followup_event_input field, because the language was already defined in the originating detect intent request.",
+"type": "string"
+},
+"name": {
+"description": "Required. The unique identifier of the event.",
+"type": "string"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The collection of parameters associated with the event. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ExportAgentResponse": {
+"description": "The response message for Agents.ExportAgent.",
+"id": "GoogleCloudDialogflowV2ExportAgentResponse",
+"properties": {
+"agentContent": {
+"description": "Zip compressed raw byte content for agent.",
+"format": "byte",
+"type": "string"
+},
+"agentUri": {
+"description": "The URI to a file containing the exported agent. This field is populated only if `agent_uri` is specified in `ExportAgentRequest`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ExportOperationMetadata": {
+"description": "Metadata related to the Export Data Operations (e.g. ExportDocument).",
+"id": "GoogleCloudDialogflowV2ExportOperationMetadata",
+"properties": {
+"exportedGcsDestination": {
+"$ref": "GoogleCloudDialogflowV2GcsDestination",
+"description": "Cloud Storage file path of the exported data."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2FaqAnswer": {
+"description": "Represents answer from \"frequently asked questions\".",
+"id": "GoogleCloudDialogflowV2FaqAnswer",
+"properties": {
+"answer": {
+"description": "The piece of text from the `source` knowledge base document.",
+"type": "string"
+},
+"answerRecord": {
+"description": "The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"confidence": {
+"description": "The system's confidence score that this Knowledge answer is a good match for this conversational query, range from 0.0 (completely uncertain) to 1.0 (completely certain).",
+"format": "float",
+"type": "number"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map that contains metadata about the answer and the document from which it originates.",
+"type": "object"
+},
+"question": {
+"description": "The corresponding FAQ question.",
+"type": "string"
+},
+"source": {
+"description": "Indicates which Knowledge Document this answer was extracted from. Format: `projects//locations//agent/knowledgeBases//documents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2GcsDestination": {
+"description": "Google Cloud Storage location for the output.",
+"id": "GoogleCloudDialogflowV2GcsDestination",
+"properties": {
+"uri": {
+"description": "The Google Cloud Storage URIs for the output. A URI is of the form: `gs://bucket/object-prefix-or-name` Whether a prefix or name is used depends on the use case. The requesting user must have \"write-permission\" to the bucket.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2HumanAgentAssistantEvent": {
+"description": "Represents a notification sent to Cloud Pub/Sub subscribers for human agent assistant events in a specific conversation.",
+"id": "GoogleCloudDialogflowV2HumanAgentAssistantEvent",
+"properties": {
+"conversation": {
+"description": "The conversation this notification refers to. Format: `projects//conversations/`.",
+"type": "string"
+},
+"participant": {
+"description": "The participant that the suggestion is compiled for. Format: `projects//conversations//participants/`. It will not be set in legacy workflow.",
+"type": "string"
+},
+"suggestionResults": {
+"description": "The suggestion results payload that this notification refers to.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2SuggestionResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ImportConversationDataOperationMetadata": {
+"description": "Metadata for a ConversationDatasets.ImportConversationData operation.",
+"id": "GoogleCloudDialogflowV2ImportConversationDataOperationMetadata",
+"properties": {
+"conversationDataset": {
+"description": "The resource name of the imported conversation dataset. Format: `projects//locations//conversationDatasets/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp when import conversation data request was created. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+},
+"partialFailures": {
+"description": "Partial failures are failures that don't fail the whole long running operation, e.g. single files that couldn't be read.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ImportConversationDataOperationResponse": {
+"description": "Response used for ConversationDatasets.ImportConversationData long running operation.",
+"id": "GoogleCloudDialogflowV2ImportConversationDataOperationResponse",
+"properties": {
+"conversationDataset": {
+"description": "The resource name of the imported conversation dataset. Format: `projects//locations//conversationDatasets/`",
+"type": "string"
+},
+"importCount": {
+"description": "Number of conversations imported successfully.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2ImportDocumentsResponse": {
+"description": "Response message for Documents.ImportDocuments.",
+"id": "GoogleCloudDialogflowV2ImportDocumentsResponse",
+"properties": {
+"warnings": {
+"description": "Includes details about skipped documents or any other warnings.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2InitializeEncryptionSpecMetadata": {
+"description": "Metadata for initializing a location-level encryption specification.",
+"id": "GoogleCloudDialogflowV2InitializeEncryptionSpecMetadata",
+"properties": {
+"request": {
+"$ref": "GoogleCloudDialogflowV2InitializeEncryptionSpecRequest",
+"description": "Output only. The original request for initialization.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2InitializeEncryptionSpecRequest": {
+"description": "The request to initialize a location-level encryption specification.",
+"id": "GoogleCloudDialogflowV2InitializeEncryptionSpecRequest",
+"properties": {
+"encryptionSpec": {
+"$ref": "GoogleCloudDialogflowV2EncryptionSpec",
+"description": "Required. The encryption spec used for CMEK encryption. It is required that the kms key is in the same region as the endpoint. The same key will be used for all provisioned resources, if encryption is available. If the kms_key_name is left empty, no encryption will be enforced."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2InputDataset": {
+"description": "InputDataset used to create model or do evaluation. NextID:5",
+"id": "GoogleCloudDialogflowV2InputDataset",
+"properties": {
+"dataset": {
+"description": "Required. ConversationDataset resource name. Format: `projects//locations//conversationDatasets/`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2Intent": {
+"description": "An intent categorizes an end-user's intention for one conversation turn. For each agent, you define many intents, where your combined intents can handle a complete conversation. When an end-user writes or says something, referred to as an end-user expression or end-user input, Dialogflow matches the end-user input to the best intent in your agent. Matching an intent is also known as intent classification. For more information, see the [intent guide](https://cloud.google.com/dialogflow/docs/intents-overview).",
+"id": "GoogleCloudDialogflowV2Intent",
+"properties": {
+"action": {
+"description": "Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces.",
+"type": "string"
+},
+"defaultResponsePlatforms": {
+"description": "Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).",
+"items": {
+"enum": [
+"PLATFORM_UNSPECIFIED",
+"FACEBOOK",
+"SLACK",
+"TELEGRAM",
+"KIK",
+"SKYPE",
+"LINE",
+"VIBER",
+"ACTIONS_ON_GOOGLE",
+"GOOGLE_HANGOUTS"
+],
+"enumDescriptions": [
+"Default platform.",
+"Facebook.",
+"Slack.",
+"Telegram.",
+"Kik.",
+"Skype.",
+"Line.",
+"Viber.",
+"Google Assistant See [Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
+"Google Hangouts."
+],
+"type": "string"
+},
+"type": "array"
+},
+"displayName": {
+"description": "Required. The name of this intent.",
+"type": "string"
+},
+"endInteraction": {
+"description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false.",
+"type": "boolean"
+},
+"events": {
+"description": "Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"followupIntentInfo": {
+"description": "Output only. Read-only. Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentFollowupIntentInfo"
+},
+"readOnly": true,
+"type": "array"
+},
+"inputContextNames": {
+"description": "Optional. The list of context names required for this intent to be triggered. Format: `projects//agent/sessions/-/contexts/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"isFallback": {
+"description": "Optional. Indicates whether this is a fallback intent.",
+"type": "boolean"
+},
+"liveAgentHandoff": {
+"description": "Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false.",
+"type": "boolean"
+},
+"messages": {
+"description": "Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessage"
+},
+"type": "array"
+},
+"mlDisabled": {
+"description": "Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off.",
+"type": "boolean"
+},
+"name": {
+"description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Format: `projects//agent/intents/`.",
+"type": "string"
+},
+"outputContexts": {
+"description": "Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2Context"
+},
+"type": "array"
+},
+"parameters": {
+"description": "Optional. The collection of parameters associated with the intent.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentParameter"
+},
+"type": "array"
+},
+"parentFollowupIntentName": {
+"description": "Read-only after creation. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`.",
+"type": "string"
+},
+"priority": {
+"description": "Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.",
+"format": "int32",
+"type": "integer"
+},
+"resetContexts": {
+"description": "Optional. Indicates whether to delete all contexts in the current session when this intent is matched.",
+"type": "boolean"
+},
+"rootFollowupIntentName": {
+"description": "Output only. Read-only. The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. We populate this field only in the output. Format: `projects//agent/intents/`.",
+"readOnly": true,
+"type": "string"
+},
+"trainingPhrases": {
+"description": "Optional. The collection of examples that the agent is trained on.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentTrainingPhrase"
+},
+"type": "array"
+},
+"webhookState": {
+"description": "Optional. Indicates whether webhooks are enabled for the intent.",
+"enum": [
+"WEBHOOK_STATE_UNSPECIFIED",
+"WEBHOOK_STATE_ENABLED",
+"WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING"
+],
+"enumDescriptions": [
+"Webhook is disabled in the agent and in the intent.",
+"Webhook is enabled in the agent and in the intent.",
+"Webhook is enabled in the agent and in the intent. Also, each slot filling prompt is forwarded to the webhook."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentFollowupIntentInfo": {
+"description": "Represents a single followup intent in the chain.",
+"id": "GoogleCloudDialogflowV2IntentFollowupIntentInfo",
+"properties": {
+"followupIntentName": {
+"description": "The unique identifier of the followup intent. Format: `projects//agent/intents/`.",
+"type": "string"
+},
+"parentFollowupIntentName": {
+"description": "The unique identifier of the followup intent's parent. Format: `projects//agent/intents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessage": {
+"description": "A rich response message. Corresponds to the intent `Response` field in the Dialogflow console. For more information, see [Rich response messages](https://cloud.google.com/dialogflow/docs/intents-rich-messages).",
+"id": "GoogleCloudDialogflowV2IntentMessage",
+"properties": {
+"basicCard": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageBasicCard",
+"description": "The basic card response for Actions on Google."
+},
+"browseCarouselCard": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageBrowseCarouselCard",
+"description": "Browse carousel card for Actions on Google."
+},
+"card": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageCard",
+"description": "The card response."
+},
+"carouselSelect": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageCarouselSelect",
+"description": "The carousel card response for Actions on Google."
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageImage",
+"description": "The image response."
+},
+"linkOutSuggestion": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageLinkOutSuggestion",
+"description": "The link out suggestion chip for Actions on Google."
+},
+"listSelect": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageListSelect",
+"description": "The list card response for Actions on Google."
+},
+"mediaContent": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageMediaContent",
+"description": "The media content card for Actions on Google."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "A custom platform-specific response.",
+"type": "object"
+},
+"platform": {
+"description": "Optional. The platform that this message is intended for.",
+"enum": [
+"PLATFORM_UNSPECIFIED",
+"FACEBOOK",
+"SLACK",
+"TELEGRAM",
+"KIK",
+"SKYPE",
+"LINE",
+"VIBER",
+"ACTIONS_ON_GOOGLE",
+"GOOGLE_HANGOUTS"
+],
+"enumDescriptions": [
+"Default platform.",
+"Facebook.",
+"Slack.",
+"Telegram.",
+"Kik.",
+"Skype.",
+"Line.",
+"Viber.",
+"Google Assistant See [Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
+"Google Hangouts."
+],
+"type": "string"
+},
+"quickReplies": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageQuickReplies",
+"description": "The quick replies response."
+},
+"simpleResponses": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageSimpleResponses",
+"description": "The voice and text-only responses for Actions on Google."
+},
+"suggestions": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageSuggestions",
+"description": "The suggestion chips for Actions on Google."
+},
+"tableCard": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageTableCard",
+"description": "Table card for Actions on Google."
+},
+"text": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageText",
+"description": "The text response."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageBasicCard": {
+"description": "The basic card message. Useful for displaying information.",
+"id": "GoogleCloudDialogflowV2IntentMessageBasicCard",
+"properties": {
+"buttons": {
+"description": "Optional. The collection of card buttons.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageBasicCardButton"
+},
+"type": "array"
+},
+"formattedText": {
+"description": "Required, unless image is present. The body text of the card.",
+"type": "string"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageImage",
+"description": "Optional. The image for the card."
+},
+"subtitle": {
+"description": "Optional. The subtitle of the card.",
+"type": "string"
+},
+"title": {
+"description": "Optional. The title of the card.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageBasicCardButton": {
+"description": "The button object that appears at the bottom of a card.",
+"id": "GoogleCloudDialogflowV2IntentMessageBasicCardButton",
+"properties": {
+"openUriAction": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriAction",
+"description": "Required. Action to take when a user taps on the button."
+},
+"title": {
+"description": "Required. The title of the button.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriAction": {
+"description": "Opens the given URI.",
+"id": "GoogleCloudDialogflowV2IntentMessageBasicCardButtonOpenUriAction",
+"properties": {
+"uri": {
+"description": "Required. The HTTP or HTTPS scheme URI.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageBrowseCarouselCard": {
+"description": "Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel",
+"id": "GoogleCloudDialogflowV2IntentMessageBrowseCarouselCard",
+"properties": {
+"imageDisplayOptions": {
+"description": "Optional. Settings for displaying the image. Applies to every image in items.",
+"enum": [
+"IMAGE_DISPLAY_OPTIONS_UNSPECIFIED",
+"GRAY",
+"WHITE",
+"CROPPED",
+"BLURRED_BACKGROUND"
+],
+"enumDescriptions": [
+"Fill the gaps between the image and the image container with gray bars.",
+"Fill the gaps between the image and the image container with gray bars.",
+"Fill the gaps between the image and the image container with white bars.",
+"Image is scaled such that the image width and height match or exceed the container dimensions. This may crop the top and bottom of the image if the scaled image height is greater than the container height, or crop the left and right of the image if the scaled image width is greater than the container width. This is similar to \"Zoom Mode\" on a widescreen TV when playing a 4:3 video.",
+"Pad the gaps between image and image frame with a blurred copy of the same image."
+],
+"type": "string"
+},
+"items": {
+"description": "Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItem"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItem": {
+"description": "Browsing carousel tile",
+"id": "GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItem",
+"properties": {
+"description": {
+"description": "Optional. Description of the carousel item. Maximum of four lines of text.",
+"type": "string"
+},
+"footer": {
+"description": "Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.",
+"type": "string"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageImage",
+"description": "Optional. Hero image for the carousel item."
+},
+"openUriAction": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction",
+"description": "Required. Action to present to the user."
+},
+"title": {
+"description": "Required. Title of the carousel item. Maximum of two lines of text.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction": {
+"description": "Actions on Google action to open a given url.",
+"id": "GoogleCloudDialogflowV2IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction",
+"properties": {
+"url": {
+"description": "Required. URL",
+"type": "string"
+},
+"urlTypeHint": {
+"description": "Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.",
+"enum": [
+"URL_TYPE_HINT_UNSPECIFIED",
+"AMP_ACTION",
+"AMP_CONTENT"
+],
+"enumDescriptions": [
+"Unspecified",
+"Url would be an amp action",
+"URL that points directly to AMP content, or to a canonical URL which refers to AMP content via ."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageCard": {
+"description": "The card response message.",
+"id": "GoogleCloudDialogflowV2IntentMessageCard",
+"properties": {
+"buttons": {
+"description": "Optional. The collection of card buttons.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageCardButton"
+},
+"type": "array"
+},
+"imageUri": {
+"description": "Optional. The public URI to an image file for the card.",
+"type": "string"
+},
+"subtitle": {
+"description": "Optional. The subtitle of the card.",
+"type": "string"
+},
+"title": {
+"description": "Optional. The title of the card.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageCardButton": {
+"description": "Contains information about a button.",
+"id": "GoogleCloudDialogflowV2IntentMessageCardButton",
+"properties": {
+"postback": {
+"description": "Optional. The text to send back to the Dialogflow API or a URI to open.",
+"type": "string"
+},
+"text": {
+"description": "Optional. The text to show on the button.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageCarouselSelect": {
+"description": "The card for presenting a carousel of options to select from.",
+"id": "GoogleCloudDialogflowV2IntentMessageCarouselSelect",
+"properties": {
+"items": {
+"description": "Required. Carousel items.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageCarouselSelectItem"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageCarouselSelectItem": {
+"description": "An item in the carousel.",
+"id": "GoogleCloudDialogflowV2IntentMessageCarouselSelectItem",
+"properties": {
+"description": {
+"description": "Optional. The body text of the card.",
+"type": "string"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageImage",
+"description": "Optional. The image to display."
+},
+"info": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageSelectItemInfo",
+"description": "Required. Additional info about the option item."
+},
+"title": {
+"description": "Required. Title of the carousel item.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageColumnProperties": {
+"description": "Column properties for TableCard.",
+"id": "GoogleCloudDialogflowV2IntentMessageColumnProperties",
+"properties": {
+"header": {
+"description": "Required. Column heading.",
+"type": "string"
+},
+"horizontalAlignment": {
+"description": "Optional. Defines text alignment for all cells in this column.",
+"enum": [
+"HORIZONTAL_ALIGNMENT_UNSPECIFIED",
+"LEADING",
+"CENTER",
+"TRAILING"
+],
+"enumDescriptions": [
+"Text is aligned to the leading edge of the column.",
+"Text is aligned to the leading edge of the column.",
+"Text is centered in the column.",
+"Text is aligned to the trailing edge of the column."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageImage": {
+"description": "The image response message.",
+"id": "GoogleCloudDialogflowV2IntentMessageImage",
+"properties": {
+"accessibilityText": {
+"description": "Optional. A text description of the image to be used for accessibility, e.g., screen readers.",
+"type": "string"
+},
+"imageUri": {
+"description": "Optional. The public URI to an image file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageLinkOutSuggestion": {
+"description": "The suggestion chip message that allows the user to jump out to the app or website associated with this agent.",
+"id": "GoogleCloudDialogflowV2IntentMessageLinkOutSuggestion",
+"properties": {
+"destinationName": {
+"description": "Required. The name of the app or site this chip is linking to.",
+"type": "string"
+},
+"uri": {
+"description": "Required. The URI of the app or site to open when the user taps the suggestion chip.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageListSelect": {
+"description": "The card for presenting a list of options to select from.",
+"id": "GoogleCloudDialogflowV2IntentMessageListSelect",
+"properties": {
+"items": {
+"description": "Required. List items.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageListSelectItem"
+},
+"type": "array"
+},
+"subtitle": {
+"description": "Optional. Subtitle of the list.",
+"type": "string"
+},
+"title": {
+"description": "Optional. The overall title of the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageListSelectItem": {
+"description": "An item in the list.",
+"id": "GoogleCloudDialogflowV2IntentMessageListSelectItem",
+"properties": {
+"description": {
+"description": "Optional. The main text describing the item.",
+"type": "string"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageImage",
+"description": "Optional. The image to display."
+},
+"info": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageSelectItemInfo",
+"description": "Required. Additional information about this option."
+},
+"title": {
+"description": "Required. The title of the list item.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageMediaContent": {
+"description": "The media content card for Actions on Google.",
+"id": "GoogleCloudDialogflowV2IntentMessageMediaContent",
+"properties": {
+"mediaObjects": {
+"description": "Required. List of media objects.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObject"
+},
+"type": "array"
+},
+"mediaType": {
+"description": "Optional. What type of media is the content (ie \"audio\").",
+"enum": [
+"RESPONSE_MEDIA_TYPE_UNSPECIFIED",
+"AUDIO"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Response media type is audio."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObject": {
+"description": "Response media object for media content card.",
+"id": "GoogleCloudDialogflowV2IntentMessageMediaContentResponseMediaObject",
+"properties": {
+"contentUrl": {
+"description": "Required. Url where the media is stored.",
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of media card.",
+"type": "string"
+},
+"icon": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageImage",
+"description": "Optional. Icon to display above media content."
+},
+"largeImage": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageImage",
+"description": "Optional. Image to display above media content."
+},
+"name": {
+"description": "Required. Name of media card.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageQuickReplies": {
+"description": "The quick replies response message.",
+"id": "GoogleCloudDialogflowV2IntentMessageQuickReplies",
+"properties": {
+"quickReplies": {
+"description": "Optional. The collection of quick replies.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"title": {
+"description": "Optional. The title of the collection of quick replies.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageSelectItemInfo": {
+"description": "Additional info about the select item for when it is triggered in a dialog.",
+"id": "GoogleCloudDialogflowV2IntentMessageSelectItemInfo",
+"properties": {
+"key": {
+"description": "Required. A unique key that will be sent back to the agent if this response is given.",
+"type": "string"
+},
+"synonyms": {
+"description": "Optional. A list of synonyms that can also be used to trigger this item in dialog.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageSimpleResponse": {
+"description": "The simple response message containing speech or text.",
+"id": "GoogleCloudDialogflowV2IntentMessageSimpleResponse",
+"properties": {
+"displayText": {
+"description": "Optional. The text to display.",
+"type": "string"
+},
+"ssml": {
+"description": "One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech.",
+"type": "string"
+},
+"textToSpeech": {
+"description": "One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageSimpleResponses": {
+"description": "The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`.",
+"id": "GoogleCloudDialogflowV2IntentMessageSimpleResponses",
+"properties": {
+"simpleResponses": {
+"description": "Required. The list of simple responses.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageSimpleResponse"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageSuggestion": {
+"description": "The suggestion chip message that the user can tap to quickly post a reply to the conversation.",
+"id": "GoogleCloudDialogflowV2IntentMessageSuggestion",
+"properties": {
+"title": {
+"description": "Required. The text shown the in the suggestion chip.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageSuggestions": {
+"description": "The collection of suggestions.",
+"id": "GoogleCloudDialogflowV2IntentMessageSuggestions",
+"properties": {
+"suggestions": {
+"description": "Required. The list of suggested replies.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageSuggestion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageTableCard": {
+"description": "Table card for Actions on Google.",
+"id": "GoogleCloudDialogflowV2IntentMessageTableCard",
+"properties": {
+"buttons": {
+"description": "Optional. List of buttons for the card.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageBasicCardButton"
+},
+"type": "array"
+},
+"columnProperties": {
+"description": "Optional. Display properties for the columns in this table.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageColumnProperties"
+},
+"type": "array"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageImage",
+"description": "Optional. Image which should be displayed on the card."
+},
+"rows": {
+"description": "Optional. Rows in this table of data.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageTableCardRow"
+},
+"type": "array"
+},
+"subtitle": {
+"description": "Optional. Subtitle to the title.",
+"type": "string"
+},
+"title": {
+"description": "Required. Title of the card.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageTableCardCell": {
+"description": "Cell of TableCardRow.",
+"id": "GoogleCloudDialogflowV2IntentMessageTableCardCell",
+"properties": {
+"text": {
+"description": "Required. Text in this cell.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageTableCardRow": {
+"description": "Row of TableCard.",
+"id": "GoogleCloudDialogflowV2IntentMessageTableCardRow",
+"properties": {
+"cells": {
+"description": "Optional. List of cells that make up this row.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessageTableCardCell"
+},
+"type": "array"
+},
+"dividerAfter": {
+"description": "Optional. Whether to add a visual divider after this row.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentMessageText": {
+"description": "The text response message.",
+"id": "GoogleCloudDialogflowV2IntentMessageText",
+"properties": {
+"text": {
+"description": "Optional. The collection of the agent's responses.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentParameter": {
+"description": "Represents intent parameters.",
+"id": "GoogleCloudDialogflowV2IntentParameter",
+"properties": {
+"defaultValue": {
+"description": "Optional. The default value to use when the `value` yields an empty result. Default values can be extracted from contexts by using the following syntax: `#context_name.parameter_name`.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The name of the parameter.",
+"type": "string"
+},
+"entityTypeDisplayName": {
+"description": "Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided.",
+"type": "string"
+},
+"isList": {
+"description": "Optional. Indicates whether the parameter represents a list of values.",
+"type": "boolean"
+},
+"mandatory": {
+"description": "Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value.",
+"type": "boolean"
+},
+"name": {
+"description": "The unique identifier of this parameter.",
+"type": "string"
+},
+"prompts": {
+"description": "Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"value": {
+"description": "Optional. The definition of the parameter value. It can be: - a constant string, - a parameter value defined as `$parameter_name`, - an original parameter value defined as `$parameter_name.original`, - a parameter value from some context defined as `#context_name.parameter_name`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentTrainingPhrase": {
+"description": "Represents an example that the agent is trained on.",
+"id": "GoogleCloudDialogflowV2IntentTrainingPhrase",
+"properties": {
+"name": {
+"description": "Output only. The unique identifier of this training phrase.",
+"readOnly": true,
+"type": "string"
+},
+"parts": {
+"description": "Required. The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `entity_type`, `alias`, and `user_defined` fields are all set.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentTrainingPhrasePart"
+},
+"type": "array"
+},
+"timesAddedCount": {
+"description": "Optional. Indicates how many times this example was added to the intent. Each time a developer adds an existing sample by editing an intent or training, this counter is increased.",
+"format": "int32",
+"type": "integer"
+},
+"type": {
+"description": "Required. The type of the training phrase.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"EXAMPLE",
+"TEMPLATE"
+],
+"enumDeprecated": [
+false,
+false,
+true
+],
+"enumDescriptions": [
+"Not specified. This value should never be used.",
+"Examples do not contain @-prefixed entity type names, but example parts can be annotated with entity types.",
+"Templates are not annotated with entity types, but they can contain @-prefixed entity type names as substrings. Template mode has been deprecated. Example mode is the only supported way to create new training phrases. If you have existing training phrases that you've created in template mode, those will continue to work."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2IntentTrainingPhrasePart": {
+"description": "Represents a part of a training phrase.",
+"id": "GoogleCloudDialogflowV2IntentTrainingPhrasePart",
+"properties": {
+"alias": {
+"description": "Optional. The parameter name for the value extracted from the annotated part of the example. This field is required for annotated parts of the training phrase.",
+"type": "string"
+},
+"entityType": {
+"description": "Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase.",
+"type": "string"
+},
+"text": {
+"description": "Required. The text for this part.",
+"type": "string"
+},
+"userDefined": {
+"description": "Optional. Indicates whether the text was manually annotated. This field is set to true when the Dialogflow Console is used to manually annotate the part. When creating an annotated part with the API, you must set this to true.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2KnowledgeAssistAnswer": {
+"description": "Represents a Knowledge Assist answer.",
+"id": "GoogleCloudDialogflowV2KnowledgeAssistAnswer",
+"properties": {
+"answerRecord": {
+"description": "The name of the answer record. Format: `projects//locations//answer Records/`.",
+"type": "string"
+},
+"suggestedQuery": {
+"$ref": "GoogleCloudDialogflowV2KnowledgeAssistAnswerSuggestedQuery",
+"description": "The query suggested based on the context. Suggestion is made only if it is different from the previous suggestion."
+},
+"suggestedQueryAnswer": {
+"$ref": "GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswer",
+"description": "The answer generated for the suggested query. Whether or not an answer is generated depends on how confident we are about the generated query."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswer": {
+"description": "Represents an answer from Knowledge. Currently supports FAQ and Generative answers.",
+"id": "GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswer",
+"properties": {
+"answerText": {
+"description": "The piece of text from the `source` that answers this suggested query.",
+"type": "string"
+},
+"faqSource": {
+"$ref": "GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerFaqSource",
+"description": "Populated if the prediction came from FAQ."
+},
+"generativeSource": {
+"$ref": "GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource",
+"description": "Populated if the prediction was Generative."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerFaqSource": {
+"description": "Details about source of FAQ answer.",
+"id": "GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerFaqSource",
+"properties": {
+"question": {
+"description": "The corresponding FAQ question.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource": {
+"description": "Details about source of Generative answer.",
+"id": "GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource",
+"properties": {
+"snippets": {
+"description": "All snippets used for this Generative Prediction, with their source URI and data.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet": {
+"description": "Snippet Source for a Generative Prediction.",
+"id": "GoogleCloudDialogflowV2KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Metadata of the document.",
+"type": "object"
+},
+"text": {
+"description": "Text taken from that URI.",
+"type": "string"
+},
+"title": {
+"description": "Title of the document.",
+"type": "string"
+},
+"uri": {
+"description": "URI the data is sourced from.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2KnowledgeAssistAnswerSuggestedQuery": {
+"description": "Represents a suggested query.",
+"id": "GoogleCloudDialogflowV2KnowledgeAssistAnswerSuggestedQuery",
+"properties": {
+"queryText": {
+"description": "Suggested query text.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2KnowledgeOperationMetadata": {
+"description": "Metadata in google::longrunning::Operation for Knowledge operations.",
+"id": "GoogleCloudDialogflowV2KnowledgeOperationMetadata",
+"properties": {
+"exportOperationMetadata": {
+"$ref": "GoogleCloudDialogflowV2ExportOperationMetadata",
+"description": "Metadata for the Export Data Operation such as the destination of export."
+},
+"knowledgeBase": {
+"description": "The name of the knowledge base interacted with during the operation.",
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state of this operation.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"RUNNING",
+"DONE"
+],
+"enumDescriptions": [
+"State unspecified.",
+"The operation has been created.",
+"The operation is currently running.",
+"The operation is done, either cancelled or completed."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2Message": {
+"description": "Represents a message posted into a conversation.",
+"id": "GoogleCloudDialogflowV2Message",
+"properties": {
+"content": {
+"description": "Required. The message content.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time when the message was created in Contact Center AI.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The message language. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\".",
+"type": "string"
+},
+"messageAnnotation": {
+"$ref": "GoogleCloudDialogflowV2MessageAnnotation",
+"description": "Output only. The annotation for the message.",
+"readOnly": true
+},
+"name": {
+"description": "Optional. The unique identifier of the message. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"participant": {
+"description": "Output only. The participant that sends this message.",
+"readOnly": true,
+"type": "string"
+},
+"participantRole": {
+"description": "Output only. The role of the participant.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"readOnly": true,
+"type": "string"
+},
+"sendTime": {
+"description": "Optional. The time when the message was sent.",
+"format": "google-datetime",
+"type": "string"
+},
+"sentimentAnalysis": {
+"$ref": "GoogleCloudDialogflowV2SentimentAnalysisResult",
+"description": "Output only. The sentiment analysis result for the message.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2MessageAnnotation": {
+"description": "Represents the result of annotation for the message.",
+"id": "GoogleCloudDialogflowV2MessageAnnotation",
+"properties": {
+"containEntities": {
+"description": "Indicates whether the text message contains entities.",
+"type": "boolean"
+},
+"parts": {
+"description": "The collection of annotated message parts ordered by their position in the message. You can recover the annotated message by concatenating [AnnotatedMessagePart.text].",
+"items": {
+"$ref": "GoogleCloudDialogflowV2AnnotatedMessagePart"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2OriginalDetectIntentRequest": {
+"description": "Represents the contents of the original request that was passed to the `[Streaming]DetectIntent` call.",
+"id": "GoogleCloudDialogflowV2OriginalDetectIntentRequest",
+"properties": {
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. This field is set to the value of the `QueryParameters.payload` field passed in the request. Some integrations that query a Dialogflow agent may provide additional information in the payload. In particular, for the Dialogflow Phone Gateway integration, this field has the form: { \"telephony\": { \"caller_id\": \"+18558363987\" } } Note: The caller ID field (`caller_id`) will be redacted for Trial Edition agents and populated with the caller ID in [E.164 format](https://en.wikipedia.org/wiki/E.164) for Essentials Edition agents.",
+"type": "object"
+},
+"source": {
+"description": "The source of this request, e.g., `google`, `facebook`, `slack`. It is set by Dialogflow-owned servers.",
+"type": "string"
+},
+"version": {
+"description": "Optional. The version of the protocol used for this request. This field is AoG-specific.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2QueryResult": {
+"description": "Represents the result of conversational query or event processing.",
+"id": "GoogleCloudDialogflowV2QueryResult",
+"properties": {
+"action": {
+"description": "The action name from the matched intent.",
+"type": "string"
+},
+"allRequiredParamsPresent": {
+"description": "This field is set to: - `false` if the matched intent has required parameters and not all of the required parameter values have been collected. - `true` if all required parameter values have been collected, or if the matched intent doesn't contain any required parameters.",
+"type": "boolean"
+},
+"cancelsSlotFilling": {
+"description": "Indicates whether the conversational query triggers a cancellation for slot filling. For more information, see the [cancel slot filling documentation](https://cloud.google.com/dialogflow/es/docs/intents-actions-parameters#cancel).",
+"type": "boolean"
+},
+"diagnosticInfo": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Free-form diagnostic information for the associated detect intent request. The fields of this data can change without notice, so you should not write code that depends on its structure. The data may contain: - webhook call latency - webhook errors",
+"type": "object"
+},
+"fulfillmentMessages": {
+"description": "The collection of rich messages to present to the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessage"
+},
+"type": "array"
+},
+"fulfillmentText": {
+"description": "The text to be pronounced to the user or shown on the screen. Note: This is a legacy field, `fulfillment_messages` should be preferred.",
+"type": "string"
+},
+"intent": {
+"$ref": "GoogleCloudDialogflowV2Intent",
+"description": "The intent that matched the conversational query. Some, not all fields are filled in this message, including but not limited to: `name`, `display_name`, `end_interaction` and `is_fallback`."
+},
+"intentDetectionConfidence": {
+"description": "The intent detection confidence. Values range from 0.0 (completely uncertain) to 1.0 (completely certain). This value is for informational purpose only and is only used to help match the best intent within the classification threshold. This value may change for the same end-user expression at any time due to a model retraining or change in implementation. If there are `multiple knowledge_answers` messages, this value is set to the greatest `knowledgeAnswers.match_confidence` value in the list.",
+"format": "float",
+"type": "number"
+},
+"languageCode": {
+"description": "The language that was triggered during intent detection. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes.",
+"type": "string"
+},
+"outputContexts": {
+"description": "The collection of output contexts. If applicable, `output_contexts.parameters` contains entries with name `.original` containing the original parameter values before the query.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2Context"
+},
+"type": "array"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The collection of extracted parameters. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
+"type": "object"
+},
+"queryText": {
+"description": "The original conversational query text: - If natural language text was provided as input, `query_text` contains a copy of the input. - If natural language speech audio was provided as input, `query_text` contains the speech recognition result. If speech recognizer produced multiple alternatives, a particular one is picked. - If automatic spell correction is enabled, `query_text` will contain the corrected user input.",
+"type": "string"
+},
+"sentimentAnalysisResult": {
+"$ref": "GoogleCloudDialogflowV2SentimentAnalysisResult",
+"description": "The sentiment analysis result, which depends on the `sentiment_analysis_request_config` specified in the request."
+},
+"speechRecognitionConfidence": {
+"description": "The Speech recognition confidence between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. The default of 0.0 is a sentinel value indicating that confidence was not set. This field is not guaranteed to be accurate or set. In particular this field isn't set for StreamingDetectIntent since the streaming endpoint has separate confidence estimates per portion of the audio in StreamingRecognitionResult.",
+"format": "float",
+"type": "number"
+},
+"webhookPayload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "If the query was fulfilled by a webhook call, this field is set to the value of the `payload` field returned in the webhook response.",
+"type": "object"
+},
+"webhookSource": {
+"description": "If the query was fulfilled by a webhook call, this field is set to the value of the `source` field returned in the webhook response.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2Sentiment": {
+"description": "The sentiment, such as positive/negative feeling or association, for a unit of analysis, such as the query text. See: https://cloud.google.com/natural-language/docs/basics#interpreting_sentiment_analysis_values for how to interpret the result.",
+"id": "GoogleCloudDialogflowV2Sentiment",
+"properties": {
+"magnitude": {
+"description": "A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment, regardless of score (positive or negative).",
+"format": "float",
+"type": "number"
+},
+"score": {
+"description": "Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SentimentAnalysisResult": {
+"description": "The result of sentiment analysis. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user's attitude as positive, negative, or neutral. For DetectIntent, it needs to be configured in DetectIntentRequest.query_params. For StreamingDetectIntent, it needs to be configured in StreamingDetectIntentRequest.query_params. And for Participants.AnalyzeContent and Participants.StreamingAnalyzeContent, it needs to be configured in ConversationProfile.human_agent_assistant_config",
+"id": "GoogleCloudDialogflowV2SentimentAnalysisResult",
+"properties": {
+"queryTextSentiment": {
+"$ref": "GoogleCloudDialogflowV2Sentiment",
+"description": "The sentiment analysis result for `query_text`."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SessionEntityType": {
+"description": "A session represents a conversation between a Dialogflow agent and an end-user. You can create special entities, called session entities, during a session. Session entities can extend or replace custom entity types and only exist during the session that they were created for. All session data, including session entities, is stored by Dialogflow for 20 minutes. For more information, see the [session entity guide](https://cloud.google.com/dialogflow/docs/entities-session).",
+"id": "GoogleCloudDialogflowV2SessionEntityType",
+"properties": {
+"entities": {
+"description": "Required. The collection of entities associated with this session entity type.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2EntityTypeEntity"
+},
+"type": "array"
+},
+"entityOverrideMode": {
+"description": "Required. Indicates whether the additional data should override or supplement the custom entity type definition.",
+"enum": [
+"ENTITY_OVERRIDE_MODE_UNSPECIFIED",
+"ENTITY_OVERRIDE_MODE_OVERRIDE",
+"ENTITY_OVERRIDE_MODE_SUPPLEMENT"
+],
+"enumDescriptions": [
+"Not specified. This value should be never used.",
+"The collection of session entities overrides the collection of entities in the corresponding custom entity type.",
+"The collection of session entities extends the collection of entities in the corresponding custom entity type. Note: Even in this override mode calls to `ListSessionEntityTypes`, `GetSessionEntityType`, `CreateSessionEntityType` and `UpdateSessionEntityType` only return the additional entities added in this session entity type. If you want to get the supplemented list, please call EntityTypes.GetEntityType on the custom entity type and merge."
+],
+"type": "string"
+},
+"name": {
+"description": "Required. The unique identifier of this session entity type. Format: `projects//agent/sessions//entityTypes/`, or `projects//agent/environments//users//sessions//entityTypes/`. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SetSuggestionFeatureConfigOperationMetadata": {
+"description": "Metadata for a ConversationProfiles.SetSuggestionFeatureConfig operation.",
+"id": "GoogleCloudDialogflowV2SetSuggestionFeatureConfigOperationMetadata",
+"properties": {
+"conversationProfile": {
+"description": "The resource name of the conversation profile. Format: `projects//locations//conversationProfiles/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp whe the request was created. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+},
+"participantRole": {
+"description": "Required. The participant role to add or update the suggestion feature config. Only HUMAN_AGENT or END_USER can be used.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"type": "string"
+},
+"suggestionFeatureType": {
+"description": "Required. The type of the suggestion feature to add or update.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"ARTICLE_SUGGESTION",
+"FAQ",
+"SMART_REPLY",
+"KNOWLEDGE_SEARCH",
+"KNOWLEDGE_ASSIST"
+],
+"enumDescriptions": [
+"Unspecified feature type.",
+"Run article suggestion model for chat.",
+"Run FAQ model for chat.",
+"Run smart reply model for chat.",
+"Run knowledge search with text input from agent or text generated query.",
+"Run knowledge assist with automatic query generation."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SmartReplyAnswer": {
+"description": "Represents a smart reply answer.",
+"id": "GoogleCloudDialogflowV2SmartReplyAnswer",
+"properties": {
+"answerRecord": {
+"description": "The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"confidence": {
+"description": "Smart reply confidence. The system's confidence score that this reply is a good match for this conversation, as a value from 0.0 (completely uncertain) to 1.0 (completely certain).",
+"format": "float",
+"type": "number"
+},
+"reply": {
+"description": "The content of the reply.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SmartReplyModelMetadata": {
+"description": "Metadata for smart reply models.",
+"id": "GoogleCloudDialogflowV2SmartReplyModelMetadata",
+"properties": {
+"trainingModelType": {
+"description": "Optional. Type of the smart reply model. If not provided, model_type is used.",
+"enum": [
+"MODEL_TYPE_UNSPECIFIED",
+"SMART_REPLY_DUAL_ENCODER_MODEL",
+"SMART_REPLY_BERT_MODEL"
+],
+"enumDescriptions": [
+"ModelType unspecified.",
+"ModelType smart reply dual encoder model.",
+"ModelType smart reply bert model."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SpeechWordInfo": {
+"description": "Information for a word recognized by the speech recognizer.",
+"id": "GoogleCloudDialogflowV2SpeechWordInfo",
+"properties": {
+"confidence": {
+"description": "The Speech confidence between 0.0 and 1.0 for this word. A higher number indicates an estimated greater likelihood that the recognized word is correct. The default of 0.0 is a sentinel value indicating that confidence was not set. This field is not guaranteed to be fully stable over time for the same audio input. Users should also not rely on it to always be provided.",
+"format": "float",
+"type": "number"
+},
+"endOffset": {
+"description": "Time offset relative to the beginning of the audio that corresponds to the end of the spoken word. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"startOffset": {
+"description": "Time offset relative to the beginning of the audio that corresponds to the start of the spoken word. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"word": {
+"description": "The word this info is for.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2StreamingRecognitionResult": {
+"description": "Contains a speech recognition result corresponding to a portion of the audio that is currently being processed or an indication that this is the end of the single requested utterance. While end-user audio is being processed, Dialogflow sends a series of results. Each result may contain a `transcript` value. A transcript represents a portion of the utterance. While the recognizer is processing audio, transcript values may be interim values or finalized values. Once a transcript is finalized, the `is_final` value is set to true and processing continues for the next transcript. If `StreamingDetectIntentRequest.query_input.audio_config.single_utterance` was true, and the recognizer has completed processing audio, the `message_type` value is set to `END_OF_SINGLE_UTTERANCE and the following (last) result contains the last finalized transcript. The complete end-user utterance is determined by concatenating the finalized transcript values received for the series of results. In the following example, single utterance is enabled. In the case where single utterance is not enabled, result 7 would not occur. ``` Num | transcript | message_type | is_final --- | ----------------------- | ----------------------- | -------- 1 | \"tube\" | TRANSCRIPT | false 2 | \"to be a\" | TRANSCRIPT | false 3 | \"to be\" | TRANSCRIPT | false 4 | \"to be or not to be\" | TRANSCRIPT | true 5 | \"that's\" | TRANSCRIPT | false 6 | \"that is | TRANSCRIPT | false 7 | unset | END_OF_SINGLE_UTTERANCE | unset 8 | \" that is the question\" | TRANSCRIPT | true ``` Concatenating the finalized transcripts with `is_final` set to true, the complete utterance becomes \"to be or not to be that is the question\".",
+"id": "GoogleCloudDialogflowV2StreamingRecognitionResult",
+"properties": {
+"confidence": {
+"description": "The Speech confidence between 0.0 and 1.0 for the current portion of audio. A higher number indicates an estimated greater likelihood that the recognized words are correct. The default of 0.0 is a sentinel value indicating that confidence was not set. This field is typically only provided if `is_final` is true and you should not rely on it being accurate or even set.",
+"format": "float",
+"type": "number"
+},
+"isFinal": {
+"description": "If `false`, the `StreamingRecognitionResult` represents an interim result that may change. If `true`, the recognizer will not return any further hypotheses about this piece of the audio. May only be populated for `message_type` = `TRANSCRIPT`.",
+"type": "boolean"
+},
+"languageCode": {
+"description": "Detected language code for the transcript.",
+"type": "string"
+},
+"messageType": {
+"description": "Type of the result message.",
+"enum": [
+"MESSAGE_TYPE_UNSPECIFIED",
+"TRANSCRIPT",
+"END_OF_SINGLE_UTTERANCE"
+],
+"enumDescriptions": [
+"Not specified. Should never be used.",
+"Message contains a (possibly partial) transcript.",
+"This event indicates that the server has detected the end of the user's speech utterance and expects no additional inputs. Therefore, the server will not process additional audio (although it may subsequently return additional results). The client should stop sending additional audio data, half-close the gRPC connection, and wait for any additional results until the server closes the gRPC connection. This message is only sent if `single_utterance` was set to `true`, and is not used otherwise."
+],
+"type": "string"
+},
+"speechEndOffset": {
+"description": "Time offset of the end of this Speech recognition result relative to the beginning of the audio. Only populated for `message_type` = `TRANSCRIPT`.",
+"format": "google-duration",
+"type": "string"
+},
+"speechWordInfo": {
+"description": "Word-specific information for the words recognized by Speech in transcript. Populated if and only if `message_type` = `TRANSCRIPT` and [InputAudioConfig.enable_word_info] is set.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2SpeechWordInfo"
+},
+"type": "array"
+},
+"transcript": {
+"description": "Transcript text representing the words that the user spoke. Populated if and only if `message_type` = `TRANSCRIPT`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SuggestArticlesResponse": {
+"description": "The response message for Participants.SuggestArticles.",
+"id": "GoogleCloudDialogflowV2SuggestArticlesResponse",
+"properties": {
+"articleAnswers": {
+"description": "Articles ordered by score in descending order.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2ArticleAnswer"
+},
+"type": "array"
+},
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestArticlesRequest.context_size field in the request if there aren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SuggestFaqAnswersResponse": {
+"description": "The request message for Participants.SuggestFaqAnswers.",
+"id": "GoogleCloudDialogflowV2SuggestFaqAnswersResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestFaqAnswersRequest.context_size field in the request if there aren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"faqAnswers": {
+"description": "Answers extracted from FAQ documents.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2FaqAnswer"
+},
+"type": "array"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SuggestKnowledgeAssistResponse": {
+"description": "The response message for Participants.SuggestKnowledgeAssist.",
+"id": "GoogleCloudDialogflowV2SuggestKnowledgeAssistResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestKnowledgeAssistRequest.context_size field in the request if there are fewer messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"knowledgeAssistAnswer": {
+"$ref": "GoogleCloudDialogflowV2KnowledgeAssistAnswer",
+"description": "Output only. Knowledge Assist suggestion.",
+"readOnly": true
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SuggestSmartRepliesResponse": {
+"description": "The response message for Participants.SuggestSmartReplies.",
+"id": "GoogleCloudDialogflowV2SuggestSmartRepliesResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestSmartRepliesRequest.context_size field in the request if there aren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"smartReplyAnswers": {
+"description": "Output only. Multiple reply options provided by smart reply service. The order is based on the rank of the model prediction. The maximum number of the returned replies is set in SmartReplyConfig.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2SmartReplyAnswer"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2SuggestionResult": {
+"description": "One response of different type of suggestion response which is used in the response of Participants.AnalyzeContent and Participants.AnalyzeContent, as well as HumanAgentAssistantEvent.",
+"id": "GoogleCloudDialogflowV2SuggestionResult",
+"properties": {
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "Error status if the request failed."
+},
+"suggestArticlesResponse": {
+"$ref": "GoogleCloudDialogflowV2SuggestArticlesResponse",
+"description": "SuggestArticlesResponse if request is for ARTICLE_SUGGESTION."
+},
+"suggestFaqAnswersResponse": {
+"$ref": "GoogleCloudDialogflowV2SuggestFaqAnswersResponse",
+"description": "SuggestFaqAnswersResponse if request is for FAQ_ANSWER."
+},
+"suggestKnowledgeAssistResponse": {
+"$ref": "GoogleCloudDialogflowV2SuggestKnowledgeAssistResponse",
+"description": "SuggestKnowledgeAssistResponse if request is for KNOWLEDGE_ASSIST."
+},
+"suggestSmartRepliesResponse": {
+"$ref": "GoogleCloudDialogflowV2SuggestSmartRepliesResponse",
+"description": "SuggestSmartRepliesResponse if request is for SMART_REPLY."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2UndeployConversationModelOperationMetadata": {
+"description": "Metadata for a ConversationModels.UndeployConversationModel operation.",
+"id": "GoogleCloudDialogflowV2UndeployConversationModelOperationMetadata",
+"properties": {
+"conversationModel": {
+"description": "The resource name of the conversation model. Format: `projects//conversationModels/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp when the request to undeploy conversation model was submitted. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2WebhookRequest": {
+"description": "The request message for a webhook call.",
+"id": "GoogleCloudDialogflowV2WebhookRequest",
+"properties": {
+"originalDetectIntentRequest": {
+"$ref": "GoogleCloudDialogflowV2OriginalDetectIntentRequest",
+"description": "Optional. The contents of the original request that was passed to `[Streaming]DetectIntent` call."
+},
+"queryResult": {
+"$ref": "GoogleCloudDialogflowV2QueryResult",
+"description": "The result of the conversational query or event processing. Contains the same value as `[Streaming]DetectIntentResponse.query_result`."
+},
+"responseId": {
+"description": "The unique identifier of the response. Contains the same value as `[Streaming]DetectIntentResponse.response_id`.",
+"type": "string"
+},
+"session": {
+"description": "The unique identifier of detectIntent request session. Can be used to identify end-user inside webhook implementation. Format: `projects//agent/sessions/`, or `projects//agent/environments//users//sessions/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2WebhookResponse": {
+"description": "The response message for a webhook call. This response is validated by the Dialogflow server. If validation fails, an error will be returned in the QueryResult.diagnostic_info field. Setting JSON fields to an empty value with the wrong type is a common error. To avoid this error: - Use `\"\"` for empty strings - Use `{}` or `null` for empty objects - Use `[]` or `null` for empty arrays For more information, see the [Protocol Buffers Language Guide](https://developers.google.com/protocol-buffers/docs/proto3#json).",
+"id": "GoogleCloudDialogflowV2WebhookResponse",
+"properties": {
+"followupEventInput": {
+"$ref": "GoogleCloudDialogflowV2EventInput",
+"description": "Optional. Invokes the supplied events. When this field is set, Dialogflow ignores the `fulfillment_text`, `fulfillment_messages`, and `payload` fields."
+},
+"fulfillmentMessages": {
+"description": "Optional. The rich response messages intended for the end-user. When provided, Dialogflow uses this field to populate QueryResult.fulfillment_messages sent to the integration or API caller.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2IntentMessage"
+},
+"type": "array"
+},
+"fulfillmentText": {
+"description": "Optional. The text response message intended for the end-user. It is recommended to use `fulfillment_messages.text.text[0]` instead. When provided, Dialogflow uses this field to populate QueryResult.fulfillment_text sent to the integration or API caller.",
+"type": "string"
+},
+"outputContexts": {
+"description": "Optional. The collection of output contexts that will overwrite currently active contexts for the session and reset their lifespans. When provided, Dialogflow uses this field to populate QueryResult.output_contexts sent to the integration or API caller.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2Context"
+},
+"type": "array"
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. This field can be used to pass custom data from your webhook to the integration or API caller. Arbitrary JSON objects are supported. When provided, Dialogflow uses this field to populate QueryResult.webhook_payload sent to the integration or API caller. This field is also used by the [Google Assistant integration](https://cloud.google.com/dialogflow/docs/integrations/aog) for rich response messages. See the format definition at [Google Assistant Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
+"type": "object"
+},
+"sessionEntityTypes": {
+"description": "Optional. Additional session entity types to replace or extend developer entity types with. The entity synonyms apply to all languages and persist for the session. Setting this data from a webhook overwrites the session entity types that have been set using `detectIntent`, `streamingDetectIntent` or SessionEntityType management methods.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2SessionEntityType"
+},
+"type": "array"
+},
+"source": {
+"description": "Optional. A custom field used to identify the webhook source. Arbitrary strings are supported. When provided, Dialogflow uses this field to populate QueryResult.webhook_source sent to the integration or API caller.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Agent": {
+"description": "A Dialogflow agent is a virtual agent that handles conversations with your end-users. It is a natural language understanding module that understands the nuances of human language. Dialogflow translates end-user text or audio during a conversation to structured data that your apps and services can understand. You design and build a Dialogflow agent to handle the types of conversations required for your system. For more information about agents, see the [Agent guide](https://cloud.google.com/dialogflow/docs/agents-overview). ",
+"id": "GoogleCloudDialogflowV2beta1Agent",
+"properties": {
+"apiVersion": {
+"description": "Optional. API version displayed in Dialogflow console. If not specified, V2 API is assumed. Clients are free to query different service endpoints for different API versions. However, bots connectors and webhook calls will follow the specified API version.",
+"enum": [
+"API_VERSION_UNSPECIFIED",
+"API_VERSION_V1",
+"API_VERSION_V2",
+"API_VERSION_V2_BETA_1"
+],
+"enumDescriptions": [
+"Not specified.",
+"Legacy V1 API.",
+"V2 API.",
+"V2beta1 API."
+],
+"type": "string"
+},
+"avatarUri": {
+"description": "Optional. The URI of the agent's avatar. Avatars are used throughout the Dialogflow console and in the self-hosted [Web Demo](https://cloud.google.com/dialogflow/docs/integrations/web-demo) integration.",
+"type": "string"
+},
+"classificationThreshold": {
+"description": "Optional. To filter out false positive results and still get variety in matched natural language inputs for your agent, you can tune the machine learning classification threshold. If the returned score value is less than the threshold value, then a fallback intent will be triggered or, if there are no fallback intents defined, no intent will be triggered. The score values range from 0.0 (completely uncertain) to 1.0 (completely certain). If set to 0.0, the default of 0.3 is used.",
+"format": "float",
+"type": "number"
+},
+"defaultLanguageCode": {
+"description": "Required. The default language of the agent as a language tag. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. This field cannot be set by the `Update` method.",
+"type": "string"
+},
+"description": {
+"description": "Optional. The description of this agent. The maximum length is 500 characters. If exceeded, the request is rejected.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The name of this agent.",
+"type": "string"
+},
+"enableLogging": {
+"description": "Optional. Determines whether this agent should log conversation queries.",
+"type": "boolean"
+},
+"matchMode": {
+"deprecated": true,
+"description": "Optional. Determines how intents are detected from user queries.",
+"enum": [
+"MATCH_MODE_UNSPECIFIED",
+"MATCH_MODE_HYBRID",
+"MATCH_MODE_ML_ONLY"
+],
+"enumDescriptions": [
+"Not specified.",
+"Best for agents with a small number of examples in intents and/or wide use of templates syntax and composite entities.",
+"Can be used for agents with a large number of examples in intents, especially the ones using @sys.any or very large custom entities."
+],
+"type": "string"
+},
+"parent": {
+"description": "Required. The project of this agent. Format: `projects/` or `projects//locations/`",
+"type": "string"
+},
+"supportedLanguageCodes": {
+"description": "Optional. The list of all languages supported by this agent (except for the `default_language_code`).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"tier": {
+"description": "Optional. The agent tier. If not specified, TIER_STANDARD is assumed.",
+"enum": [
+"TIER_UNSPECIFIED",
+"TIER_STANDARD",
+"TIER_ENTERPRISE",
+"TIER_ENTERPRISE_PLUS"
+],
+"enumDeprecated": [
+false,
+false,
+false,
+true
+],
+"enumDescriptions": [
+"Not specified. This value should never be used.",
+"Trial Edition, previously known as Standard Edition.",
+"Essentials Edition, previously known as Enterprise Essential Edition.",
+"Essentials Edition (same as TIER_ENTERPRISE), previously known as Enterprise Plus Edition."
+],
+"type": "string"
+},
+"timeZone": {
+"description": "Required. The time zone of this agent from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AgentAssistantFeedback": {
+"description": "Detail feedback of Agent Assistant result.",
+"id": "GoogleCloudDialogflowV2beta1AgentAssistantFeedback",
+"properties": {
+"answerRelevance": {
+"description": "Optional. Whether or not the suggested answer is relevant. For example: * Query: \"Can I change my mailing address?\" * Suggested document says: \"Items must be returned/exchanged within 60 days of the purchase date.\" * answer_relevance: AnswerRelevance.IRRELEVANT",
+"enum": [
+"ANSWER_RELEVANCE_UNSPECIFIED",
+"IRRELEVANT",
+"RELEVANT"
+],
+"enumDescriptions": [
+"Answer relevance unspecified.",
+"Answer is irrelevant to query.",
+"Answer is relevant to query."
+],
+"type": "string"
+},
+"documentCorrectness": {
+"description": "Optional. Whether or not the information in the document is correct. For example: * Query: \"Can I return the package in 2 days once received?\" * Suggested document says: \"Items must be returned/exchanged within 60 days of the purchase date.\" * Ground truth: \"No return or exchange is allowed.\" * [document_correctness]: INCORRECT",
+"enum": [
+"DOCUMENT_CORRECTNESS_UNSPECIFIED",
+"INCORRECT",
+"CORRECT"
+],
+"enumDescriptions": [
+"Document correctness unspecified.",
+"Information in document is incorrect.",
+"Information in document is correct."
+],
+"type": "string"
+},
+"documentEfficiency": {
+"description": "Optional. Whether or not the suggested document is efficient. For example, if the document is poorly written, hard to understand, hard to use or too long to find useful information, document_efficiency is DocumentEfficiency.INEFFICIENT.",
+"enum": [
+"DOCUMENT_EFFICIENCY_UNSPECIFIED",
+"INEFFICIENT",
+"EFFICIENT"
+],
+"enumDescriptions": [
+"Document efficiency unspecified.",
+"Document is inefficient.",
+"Document is efficient."
+],
+"type": "string"
+},
+"knowledgeAssistFeedback": {
+"$ref": "GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeAssistFeedback",
+"description": "Optional. Feedback for knowledge assist."
+},
+"knowledgeSearchFeedback": {
+"$ref": "GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeSearchFeedback",
+"description": "Optional. Feedback for knowledge search."
+},
+"summarizationFeedback": {
+"$ref": "GoogleCloudDialogflowV2beta1AgentAssistantFeedbackSummarizationFeedback",
+"description": "Feedback for conversation summarization."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeAssistFeedback": {
+"description": "Feedback for knowledge assist.",
+"id": "GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeAssistFeedback",
+"properties": {
+"answerCopied": {
+"description": "Whether the suggested answer was copied by the human agent. If the value is set to be true, AnswerFeedback.clicked will be updated to be true.",
+"type": "boolean"
+},
+"clickedUris": {
+"description": "The URIs clicked by the human agent. The value is appended for each UpdateAnswerRecordRequest. If the value is not empty, AnswerFeedback.clicked will be updated to be true.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeSearchFeedback": {
+"description": "Feedback for knowledge search.",
+"id": "GoogleCloudDialogflowV2beta1AgentAssistantFeedbackKnowledgeSearchFeedback",
+"properties": {
+"answerCopied": {
+"description": "Whether the answer was copied by the human agent or not. If the value is set to be true, AnswerFeedback.clicked will be updated to be true.",
+"type": "boolean"
+},
+"clickedUris": {
+"description": "The URIs clicked by the human agent. The value is appended for each UpdateAnswerRecordRequest. If the value is not empty, AnswerFeedback.clicked will be updated to be true.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AgentAssistantFeedbackSummarizationFeedback": {
+"description": "Feedback for conversation summarization.",
+"id": "GoogleCloudDialogflowV2beta1AgentAssistantFeedbackSummarizationFeedback",
+"properties": {
+"startTimestamp": {
+"description": "Timestamp when composing of the summary starts.",
+"format": "google-datetime",
+"type": "string"
+},
+"submitTimestamp": {
+"description": "Timestamp when the summary was submitted.",
+"format": "google-datetime",
+"type": "string"
+},
+"summaryText": {
+"description": "Text of actual submitted summary.",
+"type": "string"
+},
+"textSections": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Actual text sections of submitted summary.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AgentAssistantRecord": {
+"description": "Represents a record of a human agent assistant answer.",
+"id": "GoogleCloudDialogflowV2beta1AgentAssistantRecord",
+"properties": {
+"articleSuggestionAnswer": {
+"$ref": "GoogleCloudDialogflowV2beta1ArticleAnswer",
+"description": "Output only. The article suggestion answer.",
+"readOnly": true
+},
+"dialogflowAssistAnswer": {
+"$ref": "GoogleCloudDialogflowV2beta1DialogflowAssistAnswer",
+"description": "Output only. The Dialogflow assist answer.",
+"readOnly": true
+},
+"faqAnswer": {
+"$ref": "GoogleCloudDialogflowV2beta1FaqAnswer",
+"description": "Output only. The FAQ answer.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AnalyzeContentRequest": {
+"description": "The request message for Participants.AnalyzeContent.",
+"id": "GoogleCloudDialogflowV2beta1AnalyzeContentRequest",
+"properties": {
+"assistQueryParams": {
+"$ref": "GoogleCloudDialogflowV2beta1AssistQueryParameters",
+"description": "Parameters for a human assist query."
+},
+"audioInput": {
+"$ref": "GoogleCloudDialogflowV2beta1AudioInput",
+"description": "The natural language speech audio to be processed."
+},
+"cxCurrentPage": {
+"description": "The unique identifier of the CX page to override the `current_page` in the session. Format: `projects//locations//agents//flows//pages/`. If `cx_current_page` is specified, the previous state of the session will be ignored by Dialogflow CX, including the previous page and the previous session parameters. In most cases, `cx_current_page` and `cx_parameters` should be configured together to direct a session to a specific state. Note: this field should only be used if you are connecting to a Dialogflow CX agent.",
+"type": "string"
+},
+"cxParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Additional parameters to be put into Dialogflow CX session parameters. To remove a parameter from the session, clients should explicitly set the parameter value to null. Note: this field should only be used if you are connecting to a Dialogflow CX agent.",
+"type": "object"
+},
+"eventInput": {
+"$ref": "GoogleCloudDialogflowV2beta1EventInput",
+"description": "An input event to send to Dialogflow."
+},
+"intentInput": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentInput",
+"description": "The intent to be triggered on V3 agent."
+},
+"messageSendTime": {
+"description": "Optional. The send time of the message from end user or human agent's perspective. It is used for identifying the same message under one participant. For BatchCreateMessages API only: Given two messages under the same participant: * If send time are different regardless of whether the content of the messages are exactly the same, the conversation will regard them as two distinct messages sent by the participant. * If send time is the same regardless of whether the content of the messages are exactly the same, the conversation will regard them as same message, and ignore the message received later. If the value is not provided, a new request will always be regarded as a new message without any de-duplication.",
+"format": "google-datetime",
+"type": "string"
+},
+"queryParams": {
+"$ref": "GoogleCloudDialogflowV2beta1QueryParameters",
+"description": "Parameters for a Dialogflow virtual-agent query."
+},
+"replyAudioConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1OutputAudioConfig",
+"description": "Speech synthesis configuration. The speech synthesis settings for a virtual agent that may be configured for the associated conversation profile are not used when calling AnalyzeContent. If this configuration is not supplied, speech synthesis is disabled."
+},
+"requestId": {
+"description": "A unique identifier for this request. Restricted to 36 ASCII characters. A random UUID is recommended. This request is only idempotent if a `request_id` is provided.",
+"type": "string"
+},
+"suggestionInput": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestionInput",
+"description": "An input representing the selection of a suggestion."
+},
+"textInput": {
+"$ref": "GoogleCloudDialogflowV2beta1TextInput",
+"description": "The natural language text to be processed."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AnalyzeContentResponse": {
+"description": "The response message for Participants.AnalyzeContent.",
+"id": "GoogleCloudDialogflowV2beta1AnalyzeContentResponse",
+"properties": {
+"automatedAgentReply": {
+"$ref": "GoogleCloudDialogflowV2beta1AutomatedAgentReply",
+"description": "Optional. Only set if a Dialogflow automated agent has responded. Note that: AutomatedAgentReply.detect_intent_response.output_audio and AutomatedAgentReply.detect_intent_response.output_audio_config are always empty, use reply_audio instead."
+},
+"dtmfParameters": {
+"$ref": "GoogleCloudDialogflowV2beta1DtmfParameters",
+"description": "Indicates the parameters of DTMF."
+},
+"endUserSuggestionResults": {
+"description": "The suggestions for end user. The order is the same as HumanAgentAssistantConfig.SuggestionConfig.feature_configs of HumanAgentAssistantConfig.end_user_suggestion_config. Same as human_agent_suggestion_results, any failure of Agent Assist features will not lead to the overall failure of an AnalyzeContent API call. Instead, the features will fail silently with the error field set in the corresponding SuggestionResult.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestionResult"
+},
+"type": "array"
+},
+"humanAgentSuggestionResults": {
+"description": "The suggestions for most recent human agent. The order is the same as HumanAgentAssistantConfig.SuggestionConfig.feature_configs of HumanAgentAssistantConfig.human_agent_suggestion_config. Note that any failure of Agent Assist features will not lead to the overall failure of an AnalyzeContent API call. Instead, the features will fail silently with the error field set in the corresponding SuggestionResult.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestionResult"
+},
+"type": "array"
+},
+"message": {
+"$ref": "GoogleCloudDialogflowV2beta1Message",
+"description": "Output only. Message analyzed by CCAI."
+},
+"replyAudio": {
+"$ref": "GoogleCloudDialogflowV2beta1OutputAudio",
+"description": "Optional. The audio data bytes encoded as specified in the request. This field is set if: - `reply_audio_config` was specified in the request, or - The automated agent responded with audio to play to the user. In such case, `reply_audio.config` contains settings used to synthesize the speech. In some scenarios, multiple output audio fields may be present in the response structure. In these cases, only the top-most-level audio output has content."
+},
+"replyText": {
+"description": "Output only. The output text content. This field is set if the automated agent responded with text to show to the user.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AnnotatedMessagePart": {
+"description": "Represents a part of a message possibly annotated with an entity. The part can be an entity or purely a part of the message between two entities or message start/end.",
+"id": "GoogleCloudDialogflowV2beta1AnnotatedMessagePart",
+"properties": {
+"entityType": {
+"description": "Optional. The [Dialogflow system entity type](https://cloud.google.com/dialogflow/docs/reference/system-entities) of this message part. If this is empty, Dialogflow could not annotate the phrase part with a system entity.",
+"type": "string"
+},
+"formattedValue": {
+"description": "Optional. The [Dialogflow system entity formatted value ](https://cloud.google.com/dialogflow/docs/reference/system-entities) of this message part. For example for a system entity of type `@sys.unit-currency`, this may contain: { \"amount\": 5, \"currency\": \"USD\" } ",
+"type": "any"
+},
+"text": {
+"description": "Required. A part of a message possibly annotated with an entity.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AnswerFeedback": {
+"description": "Represents feedback the customer has about the quality & correctness of a certain answer in a conversation.",
+"id": "GoogleCloudDialogflowV2beta1AnswerFeedback",
+"properties": {
+"agentAssistantDetailFeedback": {
+"$ref": "GoogleCloudDialogflowV2beta1AgentAssistantFeedback",
+"description": "Optional. Detail feedback of agent assistant suggestions."
+},
+"clickTime": {
+"description": "Time when the answer/item was clicked.",
+"format": "google-datetime",
+"type": "string"
+},
+"clicked": {
+"description": "Indicates whether the answer/item was clicked by the human agent or not. Default to false. For knowledge search, the answer record is considered to be clicked if the answer was copied or any URI was clicked.",
+"type": "boolean"
+},
+"correctnessLevel": {
+"description": "The correctness level of the specific answer.",
+"enum": [
+"CORRECTNESS_LEVEL_UNSPECIFIED",
+"NOT_CORRECT",
+"PARTIALLY_CORRECT",
+"FULLY_CORRECT"
+],
+"enumDescriptions": [
+"Correctness level unspecified.",
+"Answer is totally wrong.",
+"Answer is partially correct.",
+"Answer is fully correct."
+],
+"type": "string"
+},
+"displayTime": {
+"description": "Time when the answer/item was displayed.",
+"format": "google-datetime",
+"type": "string"
+},
+"displayed": {
+"description": "Indicates whether the answer/item was displayed to the human agent in the agent desktop UI. Default to false.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AnswerRecord": {
+"description": "Answer records are records to manage answer history and feedbacks for Dialogflow. Currently, answer record includes: - human agent assistant article suggestion - human agent assistant faq article It doesn't include: - `DetectIntent` intent matching - `DetectIntent` knowledge Answer records are not related to the conversation history in the Dialogflow Console. A Record is generated even when the end-user disables conversation history in the console. Records are created when there's a human agent assistant suggestion generated. A typical workflow for customers provide feedback to an answer is: 1. For human agent assistant, customers get suggestion via ListSuggestions API. Together with the answers, AnswerRecord.name are returned to the customers. 2. The customer uses the AnswerRecord.name to call the UpdateAnswerRecord method to send feedback about a specific answer that they believe is wrong.",
+"id": "GoogleCloudDialogflowV2beta1AnswerRecord",
+"properties": {
+"agentAssistantRecord": {
+"$ref": "GoogleCloudDialogflowV2beta1AgentAssistantRecord",
+"description": "Output only. The record for human agent assistant."
+},
+"answerFeedback": {
+"$ref": "GoogleCloudDialogflowV2beta1AnswerFeedback",
+"description": "Optional. The AnswerFeedback for this record. You can set this with AnswerRecords.UpdateAnswerRecord in order to give us feedback about this answer."
+},
+"name": {
+"description": "The unique identifier of this answer record. Required for AnswerRecords.UpdateAnswerRecord method. Format: `projects//locations//answerRecords/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ArticleAnswer": {
+"description": "Represents article answer.",
+"id": "GoogleCloudDialogflowV2beta1ArticleAnswer",
+"properties": {
+"answerRecord": {
+"description": "The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map that contains metadata about the answer and the document from which it originates.",
+"type": "object"
+},
+"snippets": {
+"description": "Output only. Article snippets.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"title": {
+"description": "The article title.",
+"type": "string"
+},
+"uri": {
+"description": "The article URI.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AssistQueryParameters": {
+"description": "Represents the parameters of human assist query.",
+"id": "GoogleCloudDialogflowV2beta1AssistQueryParameters",
+"properties": {
+"documentsMetadataFilters": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their Document.metadata. Multiple values for a metadata key should be concatenated by comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values will be ``` documents_metadata_filters { key: \"market\" value: \"US,CA\" } documents_metadata_filters { key: \"user\" value: \"agent\" } ```",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AudioInput": {
+"description": "Represents the natural language speech audio to be processed.",
+"id": "GoogleCloudDialogflowV2beta1AudioInput",
+"properties": {
+"audio": {
+"description": "Required. The natural language speech audio to be processed. A single request can contain up to 2 minutes of speech audio data. The transcribed text cannot contain more than 256 bytes for virtual agent interactions.",
+"format": "byte",
+"type": "string"
+},
+"config": {
+"$ref": "GoogleCloudDialogflowV2beta1InputAudioConfig",
+"description": "Required. Instructs the speech recognizer how to process the speech audio."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AutomatedAgentConfig": {
+"description": "Defines the Automated Agent to connect to a conversation.",
+"id": "GoogleCloudDialogflowV2beta1AutomatedAgentConfig",
+"properties": {
+"agent": {
+"description": "Required. ID of the Dialogflow agent environment to use. This project needs to either be the same project as the conversation or you need to grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow API Service Agent` role in this project. - For ES agents, use format: `projects//locations//agent/environments/`. If environment is not specified, the default `draft` environment is used. Refer to [DetectIntentRequest](/dialogflow/docs/reference/rpc/google.cloud.dialogflow.v2beta1#google.cloud.dialogflow.v2beta1.DetectIntentRequest) for more details. - For CX agents, use format `projects//locations//agents//environments/`. If environment is not specified, the default `draft` environment is used.",
+"type": "string"
+},
+"sessionTtl": {
+"description": "Optional. Configure lifetime of the Dialogflow session. By default, a Dialogflow CX session remains active and its data is stored for 30 minutes after the last request is sent for the session. This value should be no longer than 1 day.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1AutomatedAgentReply": {
+"description": "Represents a response from an automated agent.",
+"id": "GoogleCloudDialogflowV2beta1AutomatedAgentReply",
+"properties": {
+"allowCancellation": {
+"description": "Indicates whether the partial automated agent reply is interruptible when a later reply message arrives. e.g. if the agent specified some music as partial response, it can be cancelled.",
+"type": "boolean"
+},
+"automatedAgentReplyType": {
+"description": "AutomatedAgentReply type.",
+"enum": [
+"AUTOMATED_AGENT_REPLY_TYPE_UNSPECIFIED",
+"PARTIAL",
+"FINAL"
+],
+"enumDescriptions": [
+"Not specified. This should never happen.",
+"Partial reply. e.g. Aggregated responses in a `Fulfillment` that enables `return_partial_response` can be returned as partial reply. WARNING: partial reply is not eligible for barge-in.",
+"Final reply."
+],
+"type": "string"
+},
+"callCompanionAuthCode": {
+"description": "The auth code for accessing Call Companion UI.",
+"format": "byte",
+"type": "string"
+},
+"cxCurrentPage": {
+"description": "The unique identifier of the current Dialogflow CX conversation page. Format: `projects//locations//agents//flows//pages/`.",
+"type": "string"
+},
+"cxSessionParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"deprecated": true,
+"description": "The collection of current Dialogflow CX agent session parameters at the time of this response. Deprecated: Use `parameters` instead.",
+"type": "object"
+},
+"detectIntentResponse": {
+"$ref": "GoogleCloudDialogflowV2beta1DetectIntentResponse",
+"description": "Response of the Dialogflow Sessions.DetectIntent call."
+},
+"event": {
+"description": "Event name if an event is triggered for the query.",
+"type": "string"
+},
+"intent": {
+"description": "Name of the intent if an intent is matched for the query. For a V2 query, the value format is `projects//locations/ /agent/intents/`. For a V3 query, the value format is `projects//locations/ /agents//intents/`.",
+"type": "string"
+},
+"matchConfidence": {
+"description": "The confidence of the match. Values range from 0.0 (completely uncertain) to 1.0 (completely certain). This value is for informational purpose only and is only used to help match the best intent within the classification threshold. This value may change for the same end-user expression at any time due to a model retraining or change in implementation.",
+"format": "float",
+"type": "number"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The collection of current parameters at the time of this response.",
+"type": "object"
+},
+"responseMessages": {
+"description": "Response messages from the automated agent.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1ResponseMessage"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BargeInConfig": {
+"description": "Configuration of the barge-in behavior. Barge-in instructs the API to return a detected utterance at a proper time while the client is playing back the response audio from a previous request. When the client sees the utterance, it should stop the playback and immediately get ready for receiving the responses for the current request. The barge-in handling requires the client to start streaming audio input as soon as it starts playing back the audio from the previous response. The playback is modeled into two phases: * No barge-in phase: which goes first and during which speech detection should not be carried out. * Barge-in phase: which follows the no barge-in phase and during which the API starts speech detection and may inform the client that an utterance has been detected. Note that no-speech event is not expected in this phase. The client provides this configuration in terms of the durations of those two phases. The durations are measured in terms of the audio length from the start of the input audio. The flow goes like below: ``` --> Time without speech detection | utterance only | utterance or no-speech event | | +-------------+ | +------------+ | +---------------+ ----------+ no barge-in +-|-+ barge-in +-|-+ normal period +----------- +-------------+ | +------------+ | +---------------+ ``` No-speech event is a response with END_OF_UTTERANCE without any transcript following up.",
+"id": "GoogleCloudDialogflowV2beta1BargeInConfig",
+"properties": {
+"noBargeInDuration": {
+"description": "Duration that is not eligible for barge-in at the beginning of the input audio.",
+"format": "google-duration",
+"type": "string"
+},
+"totalDuration": {
+"description": "Total duration for the playback at the beginning of the input audio.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchCreateEntitiesRequest": {
+"description": "The request message for EntityTypes.BatchCreateEntities.",
+"id": "GoogleCloudDialogflowV2beta1BatchCreateEntitiesRequest",
+"properties": {
+"entities": {
+"description": "Required. The entities to create.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityTypeEntity"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchCreateMessagesRequest": {
+"description": "The request message for Conversations.BatchCreateMessagesRequest.",
+"id": "GoogleCloudDialogflowV2beta1BatchCreateMessagesRequest",
+"properties": {
+"requests": {
+"description": "Required. A maximum of 300 messages can be created in a batch. CreateMessageRequest.message.send_time is required. All created messages will have identical Message.create_time.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1CreateMessageRequest"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchCreateMessagesResponse": {
+"description": "The request message for Conversations.BatchCreateMessagesResponse.",
+"id": "GoogleCloudDialogflowV2beta1BatchCreateMessagesResponse",
+"properties": {
+"messages": {
+"description": "Messages created.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Message"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchDeleteEntitiesRequest": {
+"description": "The request message for EntityTypes.BatchDeleteEntities.",
+"id": "GoogleCloudDialogflowV2beta1BatchDeleteEntitiesRequest",
+"properties": {
+"entityValues": {
+"description": "Required. The reference `values` of the entities to delete. Note that these are not fully-qualified names, i.e. they don't start with `projects/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchDeleteEntityTypesRequest": {
+"description": "The request message for EntityTypes.BatchDeleteEntityTypes.",
+"id": "GoogleCloudDialogflowV2beta1BatchDeleteEntityTypesRequest",
+"properties": {
+"entityTypeNames": {
+"description": "Required. The names entity types to delete. All names must point to the same agent as `parent`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchDeleteIntentsRequest": {
+"description": "The request message for Intents.BatchDeleteIntents.",
+"id": "GoogleCloudDialogflowV2beta1BatchDeleteIntentsRequest",
+"properties": {
+"intents": {
+"description": "Required. The collection of intents to delete. Only intent `name` must be filled in.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchUpdateEntitiesRequest": {
+"description": "The request message for EntityTypes.BatchUpdateEntities.",
+"id": "GoogleCloudDialogflowV2beta1BatchUpdateEntitiesRequest",
+"properties": {
+"entities": {
+"description": "Required. The entities to update or create.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityTypeEntity"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchUpdateEntityTypesRequest": {
+"description": "The request message for EntityTypes.BatchUpdateEntityTypes.",
+"id": "GoogleCloudDialogflowV2beta1BatchUpdateEntityTypesRequest",
+"properties": {
+"entityTypeBatchInline": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityTypeBatch",
+"description": "The collection of entity types to update or create."
+},
+"entityTypeBatchUri": {
+"description": "The URI to a Google Cloud Storage file containing entity types to update or create. The file format can either be a serialized proto (of EntityBatch type) or a JSON object. Note: The URI must start with \"gs://\".",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchUpdateEntityTypesResponse": {
+"description": "The response message for EntityTypes.BatchUpdateEntityTypes.",
+"id": "GoogleCloudDialogflowV2beta1BatchUpdateEntityTypesResponse",
+"properties": {
+"entityTypes": {
+"description": "The collection of updated or created entity types.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchUpdateIntentsRequest": {
+"description": "The request message for Intents.BatchUpdateIntents.",
+"id": "GoogleCloudDialogflowV2beta1BatchUpdateIntentsRequest",
+"properties": {
+"intentBatchInline": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentBatch",
+"description": "The collection of intents to update or create."
+},
+"intentBatchUri": {
+"description": "The URI to a Google Cloud Storage file containing intents to update or create. The file format can either be a serialized proto (of IntentBatch type) or JSON object. Note: The URI must start with \"gs://\".",
+"type": "string"
+},
+"intentView": {
+"description": "Optional. The resource view to apply to the returned intent.",
+"enum": [
+"INTENT_VIEW_UNSPECIFIED",
+"INTENT_VIEW_FULL"
+],
+"enumDescriptions": [
+"Training phrases field is not populated in the response.",
+"All fields are populated."
+],
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language used to access language-specific data. If not specified, the agent's default language is used. For more information, see [Multilingual intent and entity data](https://cloud.google.com/dialogflow/docs/agents-multilingual#intent-entity).",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The mask to control which fields get updated.",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1BatchUpdateIntentsResponse": {
+"description": "The response message for Intents.BatchUpdateIntents.",
+"id": "GoogleCloudDialogflowV2beta1BatchUpdateIntentsResponse",
+"properties": {
+"intents": {
+"description": "The collection of updated or created intents.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ClearSuggestionFeatureConfigOperationMetadata": {
+"description": "Metadata for a ConversationProfile.ClearSuggestionFeatureConfig operation.",
+"id": "GoogleCloudDialogflowV2beta1ClearSuggestionFeatureConfigOperationMetadata",
+"properties": {
+"conversationProfile": {
+"description": "The resource name of the conversation profile. Format: `projects//locations//conversationProfiles/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp whe the request was created. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+},
+"participantRole": {
+"description": "Required. The participant role to remove the suggestion feature config. Only HUMAN_AGENT or END_USER can be used.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"type": "string"
+},
+"suggestionFeatureType": {
+"description": "Required. The type of the suggestion feature to remove.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"ARTICLE_SUGGESTION",
+"FAQ",
+"SMART_REPLY",
+"DIALOGFLOW_ASSIST",
+"CONVERSATION_SUMMARIZATION",
+"KNOWLEDGE_SEARCH",
+"KNOWLEDGE_ASSIST"
+],
+"enumDescriptions": [
+"Unspecified feature type.",
+"Run article suggestion model for chat.",
+"Run FAQ model.",
+"Run smart reply model for chat.",
+"Run Dialogflow assist model for chat, which will return automated agent response as suggestion.",
+"Run conversation summarization model for chat.",
+"Run knowledge search with text input from agent or text generated query.",
+"Run knowledge assist with automatic query generation."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ClearSuggestionFeatureConfigRequest": {
+"description": "The request message for ConversationProfiles.ClearFeature.",
+"id": "GoogleCloudDialogflowV2beta1ClearSuggestionFeatureConfigRequest",
+"properties": {
+"participantRole": {
+"description": "Required. The participant role to remove the suggestion feature config. Only HUMAN_AGENT or END_USER can be used.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"type": "string"
+},
+"suggestionFeatureType": {
+"description": "Required. The type of the suggestion feature to remove.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"ARTICLE_SUGGESTION",
+"FAQ",
+"SMART_REPLY",
+"DIALOGFLOW_ASSIST",
+"CONVERSATION_SUMMARIZATION",
+"KNOWLEDGE_SEARCH",
+"KNOWLEDGE_ASSIST"
+],
+"enumDescriptions": [
+"Unspecified feature type.",
+"Run article suggestion model for chat.",
+"Run FAQ model.",
+"Run smart reply model for chat.",
+"Run Dialogflow assist model for chat, which will return automated agent response as suggestion.",
+"Run conversation summarization model for chat.",
+"Run knowledge search with text input from agent or text generated query.",
+"Run knowledge assist with automatic query generation."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1CompileSuggestionRequest": {
+"deprecated": true,
+"description": "The request message for Participants.CompileSuggestion.",
+"id": "GoogleCloudDialogflowV2beta1CompileSuggestionRequest",
+"properties": {
+"contextSize": {
+"description": "Optional. Max number of messages prior to and including [latest_message] to use as context when compiling the suggestion. If zero or less than zero, 20 is used.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "Optional. The name of the latest conversation message to compile suggestion for. If empty, it will be the latest message of the conversation. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1CompileSuggestionResponse": {
+"deprecated": true,
+"description": "The response message for Participants.CompileSuggestion.",
+"id": "GoogleCloudDialogflowV2beta1CompileSuggestionResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the CompileSuggestionRequest.context_size field in the request if there aren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"suggestion": {
+"$ref": "GoogleCloudDialogflowV2beta1Suggestion",
+"description": "The compiled suggestion."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1CompleteConversationRequest": {
+"description": "The request message for Conversations.CompleteConversation.",
+"id": "GoogleCloudDialogflowV2beta1CompleteConversationRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Connection": {
+"description": "Represents a connection for SIP Trunk.",
+"id": "GoogleCloudDialogflowV2beta1Connection",
+"properties": {
+"connectionId": {
+"description": "Output only. The unique identifier of the SIP Trunk connection.",
+"readOnly": true,
+"type": "string"
+},
+"errorDetails": {
+"$ref": "GoogleCloudDialogflowV2beta1ConnectionErrorDetails",
+"description": "Output only. The error details for the connection. Only populated when authentication errors occur.",
+"readOnly": true
+},
+"state": {
+"description": "Output only. State of the connection.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CONNECTED",
+"DISCONNECTED",
+"AUTHENTICATION_FAILED",
+"KEEPALIVE"
+],
+"enumDescriptions": [
+"SIP Trunk connection state is Not specified.",
+"SIP Trunk connection is connected.",
+"SIP Trunk connection is disconnected.",
+"SIP Trunk connection has authentication error.",
+"SIP Trunk connection is keepalive."
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. When the connection status changed.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ConnectionErrorDetails": {
+"description": "The error details of Sip Trunk connection authentication.",
+"id": "GoogleCloudDialogflowV2beta1ConnectionErrorDetails",
+"properties": {
+"certificateState": {
+"description": "Output only. The status of the certificate authentication.",
+"enum": [
+"CERTIFICATE_STATE_UNSPECIFIED",
+"CERTIFICATE_VALID",
+"CERTIFICATE_INVALID",
+"CERTIFICATE_EXPIRED",
+"CERTIFICATE_HOSTNAME_NOT_FOUND",
+"CERTIFICATE_UNAUTHENTICATED",
+"CERTIFICATE_TRUST_STORE_NOT_FOUND",
+"CERTIFICATE_HOSTNAME_INVALID_FORMAT",
+"CERTIFICATE_QUOTA_EXCEEDED"
+],
+"enumDescriptions": [
+"Certificate state is not specified.",
+"Certificate is valid.",
+"Catch all for any error not specified.",
+"Certificate leaf node has expired.",
+"There is no hostname defined to authenticate in SipTrunkingServer.",
+"No path found from the leaf certificate to any root.",
+"Trust store does not exist.",
+"Hostname has invalid format.",
+"Certificate has exhausted its quota."
+],
+"readOnly": true,
+"type": "string"
+},
+"errorMessage": {
+"description": "The error message provided from SIP trunking auth service",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Context": {
+"description": "Dialogflow contexts are similar to natural language context. If a person says to you \"they are orange\", you need context in order to understand what \"they\" is referring to. Similarly, for Dialogflow to handle an end-user expression like that, it needs to be provided with context in order to correctly match an intent. Using contexts, you can control the flow of a conversation. You can configure contexts for an intent by setting input and output contexts, which are identified by string names. When an intent is matched, any configured output contexts for that intent become active. While any contexts are active, Dialogflow is more likely to match intents that are configured with input contexts that correspond to the currently active contexts. For more information about context, see the [Contexts guide](https://cloud.google.com/dialogflow/docs/contexts-overview).",
+"id": "GoogleCloudDialogflowV2beta1Context",
+"properties": {
+"lifespanCount": {
+"description": "Optional. The number of conversational query requests after which the context expires. The default is `0`. If set to `0`, the context expires immediately. Contexts expire automatically after 20 minutes if there are no matching queries.",
+"format": "int32",
+"type": "integer"
+},
+"name": {
+"description": "Required. The unique identifier of the context. Supported formats: - `projects//agent/sessions//contexts/`, - `projects//locations//agent/sessions//contexts/`, - `projects//agent/environments//users//sessions//contexts/`, - `projects//locations//agent/environments//users//sessions//contexts/`, The `Context ID` is always converted to lowercase, may only contain characters in `a-zA-Z0-9_-%` and may be at most 250 bytes long. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. The following context names are reserved for internal use by Dialogflow. You should not use these contexts or create contexts with these names: * `__system_counters__` * `*_id_dialog_context` * `*_dialog_params_size`",
+"type": "string"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. The collection of parameters associated with this context. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Conversation": {
+"description": "Represents a conversation. A conversation is an interaction between an agent, including live agents and Dialogflow agents, and a support customer. Conversations can include phone calls and text-based chat sessions.",
+"id": "GoogleCloudDialogflowV2beta1Conversation",
+"properties": {
+"conversationProfile": {
+"description": "Required. The Conversation Profile to be used to configure this Conversation. This field cannot be updated. Format: `projects//locations//conversationProfiles/`.",
+"type": "string"
+},
+"conversationStage": {
+"description": "Optional. The stage of a conversation. It indicates whether the virtual agent or a human agent is handling the conversation. If the conversation is created with the conversation profile that has Dialogflow config set, defaults to ConversationStage.VIRTUAL_AGENT_STAGE; Otherwise, defaults to ConversationStage.HUMAN_ASSIST_STAGE. If the conversation is created with the conversation profile that has Dialogflow config set but explicitly sets conversation_stage to ConversationStage.HUMAN_ASSIST_STAGE, it skips ConversationStage.VIRTUAL_AGENT_STAGE stage and directly goes to ConversationStage.HUMAN_ASSIST_STAGE.",
+"enum": [
+"CONVERSATION_STAGE_UNSPECIFIED",
+"VIRTUAL_AGENT_STAGE",
+"HUMAN_ASSIST_STAGE"
+],
+"enumDescriptions": [
+"Unknown. Should never be used after a conversation is successfully created.",
+"The conversation should return virtual agent responses into the conversation.",
+"The conversation should not provide responses, just listen and provide suggestions."
+],
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the conversation was finished.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"lifecycleState": {
+"description": "Output only. The current state of the Conversation.",
+"enum": [
+"LIFECYCLE_STATE_UNSPECIFIED",
+"IN_PROGRESS",
+"COMPLETED"
+],
+"enumDescriptions": [
+"Unknown.",
+"Conversation is currently open for media analysis.",
+"Conversation has been completed."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Identifier. The unique identifier of this conversation. Format: `projects//locations//conversations/`.",
+"readOnly": true,
+"type": "string"
+},
+"phoneNumber": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationPhoneNumber",
+"description": "Output only. Required if the conversation is to be connected over telephony.",
+"readOnly": true
+},
+"startTime": {
+"description": "Output only. The time the conversation was started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"telephonyConnectionInfo": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfo",
+"description": "Output only. The telephony connection information.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ConversationContext": {
+"description": "Context of the conversation, including transcripts.",
+"id": "GoogleCloudDialogflowV2beta1ConversationContext",
+"properties": {
+"messageEntries": {
+"description": "Optional. List of message transcripts in the conversation.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1MessageEntry"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ConversationEvent": {
+"description": "Represents a notification sent to Pub/Sub subscribers for conversation lifecycle events.",
+"id": "GoogleCloudDialogflowV2beta1ConversationEvent",
+"properties": {
+"conversation": {
+"description": "Required. The unique identifier of the conversation this notification refers to. Format: `projects//conversations/`.",
+"type": "string"
+},
+"errorStatus": {
+"$ref": "GoogleRpcStatus",
+"description": "Optional. More detailed information about an error. Only set for type UNRECOVERABLE_ERROR_IN_PHONE_CALL."
+},
+"newMessagePayload": {
+"$ref": "GoogleCloudDialogflowV2beta1Message",
+"description": "Payload of NEW_MESSAGE event."
+},
+"newRecognitionResultPayload": {
+"$ref": "GoogleCloudDialogflowV2beta1StreamingRecognitionResult",
+"description": "Payload of NEW_RECOGNITION_RESULT event."
+},
+"type": {
+"description": "Required. The type of the event that this notification refers to.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"CONVERSATION_STARTED",
+"CONVERSATION_FINISHED",
+"HUMAN_INTERVENTION_NEEDED",
+"NEW_MESSAGE",
+"NEW_RECOGNITION_RESULT",
+"UNRECOVERABLE_ERROR"
+],
+"enumDescriptions": [
+"Type not set.",
+"A new conversation has been opened. This is fired when a telephone call is answered, or a conversation is created via the API.",
+"An existing conversation has closed. This is fired when a telephone call is terminated, or a conversation is closed via the API.",
+"An existing conversation has received notification from Dialogflow that human intervention is required.",
+"An existing conversation has received a new message, either from API or telephony. It is configured in ConversationProfile.new_message_event_notification_config",
+"An existing conversation has received a new speech recognition result. This is mainly for delivering intermediate transcripts. The notification is configured in ConversationProfile.new_recognition_event_notification_config.",
+"Unrecoverable error during a telephone call. In general non-recoverable errors only occur if something was misconfigured in the ConversationProfile corresponding to the call. After a non-recoverable error, Dialogflow may stop responding. We don't fire this event: * in an API call because we can directly return the error, or, * when we can recover from an error."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ConversationPhoneNumber": {
+"description": "Represents a phone number for telephony integration. It allows for connecting a particular conversation over telephony.",
+"id": "GoogleCloudDialogflowV2beta1ConversationPhoneNumber",
+"properties": {
+"countryCode": {
+"description": "Output only. Desired country code for the phone number.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"phoneNumber": {
+"description": "Output only. The phone number to connect to this conversation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ConversationProfile": {
+"description": "Defines the services to connect to incoming Dialogflow conversations.",
+"id": "GoogleCloudDialogflowV2beta1ConversationProfile",
+"properties": {
+"automatedAgentConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1AutomatedAgentConfig",
+"description": "Configuration for an automated agent to use with this profile."
+},
+"createTime": {
+"description": "Output only. Create time of the conversation profile.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Required. Human readable name for this profile. Max length 1024 bytes.",
+"type": "string"
+},
+"humanAgentAssistantConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfig",
+"description": "Configuration for agent assistance to use with this profile."
+},
+"humanAgentHandoffConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentHandoffConfig",
+"description": "Configuration for connecting to a live agent. Currently, this feature is not general available, please contact Google to get access."
+},
+"languageCode": {
+"description": "Language code for the conversation profile. If not specified, the language is en-US. Language at ConversationProfile should be set for all non en-us languages. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\".",
+"type": "string"
+},
+"loggingConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1LoggingConfig",
+"description": "Configuration for logging conversation lifecycle events."
+},
+"name": {
+"description": "The unique identifier of this conversation profile. Format: `projects//locations//conversationProfiles/`.",
+"type": "string"
+},
+"newMessageEventNotificationConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1NotificationConfig",
+"description": "Configuration for publishing new message events. Event will be sent in format of ConversationEvent"
+},
+"newRecognitionResultNotificationConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1NotificationConfig",
+"description": "Optional. Configuration for publishing transcription intermediate results. Event will be sent in format of ConversationEvent. If configured, the following information will be populated as ConversationEvent Pub/Sub message attributes: - \"participant_id\" - \"participant_role\" - \"message_id\""
+},
+"notificationConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1NotificationConfig",
+"description": "Configuration for publishing conversation lifecycle events."
+},
+"securitySettings": {
+"description": "Name of the CX SecuritySettings reference for the agent. Format: `projects//locations//securitySettings/`.",
+"type": "string"
+},
+"sttConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1SpeechToTextConfig",
+"description": "Settings for speech transcription."
+},
+"timeZone": {
+"description": "The time zone of this conversational profile from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. Defaults to America/New_York.",
+"type": "string"
+},
+"ttsConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig",
+"description": "Configuration for Text-to-Speech synthesization. Used by Phone Gateway to specify synthesization options. If agent defines synthesization options as well, agent settings overrides the option here."
+},
+"updateTime": {
+"description": "Output only. Update time of the conversation profile.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfo": {
+"description": "The information about phone calls connected via phone gateway to the conversation.",
+"id": "GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfo",
+"properties": {
+"dialedNumber": {
+"description": "Output only. The number dialed to connect this call in E.164 format.",
+"readOnly": true,
+"type": "string"
+},
+"extraMimeContents": {
+"description": "Output only. The mime content from the initial SIP INVITE.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoMimeContent"
+},
+"readOnly": true,
+"type": "array"
+},
+"sdp": {
+"description": "Optional. SDP of the call. It's initially the SDP answer to the endpoint, but maybe later updated for the purpose of making the link active, etc.",
+"type": "string"
+},
+"sipHeaders": {
+"description": "Output only. The SIP headers from the initial SIP INVITE.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoSipHeader"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoMimeContent": {
+"description": "The mime content from the initial SIP INVITE.",
+"id": "GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoMimeContent",
+"properties": {
+"content": {
+"description": "Optional. The content payload.",
+"format": "byte",
+"type": "string"
+},
+"mimeType": {
+"description": "Optional. The mime type of the content.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoSipHeader": {
+"description": "The SIP headers from the initial SIP INVITE.",
+"id": "GoogleCloudDialogflowV2beta1ConversationTelephonyConnectionInfoSipHeader",
+"properties": {
+"name": {
+"description": "Optional. The name of the header.",
+"type": "string"
+},
+"value": {
+"description": "Optional. The value of the header.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1CreateMessageRequest": {
+"description": "The request message to create one Message. Currently it is only used in BatchCreateMessagesRequest.",
+"id": "GoogleCloudDialogflowV2beta1CreateMessageRequest",
+"properties": {
+"message": {
+"$ref": "GoogleCloudDialogflowV2beta1Message",
+"description": "Required. The message to create. Message.participant is required."
+},
+"parent": {
+"description": "Required. Resource identifier of the conversation to create message. Format: `projects//locations//conversations/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1DetectIntentRequest": {
+"description": "The request to detect user's intent.",
+"id": "GoogleCloudDialogflowV2beta1DetectIntentRequest",
+"properties": {
+"inputAudio": {
+"description": "The natural language speech audio to be processed. This field should be populated iff `query_input` is set to an input audio config. A single request can contain up to 1 minute of speech audio data.",
+"format": "byte",
+"type": "string"
+},
+"outputAudioConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1OutputAudioConfig",
+"description": "Instructs the speech synthesizer how to generate the output audio. If this field is not set and agent-level speech synthesizer is not configured, no output audio is generated."
+},
+"outputAudioConfigMask": {
+"description": "Mask for output_audio_config indicating which settings in this request-level config should override speech synthesizer settings defined at agent-level. If unspecified or empty, output_audio_config replaces the agent-level config in its entirety.",
+"format": "google-fieldmask",
+"type": "string"
+},
+"queryInput": {
+"$ref": "GoogleCloudDialogflowV2beta1QueryInput",
+"description": "Required. The input specification. It can be set to: 1. an audio config which instructs the speech recognizer how to process the speech audio, 2. a conversational query in the form of text, or 3. an event that specifies which intent to trigger."
+},
+"queryParams": {
+"$ref": "GoogleCloudDialogflowV2beta1QueryParameters",
+"description": "The parameters of this query."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1DetectIntentResponse": {
+"description": "The message returned from the DetectIntent method.",
+"id": "GoogleCloudDialogflowV2beta1DetectIntentResponse",
+"properties": {
+"alternativeQueryResults": {
+"description": "If Knowledge Connectors are enabled, there could be more than one result returned for a given query or event, and this field will contain all results except for the top one, which is captured in query_result. The alternative results are ordered by decreasing `QueryResult.intent_detection_confidence`. If Knowledge Connectors are disabled, this field will be empty until multiple responses for regular intents are supported, at which point those additional results will be surfaced here.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1QueryResult"
+},
+"type": "array"
+},
+"outputAudio": {
+"description": "The audio data bytes encoded as specified in the request. Note: The output audio is generated based on the values of default platform text responses found in the `query_result.fulfillment_messages` field. If multiple default text responses exist, they will be concatenated when generating audio. If no default platform text responses exist, the generated audio content will be empty. In some scenarios, multiple output audio fields may be present in the response structure. In these cases, only the top-most-level audio output has content.",
+"format": "byte",
+"type": "string"
+},
+"outputAudioConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1OutputAudioConfig",
+"description": "The config used by the speech synthesizer to generate the output audio."
+},
+"queryResult": {
+"$ref": "GoogleCloudDialogflowV2beta1QueryResult",
+"description": "The selected results of the conversational query or event processing. See `alternative_query_results` for additional potential results."
+},
+"responseId": {
+"description": "The unique identifier of the response. It can be used to locate a response in the training example set or for reporting issues.",
+"type": "string"
+},
+"webhookStatus": {
+"$ref": "GoogleRpcStatus",
+"description": "Specifies the status of the webhook request."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1DialogflowAssistAnswer": {
+"description": "Represents a Dialogflow assist answer.",
+"id": "GoogleCloudDialogflowV2beta1DialogflowAssistAnswer",
+"properties": {
+"answerRecord": {
+"description": "The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"intentSuggestion": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentSuggestion",
+"description": "An intent suggestion generated from conversation."
+},
+"queryResult": {
+"$ref": "GoogleCloudDialogflowV2beta1QueryResult",
+"description": "Result from v2 agent."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Document": {
+"description": "A knowledge document to be used by a KnowledgeBase. For more information, see the [knowledge base guide](https://cloud.google.com/dialogflow/docs/how/knowledge-bases). Note: The `projects.agent.knowledgeBases.documents` resource is deprecated; only use `projects.knowledgeBases.documents`.",
+"id": "GoogleCloudDialogflowV2beta1Document",
+"properties": {
+"content": {
+"deprecated": true,
+"description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types. Note: This field is in the process of being deprecated, please use raw_content instead.",
+"type": "string"
+},
+"contentUri": {
+"description": "The URI where the file content is located. For documents stored in Google Cloud Storage, these URIs must have the form `gs:///`. NOTE: External URLs must correspond to public webpages, i.e., they must be indexed by Google Search. In particular, URLs for showing documents in Google Cloud Storage (i.e. the URL in your browser) are not supported. Instead use the `gs://` format URI described above.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The display name of the document. The name must be 1024 bytes or less; otherwise, the creation request fails.",
+"type": "string"
+},
+"enableAutoReload": {
+"description": "Optional. If true, we try to automatically reload the document every day (at a time picked by the system). If false or unspecified, we don't try to automatically reload the document. Currently you can only enable automatic reload for documents sourced from a public url, see `source` field for the source types. Reload status can be tracked in `latest_reload_status`. If a reload fails, we will keep the document unchanged. If a reload fails with internal errors, the system will try to reload the document on the next day. If a reload fails with non-retriable errors (e.g. PERMISSION_DENIED), the system will not try to reload the document anymore. You need to manually reload the document successfully by calling `ReloadDocument` and clear the errors.",
+"type": "boolean"
+},
+"knowledgeTypes": {
+"description": "Required. The knowledge type of document content.",
+"items": {
+"enum": [
+"KNOWLEDGE_TYPE_UNSPECIFIED",
+"FAQ",
+"EXTRACTIVE_QA",
+"ARTICLE_SUGGESTION",
+"AGENT_FACING_SMART_REPLY",
+"SMART_REPLY"
+],
+"enumDescriptions": [
+"The type is unspecified or arbitrary.",
+"The document content contains question and answer pairs as either HTML or CSV. Typical FAQ HTML formats are parsed accurately, but unusual formats may fail to be parsed. CSV must have questions in the first column and answers in the second, with no header. Because of this explicit format, they are always parsed accurately.",
+"Documents for which unstructured text is extracted and used for question answering.",
+"The entire document content as a whole can be used for query results. Only for Contact Center Solutions on Dialogflow.",
+"The document contains agent-facing Smart Reply entries.",
+"The legacy enum for agent-facing smart reply feature."
+],
+"type": "string"
+},
+"type": "array"
+},
+"latestReloadStatus": {
+"$ref": "GoogleCloudDialogflowV2beta1DocumentReloadStatus",
+"description": "Output only. The time and status of the latest reload. This reload may have been triggered automatically or manually and may not have succeeded.",
+"readOnly": true
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Metadata for the document. The metadata supports arbitrary key-value pairs. Suggested use cases include storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a `key` or a `value` of the metadata is 1024 bytes.",
+"type": "object"
+},
+"mimeType": {
+"description": "Required. The MIME type of this document.",
+"type": "string"
+},
+"name": {
+"description": "Optional. The document resource name. The name must be empty when creating a document. Format: `projects//locations//knowledgeBases//documents/`.",
+"type": "string"
+},
+"rawContent": {
+"description": "The raw content of the document. This field is only permitted for EXTRACTIVE_QA and FAQ knowledge types.",
+"format": "byte",
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state of the document.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"ACTIVE",
+"UPDATING",
+"RELOADING",
+"DELETING"
+],
+"enumDescriptions": [
+"The document state is unspecified.",
+"The document creation is in progress.",
+"The document is active and ready to use.",
+"The document updation is in progress.",
+"The document is reloading.",
+"The document deletion is in progress."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1DocumentReloadStatus": {
+"description": "The status of a reload attempt.",
+"id": "GoogleCloudDialogflowV2beta1DocumentReloadStatus",
+"properties": {
+"status": {
+"$ref": "GoogleRpcStatus",
+"description": "Output only. The status of a reload attempt or the initial load."
+},
+"time": {
+"description": "Output only. The time of a reload attempt. This reload may have been triggered automatically or manually and may not have succeeded.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1DtmfParameters": {
+"description": "The message in the response that indicates the parameters of DTMF.",
+"id": "GoogleCloudDialogflowV2beta1DtmfParameters",
+"properties": {
+"acceptsDtmfInput": {
+"description": "Indicates whether DTMF input can be handled in the next request.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1EncryptionSpec": {
+"description": "A customer-managed encryption key specification that can be applied to all created resources (e.g. Conversation).",
+"id": "GoogleCloudDialogflowV2beta1EncryptionSpec",
+"properties": {
+"kmsKey": {
+"description": "Required. The name of customer-managed encryption key that is used to secure a resource and its sub-resources. If empty, the resource is secured by the default Google encryption key. Only the key in the same location as this resource is allowed to be used for encryption. Format: `projects/{project}/locations/{location}/keyRings/{keyRing}/cryptoKeys/{key}`",
+"type": "string"
+},
+"name": {
+"description": "Immutable. The resource name of the encryption key specification resource. Format: projects/{project}/locations/{location}/encryptionSpec",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1EntityType": {
+"description": "Each intent parameter has a type, called the entity type, which dictates exactly how data from an end-user expression is extracted. Dialogflow provides predefined system entities that can match many common types of data. For example, there are system entities for matching dates, times, colors, email addresses, and so on. You can also create your own custom entities for matching custom data. For example, you could define a vegetable entity that can match the types of vegetables available for purchase with a grocery store agent. For more information, see the [Entity guide](https://cloud.google.com/dialogflow/docs/entities-overview).",
+"id": "GoogleCloudDialogflowV2beta1EntityType",
+"properties": {
+"autoExpansionMode": {
+"description": "Optional. Indicates whether the entity type can be automatically expanded.",
+"enum": [
+"AUTO_EXPANSION_MODE_UNSPECIFIED",
+"AUTO_EXPANSION_MODE_DEFAULT"
+],
+"enumDescriptions": [
+"Auto expansion disabled for the entity.",
+"Allows an agent to recognize values that have not been explicitly listed in the entity."
+],
+"type": "string"
+},
+"displayName": {
+"description": "Required. The name of the entity type.",
+"type": "string"
+},
+"enableFuzzyExtraction": {
+"description": "Optional. Enables fuzzy entity extraction during classification.",
+"type": "boolean"
+},
+"entities": {
+"description": "Optional. The collection of entity entries associated with the entity type.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityTypeEntity"
+},
+"type": "array"
+},
+"kind": {
+"description": "Required. Indicates the kind of entity type.",
+"enum": [
+"KIND_UNSPECIFIED",
+"KIND_MAP",
+"KIND_LIST",
+"KIND_REGEXP"
+],
+"enumDescriptions": [
+"Not specified. This value should be never used.",
+"Map entity types allow mapping of a group of synonyms to a reference value.",
+"List entity types contain a set of entries that do not map to reference values. However, list entity types can contain references to other entity types (with or without aliases).",
+"Regexp entity types allow to specify regular expressions in entries values."
+],
+"type": "string"
+},
+"name": {
+"description": "The unique identifier of the entity type. Required for EntityTypes.UpdateEntityType and EntityTypes.BatchUpdateEntityTypes methods. Supported formats: - `projects//agent/entityTypes/` - `projects//locations//agent/entityTypes/`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1EntityTypeBatch": {
+"description": "This message is a wrapper around a collection of entity types.",
+"id": "GoogleCloudDialogflowV2beta1EntityTypeBatch",
+"properties": {
+"entityTypes": {
+"description": "A collection of entity types.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1EntityTypeEntity": {
+"description": "An **entity entry** for an associated entity type.",
+"id": "GoogleCloudDialogflowV2beta1EntityTypeEntity",
+"properties": {
+"synonyms": {
+"description": "Required. A collection of value synonyms. For example, if the entity type is *vegetable*, and `value` is *scallions*, a synonym could be *green onions*. For `KIND_LIST` entity types: * This collection must contain exactly one synonym equal to `value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"value": {
+"description": "Required. The primary value associated with this entity entry. For example, if the entity type is *vegetable*, the value could be *scallions*. For `KIND_MAP` entity types: * A reference value to be used in place of synonyms. For `KIND_LIST` entity types: * A string that can contain references to other entity types (with or without aliases).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Environment": {
+"description": "You can create multiple versions of your agent and publish them to separate environments. When you edit an agent, you are editing the draft agent. At any point, you can save the draft agent as an agent version, which is an immutable snapshot of your agent. When you save the draft agent, it is published to the default environment. When you create agent versions, you can publish them to custom environments. You can create a variety of custom environments for: - testing - development - production - etc. For more information, see the [versions and environments guide](https://cloud.google.com/dialogflow/docs/agents-versions).",
+"id": "GoogleCloudDialogflowV2beta1Environment",
+"properties": {
+"agentVersion": {
+"description": "Optional. The agent version loaded into this environment. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
+"type": "string"
+},
+"description": {
+"description": "Optional. The developer-provided description for this environment. The maximum length is 500 characters. If exceeded, the request is rejected.",
+"type": "string"
+},
+"fulfillment": {
+"$ref": "GoogleCloudDialogflowV2beta1Fulfillment",
+"description": "Optional. The fulfillment settings to use for this environment."
+},
+"name": {
+"description": "Output only. The unique identifier of this agent environment. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of this environment. This field is read-only, i.e., it cannot be set by create and update methods.",
+"enum": [
+"STATE_UNSPECIFIED",
+"STOPPED",
+"LOADING",
+"RUNNING"
+],
+"enumDescriptions": [
+"Not specified. This value is not used.",
+"Stopped.",
+"Loading.",
+"Running."
+],
+"readOnly": true,
+"type": "string"
+},
+"textToSpeechSettings": {
+"$ref": "GoogleCloudDialogflowV2beta1TextToSpeechSettings",
+"description": "Optional. Text to speech settings for this environment."
+},
+"updateTime": {
+"description": "Output only. The last update time of this environment. This field is read-only, i.e., it cannot be set by create and update methods.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1EnvironmentHistory": {
+"description": "The response message for Environments.GetEnvironmentHistory.",
+"id": "GoogleCloudDialogflowV2beta1EnvironmentHistory",
+"properties": {
+"entries": {
+"description": "Output only. The list of agent environments. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1EnvironmentHistoryEntry"
+},
+"readOnly": true,
+"type": "array"
+},
+"nextPageToken": {
+"description": "Output only. Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"readOnly": true,
+"type": "string"
+},
+"parent": {
+"description": "Output only. The name of the environment this history is for. Supported formats: - `projects//agent/environments/` - `projects//locations//agent/environments/`",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1EnvironmentHistoryEntry": {
+"description": "Represents an environment history entry.",
+"id": "GoogleCloudDialogflowV2beta1EnvironmentHistoryEntry",
+"properties": {
+"agentVersion": {
+"description": "The agent version loaded into this environment history entry.",
+"type": "string"
+},
+"createTime": {
+"description": "The creation time of this environment history entry.",
+"format": "google-datetime",
+"type": "string"
+},
+"description": {
+"description": "The developer-provided description for this environment history entry.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1EventInput": {
+"description": "Events allow for matching intents by event name instead of the natural language input. For instance, input `` can trigger a personalized welcome response. The parameter `name` may be used by the agent in the response: `\"Hello #welcome_event.name! What can I do for you today?\"`.",
+"id": "GoogleCloudDialogflowV2beta1EventInput",
+"properties": {
+"languageCode": {
+"description": "Required. The language of this query. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language. This field is ignored when used in the context of a WebhookResponse.followup_event_input field, because the language was already defined in the originating detect intent request.",
+"type": "string"
+},
+"name": {
+"description": "Required. The unique identifier of the event.",
+"type": "string"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The collection of parameters associated with the event. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ExportAgentRequest": {
+"description": "The request message for Agents.ExportAgent.",
+"id": "GoogleCloudDialogflowV2beta1ExportAgentRequest",
+"properties": {
+"agentUri": {
+"description": "Optional. The [Google Cloud Storage](https://cloud.google.com/storage/docs/) URI to export the agent to. The format of this URI must be `gs:///`. If left unspecified, the serialized agent is returned inline. Dialogflow performs a write operation for the Cloud Storage object on the caller's behalf, so your request authentication must have write permissions for the object. For more information, see [Dialogflow access control](https://cloud.google.com/dialogflow/cx/docs/concept/access-control#storage).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ExportAgentResponse": {
+"description": "The response message for Agents.ExportAgent.",
+"id": "GoogleCloudDialogflowV2beta1ExportAgentResponse",
+"properties": {
+"agentContent": {
+"description": "Zip compressed raw byte content for agent.",
+"format": "byte",
+"type": "string"
+},
+"agentUri": {
+"description": "The URI to a file containing the exported agent. This field is populated only if `agent_uri` is specified in `ExportAgentRequest`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ExportOperationMetadata": {
+"description": "Metadata related to the Export Data Operations (e.g. ExportDocument).",
+"id": "GoogleCloudDialogflowV2beta1ExportOperationMetadata",
+"properties": {
+"exportedGcsDestination": {
+"$ref": "GoogleCloudDialogflowV2beta1GcsDestination",
+"description": "Cloud Storage file path of the exported data."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1FaqAnswer": {
+"description": "Represents answer from \"frequently asked questions\".",
+"id": "GoogleCloudDialogflowV2beta1FaqAnswer",
+"properties": {
+"answer": {
+"description": "The piece of text from the `source` knowledge base document.",
+"type": "string"
+},
+"answerRecord": {
+"description": "The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"confidence": {
+"description": "The system's confidence score that this Knowledge answer is a good match for this conversational query, range from 0.0 (completely uncertain) to 1.0 (completely certain).",
+"format": "float",
+"type": "number"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map that contains metadata about the answer and the document from which it originates.",
+"type": "object"
+},
+"question": {
+"description": "The corresponding FAQ question.",
+"type": "string"
+},
+"source": {
+"description": "Indicates which Knowledge Document this answer was extracted from. Format: `projects//locations//agent/knowledgeBases//documents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1FewShotExample": {
+"description": "Providing examples in the generator (i.e. building a few-shot generator) helps convey the desired format of the LLM response.",
+"id": "GoogleCloudDialogflowV2beta1FewShotExample",
+"properties": {
+"conversationContext": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationContext",
+"description": "Optional. Conversation transcripts."
+},
+"extraInfo": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Key is the placeholder field name in input, value is the value of the placeholder. E.g. instruction contains \"@price\", and ingested data has <\"price\", \"10\">",
+"type": "object"
+},
+"output": {
+"$ref": "GoogleCloudDialogflowV2beta1GeneratorSuggestion",
+"description": "Required. Example output of the model."
+},
+"summarizationSectionList": {
+"$ref": "GoogleCloudDialogflowV2beta1SummarizationSectionList",
+"description": "Summarization sections."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Fulfillment": {
+"description": "By default, your agent responds to a matched intent with a static response. As an alternative, you can provide a more dynamic response by using fulfillment. When you enable fulfillment for an intent, Dialogflow responds to that intent by calling a service that you define. For example, if an end-user wants to schedule a haircut on Friday, your service can check your database and respond to the end-user with availability information for Friday. For more information, see the [fulfillment guide](https://cloud.google.com/dialogflow/docs/fulfillment-overview).",
+"id": "GoogleCloudDialogflowV2beta1Fulfillment",
+"properties": {
+"displayName": {
+"description": "The human-readable name of the fulfillment, unique within the agent. This field is not used for Fulfillment in an Environment.",
+"type": "string"
+},
+"enabled": {
+"description": "Whether fulfillment is enabled.",
+"type": "boolean"
+},
+"features": {
+"description": "The field defines whether the fulfillment is enabled for certain features.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1FulfillmentFeature"
+},
+"type": "array"
+},
+"genericWebService": {
+"$ref": "GoogleCloudDialogflowV2beta1FulfillmentGenericWebService",
+"description": "Configuration for a generic web service."
+},
+"name": {
+"description": "Required. The unique identifier of the fulfillment. Supported formats: - `projects//agent/fulfillment` - `projects//locations//agent/fulfillment` This field is not used for Fulfillment in an Environment.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1FulfillmentFeature": {
+"description": "Whether fulfillment is enabled for the specific feature.",
+"id": "GoogleCloudDialogflowV2beta1FulfillmentFeature",
+"properties": {
+"type": {
+"description": "The type of the feature that enabled for fulfillment.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"SMALLTALK"
+],
+"enumDescriptions": [
+"Feature type not specified.",
+"Fulfillment is enabled for SmallTalk."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1FulfillmentGenericWebService": {
+"description": "Represents configuration for a generic web service. Dialogflow supports two mechanisms for authentications: - Basic authentication with username and password. - Authentication with additional authentication headers. More information could be found at: https://cloud.google.com/dialogflow/docs/fulfillment-configure.",
+"id": "GoogleCloudDialogflowV2beta1FulfillmentGenericWebService",
+"properties": {
+"isCloudFunction": {
+"deprecated": true,
+"description": "Optional. Indicates if generic web service is created through Cloud Functions integration. Defaults to false. is_cloud_function is deprecated. Cloud functions can be configured by its uri as a regular web service now.",
+"type": "boolean"
+},
+"password": {
+"description": "The password for HTTP Basic authentication.",
+"type": "string"
+},
+"requestHeaders": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The HTTP request headers to send together with fulfillment requests.",
+"type": "object"
+},
+"uri": {
+"description": "Required. The fulfillment URI for receiving POST requests. It must use https protocol.",
+"type": "string"
+},
+"username": {
+"description": "The user name for HTTP Basic authentication.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GcsDestination": {
+"description": "Google Cloud Storage location for the output.",
+"id": "GoogleCloudDialogflowV2beta1GcsDestination",
+"properties": {
+"uri": {
+"description": "Required. The Google Cloud Storage URIs for the output. A URI is of the form: `gs://bucket/object-prefix-or-name` Whether a prefix or name is used depends on the use case. The requesting user must have \"write-permission\" to the bucket.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GcsSource": {
+"description": "Google Cloud Storage location for single input.",
+"id": "GoogleCloudDialogflowV2beta1GcsSource",
+"properties": {
+"uri": {
+"description": "Required. The Google Cloud Storage URIs for the inputs. A URI is of the form: `gs://bucket/object-prefix-or-name` Whether a prefix or name is used depends on the use case.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GcsSources": {
+"description": "Google Cloud Storage locations for the inputs.",
+"id": "GoogleCloudDialogflowV2beta1GcsSources",
+"properties": {
+"uris": {
+"description": "Required. Google Cloud Storage URIs for the inputs. A URI is of the form: `gs://bucket/object-prefix-or-name` Whether a prefix or name is used depends on the use case.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GenerateStatelessSuggestionRequest": {
+"description": "The request message for Conversations.GenerateStatelessSuggestion.",
+"id": "GoogleCloudDialogflowV2beta1GenerateStatelessSuggestionRequest",
+"properties": {
+"conversationContext": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationContext",
+"description": "Optional. Context of the conversation, including transcripts."
+},
+"generator": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator",
+"description": "Uncreated generator. It should be a complete generator that includes all information about the generator."
+},
+"generatorName": {
+"description": "The resource name of the existing created generator. Format: `projects//locations//generators/`",
+"type": "string"
+},
+"triggerEvents": {
+"description": "Optional. A list of trigger events. Generator will be triggered only if it's trigger event is included here.",
+"items": {
+"enum": [
+"TRIGGER_EVENT_UNSPECIFIED",
+"END_OF_UTTERANCE",
+"MANUAL_CALL"
+],
+"enumDescriptions": [
+"Default value for TriggerEvent.",
+"Triggers when each chat message or voice utterance ends.",
+"Triggers on the conversation manually by API calls, such as Conversations.GenerateStatelessSuggestion and Conversations.GenerateSuggestions."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GenerateStatelessSuggestionResponse": {
+"description": "The response message for Conversations.GenerateStatelessSuggestion.",
+"id": "GoogleCloudDialogflowV2beta1GenerateStatelessSuggestionResponse",
+"properties": {
+"generatorSuggestion": {
+"$ref": "GoogleCloudDialogflowV2beta1GeneratorSuggestion",
+"description": "Required. Generated suggestion for a conversation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequest": {
+"description": "The request message for Conversations.GenerateStatelessSummary.",
+"id": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequest",
+"properties": {
+"conversationProfile": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile",
+"description": "Required. A ConversationProfile containing information required for Summary generation. Required fields: {language_code, security_settings} Optional fields: {agent_assistant_config}"
+},
+"latestMessage": {
+"description": "Optional. The name of the latest conversation message used as context for generating a Summary. If empty, the latest message of the conversation will be used. The format is specific to the user and the names of the messages provided.",
+"type": "string"
+},
+"maxContextSize": {
+"description": "Optional. Max number of messages prior to and including [latest_message] to use as context when compiling the suggestion. By default 500 and at most 1000.",
+"format": "int32",
+"type": "integer"
+},
+"statelessConversation": {
+"$ref": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequestMinimalConversation",
+"description": "Required. The conversation to suggest a summary for."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequestMinimalConversation": {
+"description": "The minimum amount of information required to generate a Summary without having a Conversation resource created.",
+"id": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryRequestMinimalConversation",
+"properties": {
+"messages": {
+"description": "Required. The messages that the Summary will be generated from. It is expected that this message content is already redacted and does not contain any PII. Required fields: {content, language_code, participant, participant_role} Optional fields: {send_time} If send_time is not provided, then the messages must be provided in chronological order.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Message"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponse": {
+"description": "The response message for Conversations.GenerateStatelessSummary.",
+"id": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including last_conversation_message used to compile the suggestion. It may be smaller than the GenerateStatelessSummaryRequest.context_size field in the request if there weren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used as context for compiling suggestion. The format is specific to the user and the names of the messages provided.",
+"type": "string"
+},
+"summary": {
+"$ref": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponseSummary",
+"description": "Generated summary."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponseSummary": {
+"description": "Generated summary for a conversation.",
+"id": "GoogleCloudDialogflowV2beta1GenerateStatelessSummaryResponseSummary",
+"properties": {
+"baselineModelVersion": {
+"description": "The baseline model version used to generate this summary. It is empty if a baseline model was not used to generate this summary.",
+"type": "string"
+},
+"text": {
+"description": "The summary content that is concatenated into one string.",
+"type": "string"
+},
+"textSections": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The summary content that is divided into sections. The key is the section's name and the value is the section's content. There is no specific format for the key or value.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Generator": {
+"description": "LLM generator.",
+"id": "GoogleCloudDialogflowV2beta1Generator",
+"properties": {
+"createTime": {
+"description": "Output only. Creation time of this generator.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. Human readable description of the generator.",
+"type": "string"
+},
+"inferenceParameter": {
+"$ref": "GoogleCloudDialogflowV2beta1InferenceParameter",
+"description": "Optional. Inference parameters for this generator."
+},
+"name": {
+"description": "Output only. Identifier. The resource name of the generator. Format: `projects//locations//generators/`",
+"readOnly": true,
+"type": "string"
+},
+"summarizationContext": {
+"$ref": "GoogleCloudDialogflowV2beta1SummarizationContext",
+"description": "Input of Summarization feature."
+},
+"triggerEvent": {
+"description": "Optional. The trigger event of the generator. It defines when the generator is triggered in a conversation.",
+"enum": [
+"TRIGGER_EVENT_UNSPECIFIED",
+"END_OF_UTTERANCE",
+"MANUAL_CALL"
+],
+"enumDescriptions": [
+"Default value for TriggerEvent.",
+"Triggers when each chat message or voice utterance ends.",
+"Triggers on the conversation manually by API calls, such as Conversations.GenerateStatelessSuggestion and Conversations.GenerateSuggestions."
+],
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. Update time of this generator.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1GeneratorSuggestion": {
+"description": "Suggestion generated using a Generator.",
+"id": "GoogleCloudDialogflowV2beta1GeneratorSuggestion",
+"properties": {
+"summarySuggestion": {
+"$ref": "GoogleCloudDialogflowV2beta1SummarySuggestion",
+"description": "Optional. Suggested summary."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfig": {
+"description": "Defines the Human Agent Assistant to connect to a conversation.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfig",
+"properties": {
+"endUserSuggestionConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig",
+"description": "Configuration for agent assistance of end user participant. Currently, this feature is not general available, please contact Google to get access."
+},
+"humanAgentSuggestionConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig",
+"description": "Configuration for agent assistance of human agent participant."
+},
+"messageAnalysisConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfig",
+"description": "Configuration for message analysis."
+},
+"notificationConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1NotificationConfig",
+"description": "Pub/Sub topic on which to publish new agent assistant events."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfig": {
+"description": "Custom conversation models used in agent assist feature. Supported feature: ARTICLE_SUGGESTION, SMART_COMPOSE, SMART_REPLY, CONVERSATION_SUMMARIZATION.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfig",
+"properties": {
+"baselineModelVersion": {
+"description": "Version of current baseline model. It will be ignored if model is set. Valid versions are: Article Suggestion baseline model: - 0.9 - 1.0 (default) Summarization baseline model: - 1.0",
+"type": "string"
+},
+"model": {
+"description": "Conversation model resource name. Format: `projects//conversationModels/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfig": {
+"description": "Config to process conversation.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfig",
+"properties": {
+"recentSentencesCount": {
+"description": "Number of recent non-small-talk sentences to use as context for article and FAQ suggestion",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfig": {
+"description": "Configuration for analyses to run on each conversation message.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigMessageAnalysisConfig",
+"properties": {
+"enableEntityExtraction": {
+"description": "Enable entity extraction in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Currently, this feature is not general available, please contact Google to get access.",
+"type": "boolean"
+},
+"enableSentimentAnalysis": {
+"description": "Enable sentiment analysis in conversation messages on [agent assist stage](https://cloud.google.com/dialogflow/priv/docs/contact-center/basics#stages). If unspecified, defaults to false. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user's attitude as positive, negative, or neutral: https://cloud.google.com/natural-language/docs/basics#sentiment_analysis For Participants.StreamingAnalyzeContent method, result will be in StreamingAnalyzeContentResponse.message.SentimentAnalysisResult. For Participants.AnalyzeContent method, result will be in AnalyzeContentResponse.message.SentimentAnalysisResult For Conversations.ListMessages method, result will be in ListMessagesResponse.messages.SentimentAnalysisResult If Pub/Sub notification is configured, result will be in ConversationEvent.new_message_payload.SentimentAnalysisResult.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig": {
+"description": "Detail human agent assistant config.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionConfig",
+"properties": {
+"disableHighLatencyFeaturesSyncDelivery": {
+"description": "Optional. When disable_high_latency_features_sync_delivery is true and using the AnalyzeContent API, we will not deliver the responses from high latency features in the API response. The human_agent_assistant_config.notification_config must be configured and enable_event_based_suggestion must be set to true to receive the responses from high latency features in Pub/Sub. High latency feature(s): KNOWLEDGE_ASSIST",
+"type": "boolean"
+},
+"featureConfigs": {
+"description": "Configuration of different suggestion features. One feature can have only one config.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig"
+},
+"type": "array"
+},
+"generators": {
+"description": "Optional. List of various generator resource names used in the conversation profile.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"groupSuggestionResponses": {
+"description": "If `group_suggestion_responses` is false, and there are multiple `feature_configs` in `event based suggestion` or StreamingAnalyzeContent, we will try to deliver suggestions to customers as soon as we get new suggestion. Different type of suggestions based on the same context will be in separate Pub/Sub event or `StreamingAnalyzeContentResponse`. If `group_suggestion_responses` set to true. All the suggestions to the same participant based on the same context will be grouped into a single Pub/Sub event or StreamingAnalyzeContentResponse.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig": {
+"description": "Config for suggestion features.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig",
+"properties": {
+"conversationModelConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationModelConfig",
+"description": "Configs of custom conversation model."
+},
+"conversationProcessConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigConversationProcessConfig",
+"description": "Configs for processing conversation."
+},
+"disableAgentQueryLogging": {
+"description": "Optional. Disable the logging of search queries sent by human agents. It can prevent those queries from being stored at answer records. Supported features: KNOWLEDGE_SEARCH.",
+"type": "boolean"
+},
+"enableConversationAugmentedQuery": {
+"description": "Optional. Enable including conversation context during query answer generation. Supported features: KNOWLEDGE_SEARCH.",
+"type": "boolean"
+},
+"enableEventBasedSuggestion": {
+"description": "Automatically iterates all participants and tries to compile suggestions. Supported features: ARTICLE_SUGGESTION, FAQ, DIALOGFLOW_ASSIST, ENTITY_EXTRACTION, KNOWLEDGE_ASSIST.",
+"type": "boolean"
+},
+"enableQuerySuggestionOnly": {
+"description": "Optional. Enable query suggestion only. Supported features: KNOWLEDGE_ASSIST",
+"type": "boolean"
+},
+"enableQuerySuggestionWhenNoAnswer": {
+"description": "Optional. Enable query suggestion even if we can't find its answer. By default, queries are suggested only if we find its answer. Supported features: KNOWLEDGE_ASSIST",
+"type": "boolean"
+},
+"queryConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfig",
+"description": "Configs of query."
+},
+"suggestionFeature": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestionFeature",
+"description": "The suggestion feature."
+},
+"suggestionTriggerSettings": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettings",
+"description": "Settings of suggestion trigger. Currently, only ARTICLE_SUGGESTION, FAQ, and DIALOGFLOW_ASSIST will use this field."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfig": {
+"description": "Config for suggestion query.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfig",
+"properties": {
+"confidenceThreshold": {
+"description": "Confidence threshold of query result. Agent Assist gives each suggestion a score in the range [0.0, 1.0], based on the relevance between the suggestion and the current conversation context. A score of 0.0 has no relevance, while a score of 1.0 has high relevance. Only suggestions with a score greater than or equal to the value of this field are included in the results. For a baseline model (the default), the recommended value is in the range [0.05, 0.1]. For a custom model, there is no recommended value. Tune this value by starting from a very low value and slowly increasing until you have desired results. If this field is not set, it is default to 0.0, which means that all suggestions are returned. Supported features: ARTICLE_SUGGESTION, FAQ, SMART_REPLY, SMART_COMPOSE, KNOWLEDGE_SEARCH, KNOWLEDGE_ASSIST, ENTITY_EXTRACTION.",
+"format": "float",
+"type": "number"
+},
+"contextFilterSettings": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings",
+"description": "Determines how recent conversation context is filtered when generating suggestions. If unspecified, no messages will be dropped."
+},
+"contextSize": {
+"description": "Optional. The number of recent messages to include in the context. Supported features: KNOWLEDGE_ASSIST.",
+"format": "int32",
+"type": "integer"
+},
+"dialogflowQuerySource": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource",
+"description": "Query from Dialogflow agent. It is used by DIALOGFLOW_ASSIST, ENTITY_EXTRACTION."
+},
+"documentQuerySource": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource",
+"description": "Query from knowledge base document. It is used by: SMART_REPLY, SMART_COMPOSE."
+},
+"knowledgeBaseQuerySource": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource",
+"description": "Query from knowledgebase. It is used by: ARTICLE_SUGGESTION, FAQ."
+},
+"maxResults": {
+"description": "Maximum number of results to return. Currently, if unset, defaults to 10. And the max number is 20.",
+"format": "int32",
+"type": "integer"
+},
+"sections": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigSections",
+"description": "Optional. The customized sections chosen to return when requesting a summary of a conversation."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings": {
+"description": "Settings that determine how to filter recent conversation context when generating suggestions.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigContextFilterSettings",
+"properties": {
+"dropHandoffMessages": {
+"description": "If set to true, the last message from virtual agent (hand off message) and the message before it (trigger message of hand off) are dropped.",
+"type": "boolean"
+},
+"dropIvrMessages": {
+"description": "If set to true, all messages from ivr stage are dropped.",
+"type": "boolean"
+},
+"dropVirtualAgentMessages": {
+"description": "If set to true, all messages from virtual agent are dropped.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource": {
+"description": "Dialogflow source setting. Supported feature: DIALOGFLOW_ASSIST, ENTITY_EXTRACTION.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySource",
+"properties": {
+"agent": {
+"description": "Required. The name of a dialogflow virtual agent used for end user side intent detection and suggestion. Format: `projects//locations//agent`. When multiple agents are allowed in the same Dialogflow project.",
+"type": "string"
+},
+"humanAgentSideConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig",
+"description": "The Dialogflow assist configuration for human agent."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig": {
+"description": "The configuration used for human agent side Dialogflow assist suggestion.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDialogflowQuerySourceHumanAgentSideConfig",
+"properties": {
+"agent": {
+"description": "Optional. The name of a dialogflow virtual agent used for intent detection and suggestion triggered by human agent. Format: `projects//locations//agent`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource": {
+"description": "Document source settings. Supported features: SMART_REPLY, SMART_COMPOSE.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigDocumentQuerySource",
+"properties": {
+"documents": {
+"description": "Required. Knowledge documents to query from. Format: `projects//locations//knowledgeBases//documents/`. Currently, only one document is supported.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource": {
+"description": "Knowledge base source settings. Supported features: ARTICLE_SUGGESTION, FAQ.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigKnowledgeBaseQuerySource",
+"properties": {
+"knowledgeBases": {
+"description": "Required. Knowledge bases to query. Format: `projects//locations//knowledgeBases/`. Currently, only one knowledge base is supported.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigSections": {
+"description": "Custom sections to return when requesting a summary of a conversation. This is only supported when `baseline_model_version` == '2.0'. Supported features: CONVERSATION_SUMMARIZATION, CONVERSATION_SUMMARIZATION_VOICE.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionQueryConfigSections",
+"properties": {
+"sectionTypes": {
+"description": "The selected sections chosen to return when requesting a summary of a conversation. A duplicate selected section will be treated as a single selected section. If section types are not provided, the default will be {SITUATION, ACTION, RESULT}.",
+"items": {
+"enum": [
+"SECTION_TYPE_UNSPECIFIED",
+"SITUATION",
+"ACTION",
+"RESOLUTION",
+"REASON_FOR_CANCELLATION",
+"CUSTOMER_SATISFACTION",
+"ENTITIES"
+],
+"enumDescriptions": [
+"Undefined section type, does not return anything.",
+"What the customer needs help with or has question about. Section name: \"situation\".",
+"What the agent does to help the customer. Section name: \"action\".",
+"Result of the customer service. A single word describing the result of the conversation. Section name: \"resolution\".",
+"Reason for cancellation if the customer requests for a cancellation. \"N/A\" otherwise. Section name: \"reason_for_cancellation\".",
+"\"Unsatisfied\" or \"Satisfied\" depending on the customer's feelings at the end of the conversation. Section name: \"customer_satisfaction\".",
+"Key entities extracted from the conversation, such as ticket number, order number, dollar amount, etc. Section names are prefixed by \"entities/\"."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettings": {
+"description": "Settings of suggestion trigger.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionTriggerSettings",
+"properties": {
+"noSmallTalk": {
+"description": "Do not trigger if last utterance is small talk.",
+"type": "boolean"
+},
+"onlyEndUser": {
+"description": "Only trigger suggestion if participant role of last utterance is END_USER.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentAssistantEvent": {
+"description": "Output only. Represents a notification sent to Pub/Sub subscribers for agent assistant events in a specific conversation.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentAssistantEvent",
+"properties": {
+"conversation": {
+"description": "The conversation this notification refers to. Format: `projects//conversations/`.",
+"type": "string"
+},
+"participant": {
+"description": "The participant that the suggestion is compiled for. And This field is used to call Participants.ListSuggestions API. Format: `projects//conversations//participants/`. It will not be set in legacy workflow. HumanAgentAssistantConfig.name for more information.",
+"type": "string"
+},
+"suggestionResults": {
+"description": "The suggestion results payload that this notification refers to. It will only be set when HumanAgentAssistantConfig.SuggestionConfig.group_suggestion_responses sets to true.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestionResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentHandoffConfig": {
+"description": "Defines the hand off to a live agent, typically on which external agent service provider to connect to a conversation. Currently, this feature is not general available, please contact Google to get access.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentHandoffConfig",
+"properties": {
+"livePersonConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfig",
+"description": "Uses [LivePerson](https://www.liveperson.com)."
+},
+"salesforceLiveAgentConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfig",
+"description": "Uses Salesforce Live Agent."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfig": {
+"description": "Configuration specific to [LivePerson](https://www.liveperson.com).",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigLivePersonConfig",
+"properties": {
+"accountNumber": {
+"description": "Required. Account number of the LivePerson account to connect. This is the account number you input at the login page.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfig": {
+"description": "Configuration specific to Salesforce Live Agent.",
+"id": "GoogleCloudDialogflowV2beta1HumanAgentHandoffConfigSalesforceLiveAgentConfig",
+"properties": {
+"buttonId": {
+"description": "Required. Live Agent chat button ID.",
+"type": "string"
+},
+"deploymentId": {
+"description": "Required. Live Agent deployment ID.",
+"type": "string"
+},
+"endpointDomain": {
+"description": "Required. Domain of the Live Agent endpoint for this agent. You can find the endpoint URL in the `Live Agent settings` page. For example if URL has the form https://d.la4-c2-phx.salesforceliveagent.com/..., you should fill in d.la4-c2-phx.salesforceliveagent.com.",
+"type": "string"
+},
+"organizationId": {
+"description": "Required. The organization ID of the Salesforce account.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ImportAgentRequest": {
+"description": "The request message for Agents.ImportAgent.",
+"id": "GoogleCloudDialogflowV2beta1ImportAgentRequest",
+"properties": {
+"agentContent": {
+"description": "Zip compressed raw byte content for agent.",
+"format": "byte",
+"type": "string"
+},
+"agentUri": {
+"description": "The URI to a Google Cloud Storage file containing the agent to import. Note: The URI must start with \"gs://\". Dialogflow performs a read operation for the Cloud Storage object on the caller's behalf, so your request authentication must have read permissions for the object. For more information, see [Dialogflow access control](https://cloud.google.com/dialogflow/cx/docs/concept/access-control#storage).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ImportDocumentTemplate": {
+"description": "The template used for importing documents.",
+"id": "GoogleCloudDialogflowV2beta1ImportDocumentTemplate",
+"properties": {
+"knowledgeTypes": {
+"description": "Required. The knowledge type of document content.",
+"items": {
+"enum": [
+"KNOWLEDGE_TYPE_UNSPECIFIED",
+"FAQ",
+"EXTRACTIVE_QA",
+"ARTICLE_SUGGESTION",
+"AGENT_FACING_SMART_REPLY",
+"SMART_REPLY"
+],
+"enumDescriptions": [
+"The type is unspecified or arbitrary.",
+"The document content contains question and answer pairs as either HTML or CSV. Typical FAQ HTML formats are parsed accurately, but unusual formats may fail to be parsed. CSV must have questions in the first column and answers in the second, with no header. Because of this explicit format, they are always parsed accurately.",
+"Documents for which unstructured text is extracted and used for question answering.",
+"The entire document content as a whole can be used for query results. Only for Contact Center Solutions on Dialogflow.",
+"The document contains agent-facing Smart Reply entries.",
+"The legacy enum for agent-facing smart reply feature."
+],
+"type": "string"
+},
+"type": "array"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Metadata for the document. The metadata supports arbitrary key-value pairs. Suggested use cases include storing a document's title, an external URL distinct from the document's content_uri, etc. The max size of a `key` or a `value` of the metadata is 1024 bytes.",
+"type": "object"
+},
+"mimeType": {
+"description": "Required. The MIME type of the document.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ImportDocumentsRequest": {
+"description": "Request message for Documents.ImportDocuments.",
+"id": "GoogleCloudDialogflowV2beta1ImportDocumentsRequest",
+"properties": {
+"documentTemplate": {
+"$ref": "GoogleCloudDialogflowV2beta1ImportDocumentTemplate",
+"description": "Required. Document template used for importing all the documents."
+},
+"gcsSource": {
+"$ref": "GoogleCloudDialogflowV2beta1GcsSources",
+"description": "Optional. The Google Cloud Storage location for the documents. The path can include a wildcard. These URIs may have the forms `gs:///`. `gs:////*.`."
+},
+"importGcsCustomMetadata": {
+"description": "Whether to import custom metadata from Google Cloud Storage. Only valid when the document source is Google Cloud Storage URI.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ImportDocumentsResponse": {
+"description": "Response message for Documents.ImportDocuments.",
+"id": "GoogleCloudDialogflowV2beta1ImportDocumentsResponse",
+"properties": {
+"warnings": {
+"description": "Includes details about skipped documents or any other warnings.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1InferenceParameter": {
+"description": "The parameters of inference.",
+"id": "GoogleCloudDialogflowV2beta1InferenceParameter",
+"properties": {
+"maxOutputTokens": {
+"description": "Optional. Maximum number of the output tokens for the generator.",
+"format": "int32",
+"type": "integer"
+},
+"temperature": {
+"description": "Optional. Controls the randomness of LLM predictions. Low temperature = less random. High temperature = more random. If unset (or 0), uses a default value of 0.",
+"format": "double",
+"type": "number"
+},
+"topK": {
+"description": "Optional. Top-k changes how the model selects tokens for output. A top-k of 1 means the selected token is the most probable among all tokens in the model's vocabulary (also called greedy decoding), while a top-k of 3 means that the next token is selected from among the 3 most probable tokens (using temperature). For each token selection step, the top K tokens with the highest probabilities are sampled. Then tokens are further filtered based on topP with the final token selected using temperature sampling. Specify a lower value for less random responses and a higher value for more random responses. Acceptable value is [1, 40], default to 40.",
+"format": "int32",
+"type": "integer"
+},
+"topP": {
+"description": "Optional. Top-p changes how the model selects tokens for output. Tokens are selected from most K (see topK parameter) probable to least until the sum of their probabilities equals the top-p value. For example, if tokens A, B, and C have a probability of 0.3, 0.2, and 0.1 and the top-p value is 0.5, then the model will select either A or B as the next token (using temperature) and doesn't consider C. The default top-p value is 0.95. Specify a lower value for less random responses and a higher value for more random responses. Acceptable value is [0.0, 1.0], default to 0.95.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1InitializeEncryptionSpecMetadata": {
+"description": "Metadata for initializing a location-level encryption specification.",
+"id": "GoogleCloudDialogflowV2beta1InitializeEncryptionSpecMetadata",
+"properties": {
+"request": {
+"$ref": "GoogleCloudDialogflowV2beta1InitializeEncryptionSpecRequest",
+"description": "Output only. The original request for initialization.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1InitializeEncryptionSpecRequest": {
+"description": "The request to initialize a location-level encryption specification.",
+"id": "GoogleCloudDialogflowV2beta1InitializeEncryptionSpecRequest",
+"properties": {
+"encryptionSpec": {
+"$ref": "GoogleCloudDialogflowV2beta1EncryptionSpec",
+"description": "Required. The encryption spec used for CMEK encryption. It is required that the kms key is in the same region as the endpoint. The same key will be used for all provisioned resources, if encryption is available. If the kms_key_name is left empty, no encryption will be enforced."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1InputAudioConfig": {
+"description": "Instructs the speech recognizer on how to process the audio content.",
+"id": "GoogleCloudDialogflowV2beta1InputAudioConfig",
+"properties": {
+"audioEncoding": {
+"description": "Required. Audio encoding of the audio content to process.",
+"enum": [
+"AUDIO_ENCODING_UNSPECIFIED",
+"AUDIO_ENCODING_LINEAR_16",
+"AUDIO_ENCODING_FLAC",
+"AUDIO_ENCODING_MULAW",
+"AUDIO_ENCODING_AMR",
+"AUDIO_ENCODING_AMR_WB",
+"AUDIO_ENCODING_OGG_OPUS",
+"AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE",
+"AUDIO_ENCODING_ALAW"
+],
+"enumDescriptions": [
+"Not specified.",
+"Uncompressed 16-bit signed little-endian samples (Linear PCM).",
+"[`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio Codec) is the recommended encoding because it is lossless (therefore recognition is not compromised) and requires only about half the bandwidth of `LINEAR16`. `FLAC` stream encoding supports 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are supported.",
+"8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
+"Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000.",
+"Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.",
+"Opus encoded audio frames in Ogg container ([OggOpus](https://wiki.xiph.org/OggOpus)). `sample_rate_hertz` must be 16000.",
+"Although the use of lossy encodings is not recommended, if a very low bitrate encoding is required, `OGG_OPUS` is highly preferred over Speex encoding. The [Speex](https://speex.org/) encoding supported by Dialogflow API has a header byte in each block, as in MIME type `audio/x-speex-with-header-byte`. It is a variant of the RTP Speex encoding defined in [RFC 5574](https://tools.ietf.org/html/rfc5574). The stream is a sequence of blocks, one block per RTP packet. Each block starts with a byte containing the length of the block, in bytes, followed by one or more frames of Speex data, padded to an integral number of bytes (octets) as specified in RFC 5574. In other words, each RTP header is replaced with a single byte containing the block length. Only Speex wideband is supported. `sample_rate_hertz` must be 16000.",
+"8-bit samples that compand 13-bit audio samples using G.711 PCMU/a-law."
+],
+"type": "string"
+},
+"bargeInConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1BargeInConfig",
+"description": "Configuration of barge-in behavior during the streaming of input audio."
+},
+"defaultNoSpeechTimeout": {
+"description": "If set, use this no-speech timeout when the agent does not provide a no-speech timeout itself.",
+"format": "google-duration",
+"type": "string"
+},
+"disableNoSpeechRecognizedEvent": {
+"description": "Only used in Participants.AnalyzeContent and Participants.StreamingAnalyzeContent. If `false` and recognition doesn't return any result, trigger `NO_SPEECH_RECOGNIZED` event to Dialogflow agent.",
+"type": "boolean"
+},
+"enableAutomaticPunctuation": {
+"description": "Enable automatic punctuation option at the speech backend.",
+"type": "boolean"
+},
+"enableWordInfo": {
+"description": "If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult with information about the recognized speech words, e.g. start and end time offsets. If false or unspecified, Speech doesn't return any word-level information.",
+"type": "boolean"
+},
+"languageCode": {
+"description": "Required. The language of the supplied audio. Dialogflow does not do translations. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language.",
+"type": "string"
+},
+"model": {
+"description": "Optional. Which Speech model to select for the given request. For more information, see [Speech models](https://cloud.google.com/dialogflow/es/docs/speech-models).",
+"type": "string"
+},
+"modelVariant": {
+"description": "Which variant of the Speech model to use.",
+"enum": [
+"SPEECH_MODEL_VARIANT_UNSPECIFIED",
+"USE_BEST_AVAILABLE",
+"USE_STANDARD",
+"USE_ENHANCED"
+],
+"enumDescriptions": [
+"No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.",
+"Use the best available variant of the Speech model that the caller is eligible for. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible for enhanced models.",
+"Use standard model variant even if an enhanced model is available. See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) for details about enhanced models.",
+"Use an enhanced model variant: * If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant. The [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) describes which models have enhanced variants. * If the API caller isn't eligible for enhanced models, Dialogflow returns an error. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible."
+],
+"type": "string"
+},
+"optOutConformerModelMigration": {
+"description": "If `true`, the request will opt out for STT conformer model migration. This field will be deprecated once force migration takes place in June 2024. Please refer to [Dialogflow ES Speech model migration](https://cloud.google.com/dialogflow/es/docs/speech-model-migration).",
+"type": "boolean"
+},
+"phraseHints": {
+"deprecated": true,
+"description": "A list of strings containing words and phrases that the speech recognizer should recognize with higher likelihood. See [the Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more details. This field is deprecated. Please use [`speech_contexts`]() instead. If you specify both [`phrase_hints`]() and [`speech_contexts`](), Dialogflow will treat the [`phrase_hints`]() as a single additional [`SpeechContext`]().",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"phraseSets": {
+"description": "A collection of phrase set resources to use for speech adaptation.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sampleRateHertz": {
+"description": "Required. Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics) for more details.",
+"format": "int32",
+"type": "integer"
+},
+"singleUtterance": {
+"description": "If `false` (default), recognition does not cease until the client closes the stream. If `true`, the recognizer will detect a single spoken utterance in input audio. Recognition ceases when it detects the audio's voice has stopped or paused. In this case, once a detected intent is received, the client should close the stream and start a new request with a new stream as needed. Note: This setting is relevant only for streaming methods. Note: When specified, InputAudioConfig.single_utterance takes precedence over StreamingDetectIntentRequest.single_utterance.",
+"type": "boolean"
+},
+"speechContexts": {
+"description": "Context information to assist speech recognition. See [the Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/basics#phrase-hints) for more details.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SpeechContext"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Intent": {
+"description": "An intent categorizes an end-user's intention for one conversation turn. For each agent, you define many intents, where your combined intents can handle a complete conversation. When an end-user writes or says something, referred to as an end-user expression or end-user input, Dialogflow matches the end-user input to the best intent in your agent. Matching an intent is also known as intent classification. For more information, see the [intent guide](https://cloud.google.com/dialogflow/docs/intents-overview).",
+"id": "GoogleCloudDialogflowV2beta1Intent",
+"properties": {
+"action": {
+"description": "Optional. The name of the action associated with the intent. Note: The action name must not contain whitespaces.",
+"type": "string"
+},
+"defaultResponsePlatforms": {
+"description": "Optional. The list of platforms for which the first responses will be copied from the messages in PLATFORM_UNSPECIFIED (i.e. default platform).",
+"items": {
+"enum": [
+"PLATFORM_UNSPECIFIED",
+"FACEBOOK",
+"SLACK",
+"TELEGRAM",
+"KIK",
+"SKYPE",
+"LINE",
+"VIBER",
+"ACTIONS_ON_GOOGLE",
+"TELEPHONY",
+"GOOGLE_HANGOUTS"
+],
+"enumDescriptions": [
+"Not specified.",
+"Facebook.",
+"Slack.",
+"Telegram.",
+"Kik.",
+"Skype.",
+"Line.",
+"Viber.",
+"Google Assistant See [Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
+"Telephony Gateway.",
+"Google Hangouts."
+],
+"type": "string"
+},
+"type": "array"
+},
+"displayName": {
+"description": "Required. The name of this intent.",
+"type": "string"
+},
+"endInteraction": {
+"description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false.",
+"type": "boolean"
+},
+"events": {
+"description": "Optional. The collection of event names that trigger the intent. If the collection of input contexts is not empty, all of the contexts must be present in the active user session for an event to trigger this intent. Event names are limited to 150 characters.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"followupIntentInfo": {
+"description": "Output only. Information about all followup intents that have this intent as a direct or indirect parent. We populate this field only in the output.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentFollowupIntentInfo"
+},
+"readOnly": true,
+"type": "array"
+},
+"inputContextNames": {
+"description": "Optional. The list of context names required for this intent to be triggered. Formats: - `projects//agent/sessions/-/contexts/` - `projects//locations//agent/sessions/-/contexts/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"isFallback": {
+"description": "Optional. Indicates whether this is a fallback intent.",
+"type": "boolean"
+},
+"liveAgentHandoff": {
+"description": "Optional. Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false.",
+"type": "boolean"
+},
+"messages": {
+"description": "Optional. The collection of rich messages corresponding to the `Response` field in the Dialogflow console.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessage"
+},
+"type": "array"
+},
+"mlDisabled": {
+"description": "Optional. Indicates whether Machine Learning is disabled for the intent. Note: If `ml_disabled` setting is set to true, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off.",
+"type": "boolean"
+},
+"mlEnabled": {
+"deprecated": true,
+"description": "Optional. Indicates whether Machine Learning is enabled for the intent. Note: If `ml_enabled` setting is set to false, then this intent is not taken into account during inference in `ML ONLY` match mode. Also, auto-markup in the UI is turned off. DEPRECATED! Please use `ml_disabled` field instead. NOTE: If both `ml_enabled` and `ml_disabled` are either not set or false, then the default value is determined as follows: - Before April 15th, 2018 the default is: ml_enabled = false / ml_disabled = true. - After April 15th, 2018 the default is: ml_enabled = true / ml_disabled = false.",
+"type": "boolean"
+},
+"name": {
+"description": "Optional. The unique identifier of this intent. Required for Intents.UpdateIntent and Intents.BatchUpdateIntents methods. Supported formats: - `projects//agent/intents/` - `projects//locations//agent/intents/`",
+"type": "string"
+},
+"outputContexts": {
+"description": "Optional. The collection of contexts that are activated when the intent is matched. Context messages in this collection should not set the parameters field. Setting the `lifespan_count` to 0 will reset the context when the intent is matched. Format: `projects//agent/sessions/-/contexts/`.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"type": "array"
+},
+"parameters": {
+"description": "Optional. The collection of parameters associated with the intent.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentParameter"
+},
+"type": "array"
+},
+"parentFollowupIntentName": {
+"description": "Optional. The unique identifier of the parent intent in the chain of followup intents. You can set this field when creating an intent, for example with CreateIntent or BatchUpdateIntents, in order to make this intent a followup intent. It identifies the parent followup intent. Format: `projects//agent/intents/`.",
+"type": "string"
+},
+"priority": {
+"description": "Optional. The priority of this intent. Higher numbers represent higher priorities. - If the supplied value is unspecified or 0, the service translates the value to 500,000, which corresponds to the `Normal` priority in the console. - If the supplied value is negative, the intent is ignored in runtime detect intent requests.",
+"format": "int32",
+"type": "integer"
+},
+"resetContexts": {
+"description": "Optional. Indicates whether to delete all contexts in the current session when this intent is matched.",
+"type": "boolean"
+},
+"rootFollowupIntentName": {
+"description": "Output only. The unique identifier of the root intent in the chain of followup intents. It identifies the correct followup intents chain for this intent. Format: `projects//agent/intents/`.",
+"readOnly": true,
+"type": "string"
+},
+"trainingPhrases": {
+"description": "Optional. The collection of examples that the agent is trained on.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentTrainingPhrase"
+},
+"type": "array"
+},
+"webhookState": {
+"description": "Optional. Indicates whether webhooks are enabled for the intent.",
+"enum": [
+"WEBHOOK_STATE_UNSPECIFIED",
+"WEBHOOK_STATE_ENABLED",
+"WEBHOOK_STATE_ENABLED_FOR_SLOT_FILLING"
+],
+"enumDescriptions": [
+"Webhook is disabled in the agent and in the intent.",
+"Webhook is enabled in the agent and in the intent.",
+"Webhook is enabled in the agent and in the intent. Also, each slot filling prompt is forwarded to the webhook."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentBatch": {
+"description": "This message is a wrapper around a collection of intents.",
+"id": "GoogleCloudDialogflowV2beta1IntentBatch",
+"properties": {
+"intents": {
+"description": "A collection of intents.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentFollowupIntentInfo": {
+"description": "Represents a single followup intent in the chain.",
+"id": "GoogleCloudDialogflowV2beta1IntentFollowupIntentInfo",
+"properties": {
+"followupIntentName": {
+"description": "The unique identifier of the followup intent. Format: `projects//agent/intents/`.",
+"type": "string"
+},
+"parentFollowupIntentName": {
+"description": "The unique identifier of the followup intent's parent. Format: `projects//agent/intents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentInput": {
+"description": "Represents the intent to trigger programmatically rather than as a result of natural language processing. The intent input is only used for V3 agent.",
+"id": "GoogleCloudDialogflowV2beta1IntentInput",
+"properties": {
+"intent": {
+"description": "Required. The unique identifier of the intent in V3 agent. Format: `projects//locations//locations//agents//intents/`.",
+"type": "string"
+},
+"languageCode": {
+"description": "Required. The language of this conversational query. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessage": {
+"description": "Corresponds to the `Response` field in the Dialogflow console.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessage",
+"properties": {
+"basicCard": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageBasicCard",
+"description": "Displays a basic card for Actions on Google."
+},
+"browseCarouselCard": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCard",
+"description": "Browse carousel card for Actions on Google."
+},
+"card": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageCard",
+"description": "Displays a card."
+},
+"carouselSelect": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageCarouselSelect",
+"description": "Displays a carousel card for Actions on Google."
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"description": "Displays an image."
+},
+"linkOutSuggestion": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestion",
+"description": "Displays a link out suggestion chip for Actions on Google."
+},
+"listSelect": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageListSelect",
+"description": "Displays a list card for Actions on Google."
+},
+"mediaContent": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageMediaContent",
+"description": "The media content card for Actions on Google."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "A custom platform-specific response.",
+"type": "object"
+},
+"platform": {
+"description": "Optional. The platform that this message is intended for.",
+"enum": [
+"PLATFORM_UNSPECIFIED",
+"FACEBOOK",
+"SLACK",
+"TELEGRAM",
+"KIK",
+"SKYPE",
+"LINE",
+"VIBER",
+"ACTIONS_ON_GOOGLE",
+"TELEPHONY",
+"GOOGLE_HANGOUTS"
+],
+"enumDescriptions": [
+"Not specified.",
+"Facebook.",
+"Slack.",
+"Telegram.",
+"Kik.",
+"Skype.",
+"Line.",
+"Viber.",
+"Google Assistant See [Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
+"Telephony Gateway.",
+"Google Hangouts."
+],
+"type": "string"
+},
+"quickReplies": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageQuickReplies",
+"description": "Displays quick replies."
+},
+"rbmCarouselRichCard": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCard",
+"description": "Rich Business Messaging (RBM) carousel rich card response."
+},
+"rbmStandaloneRichCard": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCard",
+"description": "Standalone Rich Business Messaging (RBM) rich card response."
+},
+"rbmText": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmText",
+"description": "Rich Business Messaging (RBM) text response. RBM allows businesses to send enriched and branded versions of SMS. See https://jibe.google.com/business-messaging."
+},
+"simpleResponses": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageSimpleResponses",
+"description": "Returns a voice or text-only response for Actions on Google."
+},
+"suggestions": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageSuggestions",
+"description": "Displays suggestion chips for Actions on Google."
+},
+"tableCard": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageTableCard",
+"description": "Table card for Actions on Google."
+},
+"telephonyPlayAudio": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudio",
+"description": "Plays audio from a file in Telephony Gateway."
+},
+"telephonySynthesizeSpeech": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeech",
+"description": "Synthesizes speech in Telephony Gateway."
+},
+"telephonyTransferCall": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCall",
+"description": "Transfers the call in Telephony Gateway."
+},
+"text": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageText",
+"description": "Returns a text response."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageBasicCard": {
+"description": "The basic card message. Useful for displaying information.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageBasicCard",
+"properties": {
+"buttons": {
+"description": "Optional. The collection of card buttons.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton"
+},
+"type": "array"
+},
+"formattedText": {
+"description": "Required, unless image is present. The body text of the card.",
+"type": "string"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"description": "Optional. The image for the card."
+},
+"subtitle": {
+"description": "Optional. The subtitle of the card.",
+"type": "string"
+},
+"title": {
+"description": "Optional. The title of the card.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton": {
+"description": "The button object that appears at the bottom of a card.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton",
+"properties": {
+"openUriAction": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriAction",
+"description": "Required. Action to take when a user taps on the button."
+},
+"title": {
+"description": "Required. The title of the button.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriAction": {
+"description": "Opens the given URI.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageBasicCardButtonOpenUriAction",
+"properties": {
+"uri": {
+"description": "Required. The HTTP or HTTPS scheme URI.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCard": {
+"description": "Browse Carousel Card for Actions on Google. https://developers.google.com/actions/assistant/responses#browsing_carousel",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCard",
+"properties": {
+"imageDisplayOptions": {
+"description": "Optional. Settings for displaying the image. Applies to every image in items.",
+"enum": [
+"IMAGE_DISPLAY_OPTIONS_UNSPECIFIED",
+"GRAY",
+"WHITE",
+"CROPPED",
+"BLURRED_BACKGROUND"
+],
+"enumDescriptions": [
+"Fill the gaps between the image and the image container with gray bars.",
+"Fill the gaps between the image and the image container with gray bars.",
+"Fill the gaps between the image and the image container with white bars.",
+"Image is scaled such that the image width and height match or exceed the container dimensions. This may crop the top and bottom of the image if the scaled image height is greater than the container height, or crop the left and right of the image if the scaled image width is greater than the container width. This is similar to \"Zoom Mode\" on a widescreen TV when playing a 4:3 video.",
+"Pad the gaps between image and image frame with a blurred copy of the same image."
+],
+"type": "string"
+},
+"items": {
+"description": "Required. List of items in the Browse Carousel Card. Minimum of two items, maximum of ten.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItem"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItem": {
+"description": "Browsing carousel tile",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItem",
+"properties": {
+"description": {
+"description": "Optional. Description of the carousel item. Maximum of four lines of text.",
+"type": "string"
+},
+"footer": {
+"description": "Optional. Text that appears at the bottom of the Browse Carousel Card. Maximum of one line of text.",
+"type": "string"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"description": "Optional. Hero image for the carousel item."
+},
+"openUriAction": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction",
+"description": "Required. Action to present to the user."
+},
+"title": {
+"description": "Required. Title of the carousel item. Maximum of two lines of text.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction": {
+"description": "Actions on Google action to open a given url.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageBrowseCarouselCardBrowseCarouselCardItemOpenUrlAction",
+"properties": {
+"url": {
+"description": "Required. URL",
+"type": "string"
+},
+"urlTypeHint": {
+"description": "Optional. Specifies the type of viewer that is used when opening the URL. Defaults to opening via web browser.",
+"enum": [
+"URL_TYPE_HINT_UNSPECIFIED",
+"AMP_ACTION",
+"AMP_CONTENT"
+],
+"enumDescriptions": [
+"Unspecified",
+"Url would be an amp action",
+"URL that points directly to AMP content, or to a canonical URL which refers to AMP content via ."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageCard": {
+"description": "The card response message.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageCard",
+"properties": {
+"buttons": {
+"description": "Optional. The collection of card buttons.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageCardButton"
+},
+"type": "array"
+},
+"imageUri": {
+"description": "Optional. The public URI to an image file for the card.",
+"type": "string"
+},
+"subtitle": {
+"description": "Optional. The subtitle of the card.",
+"type": "string"
+},
+"title": {
+"description": "Optional. The title of the card.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageCardButton": {
+"description": "Optional. Contains information about a button.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageCardButton",
+"properties": {
+"postback": {
+"description": "Optional. The text to send back to the Dialogflow API or a URI to open.",
+"type": "string"
+},
+"text": {
+"description": "Optional. The text to show on the button.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageCarouselSelect": {
+"description": "The card for presenting a carousel of options to select from.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageCarouselSelect",
+"properties": {
+"items": {
+"description": "Required. Carousel items.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItem"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItem": {
+"description": "An item in the carousel.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageCarouselSelectItem",
+"properties": {
+"description": {
+"description": "Optional. The body text of the card.",
+"type": "string"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"description": "Optional. The image to display."
+},
+"info": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo",
+"description": "Required. Additional info about the option item."
+},
+"title": {
+"description": "Required. Title of the carousel item.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageColumnProperties": {
+"description": "Column properties for TableCard.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageColumnProperties",
+"properties": {
+"header": {
+"description": "Required. Column heading.",
+"type": "string"
+},
+"horizontalAlignment": {
+"description": "Optional. Defines text alignment for all cells in this column.",
+"enum": [
+"HORIZONTAL_ALIGNMENT_UNSPECIFIED",
+"LEADING",
+"CENTER",
+"TRAILING"
+],
+"enumDescriptions": [
+"Text is aligned to the leading edge of the column.",
+"Text is aligned to the leading edge of the column.",
+"Text is centered in the column.",
+"Text is aligned to the trailing edge of the column."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageImage": {
+"description": "The image response message.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"properties": {
+"accessibilityText": {
+"description": "A text description of the image to be used for accessibility, e.g., screen readers. Required if image_uri is set for CarouselSelect.",
+"type": "string"
+},
+"imageUri": {
+"description": "Optional. The public URI to an image file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestion": {
+"description": "The suggestion chip message that allows the user to jump out to the app or website associated with this agent.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageLinkOutSuggestion",
+"properties": {
+"destinationName": {
+"description": "Required. The name of the app or site this chip is linking to.",
+"type": "string"
+},
+"uri": {
+"description": "Required. The URI of the app or site to open when the user taps the suggestion chip.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageListSelect": {
+"description": "The card for presenting a list of options to select from.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageListSelect",
+"properties": {
+"items": {
+"description": "Required. List items.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageListSelectItem"
+},
+"type": "array"
+},
+"subtitle": {
+"description": "Optional. Subtitle of the list.",
+"type": "string"
+},
+"title": {
+"description": "Optional. The overall title of the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageListSelectItem": {
+"description": "An item in the list.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageListSelectItem",
+"properties": {
+"description": {
+"description": "Optional. The main text describing the item.",
+"type": "string"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"description": "Optional. The image to display."
+},
+"info": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo",
+"description": "Required. Additional information about this option."
+},
+"title": {
+"description": "Required. The title of the list item.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageMediaContent": {
+"description": "The media content card for Actions on Google.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageMediaContent",
+"properties": {
+"mediaObjects": {
+"description": "Required. List of media objects.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObject"
+},
+"type": "array"
+},
+"mediaType": {
+"description": "Optional. What type of media is the content (ie \"audio\").",
+"enum": [
+"RESPONSE_MEDIA_TYPE_UNSPECIFIED",
+"AUDIO"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Response media type is audio."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObject": {
+"description": "Response media object for media content card.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageMediaContentResponseMediaObject",
+"properties": {
+"contentUrl": {
+"description": "Required. Url where the media is stored.",
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of media card.",
+"type": "string"
+},
+"icon": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"description": "Optional. Icon to display above media content."
+},
+"largeImage": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"description": "Optional. Image to display above media content."
+},
+"name": {
+"description": "Required. Name of media card.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageQuickReplies": {
+"description": "The quick replies response message.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageQuickReplies",
+"properties": {
+"quickReplies": {
+"description": "Optional. The collection of quick replies.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"title": {
+"description": "Optional. The title of the collection of quick replies.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent": {
+"description": "Rich Business Messaging (RBM) Card content",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent",
+"properties": {
+"description": {
+"description": "Optional. Description of the card (at most 2000 bytes). At least one of the title, description or media must be set.",
+"type": "string"
+},
+"media": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMedia",
+"description": "Optional. However at least one of the title, description or media must be set. Media (image, GIF or a video) to include in the card."
+},
+"suggestions": {
+"description": "Optional. List of suggestions to include in the card.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion"
+},
+"type": "array"
+},
+"title": {
+"description": "Optional. Title of the card (at most 200 bytes). At least one of the title, description or media must be set.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMedia": {
+"description": "Rich Business Messaging (RBM) Media displayed in Cards The following media-types are currently supported: Image Types * image/jpeg * image/jpg' * image/gif * image/png Video Types * video/h263 * video/m4v * video/mp4 * video/mpeg * video/mpeg4 * video/webm",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmCardContentRbmMedia",
+"properties": {
+"fileUri": {
+"description": "Required. Publicly reachable URI of the file. The RBM platform determines the MIME type of the file from the content-type field in the HTTP headers when the platform fetches the file. The content-type field must be present and accurate in the HTTP response from the URL.",
+"type": "string"
+},
+"height": {
+"description": "Required for cards with vertical orientation. The height of the media within a rich card with a vertical layout. For a standalone card with horizontal layout, height is not customizable, and this field is ignored.",
+"enum": [
+"HEIGHT_UNSPECIFIED",
+"SHORT",
+"MEDIUM",
+"TALL"
+],
+"enumDescriptions": [
+"Not specified.",
+"112 DP.",
+"168 DP.",
+"264 DP. Not available for rich card carousels when the card width is set to small."
+],
+"type": "string"
+},
+"thumbnailUri": {
+"description": "Optional. Publicly reachable URI of the thumbnail.If you don't provide a thumbnail URI, the RBM platform displays a blank placeholder thumbnail until the user's device downloads the file. Depending on the user's setting, the file may not download automatically and may require the user to tap a download button.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCard": {
+"description": "Carousel Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. If you want to show a single card with more control over the layout, please use RbmStandaloneCard instead.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmCarouselCard",
+"properties": {
+"cardContents": {
+"description": "Required. The cards in the carousel. A carousel must have at least 2 cards and at most 10.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent"
+},
+"type": "array"
+},
+"cardWidth": {
+"description": "Required. The width of the cards in the carousel.",
+"enum": [
+"CARD_WIDTH_UNSPECIFIED",
+"SMALL",
+"MEDIUM"
+],
+"enumDescriptions": [
+"Not specified.",
+"120 DP. Note that tall media cannot be used.",
+"232 DP."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCard": {
+"description": "Standalone Rich Business Messaging (RBM) rich card. Rich cards allow you to respond to users with more vivid content, e.g. with media and suggestions. You can group multiple rich cards into one using RbmCarouselCard but carousel cards will give you less control over the card layout.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmStandaloneCard",
+"properties": {
+"cardContent": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmCardContent",
+"description": "Required. Card content."
+},
+"cardOrientation": {
+"description": "Required. Orientation of the card.",
+"enum": [
+"CARD_ORIENTATION_UNSPECIFIED",
+"HORIZONTAL",
+"VERTICAL"
+],
+"enumDescriptions": [
+"Not specified.",
+"Horizontal layout.",
+"Vertical layout."
+],
+"type": "string"
+},
+"thumbnailImageAlignment": {
+"description": "Required if orientation is horizontal. Image preview alignment for standalone cards with horizontal layout.",
+"enum": [
+"THUMBNAIL_IMAGE_ALIGNMENT_UNSPECIFIED",
+"LEFT",
+"RIGHT"
+],
+"enumDescriptions": [
+"Not specified.",
+"Thumbnail preview is left-aligned.",
+"Thumbnail preview is right-aligned."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedAction": {
+"description": "Rich Business Messaging (RBM) suggested client-side action that the user can choose from the card.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedAction",
+"properties": {
+"dial": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDial",
+"description": "Suggested client side action: Dial a phone number"
+},
+"openUrl": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUri",
+"description": "Suggested client side action: Open a URI on device"
+},
+"postbackData": {
+"description": "Opaque payload that the Dialogflow receives in a user event when the user taps the suggested action. This data will be also forwarded to webhook to allow performing custom business logic.",
+"type": "string"
+},
+"shareLocation": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocation",
+"description": "Suggested client side action: Share user location"
+},
+"text": {
+"description": "Text to display alongside the action.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDial": {
+"description": "Opens the user's default dialer app with the specified phone number but does not dial automatically.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionDial",
+"properties": {
+"phoneNumber": {
+"description": "Required. The phone number to fill in the default dialer app. This field should be in [E.164](https://en.wikipedia.org/wiki/E.164) format. An example of a correctly formatted phone number: +15556767888.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUri": {
+"description": "Opens the user's default web browser app to the specified uri If the user has an app installed that is registered as the default handler for the URL, then this app will be opened instead, and its icon will be used in the suggested action UI.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionOpenUri",
+"properties": {
+"uri": {
+"description": "Required. The uri to open on the user device",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocation": {
+"description": "Opens the device's location chooser so the user can pick a location to send back to the agent.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedActionRbmSuggestedActionShareLocation",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReply": {
+"description": "Rich Business Messaging (RBM) suggested reply that the user can click instead of typing in their own response.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReply",
+"properties": {
+"postbackData": {
+"description": "Opaque payload that the Dialogflow receives in a user event when the user taps the suggested reply. This data will be also forwarded to webhook to allow performing custom business logic.",
+"type": "string"
+},
+"text": {
+"description": "Suggested reply text.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion": {
+"description": "Rich Business Messaging (RBM) suggestion. Suggestions allow user to easily select/click a predefined response or perform an action (like opening a web uri).",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion",
+"properties": {
+"action": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedAction",
+"description": "Predefined client side actions that user can choose"
+},
+"reply": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestedReply",
+"description": "Predefined replies for user to select instead of typing"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageRbmText": {
+"description": "Rich Business Messaging (RBM) text response with suggestions.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageRbmText",
+"properties": {
+"rbmSuggestion": {
+"description": "Optional. One or more suggestions to show to the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageRbmSuggestion"
+},
+"type": "array"
+},
+"text": {
+"description": "Required. Text sent and displayed to the user.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo": {
+"description": "Additional info about the select item for when it is triggered in a dialog.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageSelectItemInfo",
+"properties": {
+"key": {
+"description": "Required. A unique key that will be sent back to the agent if this response is given.",
+"type": "string"
+},
+"synonyms": {
+"description": "Optional. A list of synonyms that can also be used to trigger this item in dialog.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageSimpleResponse": {
+"description": "The simple response message containing speech or text.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageSimpleResponse",
+"properties": {
+"displayText": {
+"description": "Optional. The text to display.",
+"type": "string"
+},
+"ssml": {
+"description": "One of text_to_speech or ssml must be provided. Structured spoken response to the user in the SSML format. Mutually exclusive with text_to_speech.",
+"type": "string"
+},
+"textToSpeech": {
+"description": "One of text_to_speech or ssml must be provided. The plain text of the speech output. Mutually exclusive with ssml.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageSimpleResponses": {
+"description": "The collection of simple response candidates. This message in `QueryResult.fulfillment_messages` and `WebhookResponse.fulfillment_messages` should contain only one `SimpleResponse`.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageSimpleResponses",
+"properties": {
+"simpleResponses": {
+"description": "Required. The list of simple responses.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageSimpleResponse"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageSuggestion": {
+"description": "The suggestion chip message that the user can tap to quickly post a reply to the conversation.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageSuggestion",
+"properties": {
+"title": {
+"description": "Required. The text shown the in the suggestion chip.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageSuggestions": {
+"description": "The collection of suggestions.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageSuggestions",
+"properties": {
+"suggestions": {
+"description": "Required. The list of suggested replies.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageSuggestion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageTableCard": {
+"description": "Table card for Actions on Google.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageTableCard",
+"properties": {
+"buttons": {
+"description": "Optional. List of buttons for the card.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageBasicCardButton"
+},
+"type": "array"
+},
+"columnProperties": {
+"description": "Optional. Display properties for the columns in this table.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageColumnProperties"
+},
+"type": "array"
+},
+"image": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageImage",
+"description": "Optional. Image which should be displayed on the card."
+},
+"rows": {
+"description": "Optional. Rows in this table of data.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageTableCardRow"
+},
+"type": "array"
+},
+"subtitle": {
+"description": "Optional. Subtitle to the title.",
+"type": "string"
+},
+"title": {
+"description": "Required. Title of the card.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageTableCardCell": {
+"description": "Cell of TableCardRow.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageTableCardCell",
+"properties": {
+"text": {
+"description": "Required. Text in this cell.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageTableCardRow": {
+"description": "Row of TableCard.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageTableCardRow",
+"properties": {
+"cells": {
+"description": "Optional. List of cells that make up this row.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessageTableCardCell"
+},
+"type": "array"
+},
+"dividerAfter": {
+"description": "Optional. Whether to add a visual divider after this row.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudio": {
+"description": "Plays audio from a file in Telephony Gateway.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageTelephonyPlayAudio",
+"properties": {
+"audioUri": {
+"description": "Required. URI to a Google Cloud Storage object containing the audio to play, e.g., \"gs://bucket/object\". The object must contain a single channel (mono) of linear PCM audio (2 bytes / sample) at 8kHz. This object must be readable by the `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` service account where is the number of the Telephony Gateway project (usually the same as the Dialogflow agent project). If the Google Cloud Storage bucket is in the Telephony Gateway project, this permission is added by default when enabling the Dialogflow V2 API. For audio from other sources, consider using the `TelephonySynthesizeSpeech` message with SSML.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeech": {
+"description": "Synthesizes speech and plays back the synthesized audio to the caller in Telephony Gateway. Telephony Gateway takes the synthesizer settings from `DetectIntentResponse.output_audio_config` which can either be set at request-level or can come from the agent-level synthesizer config.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageTelephonySynthesizeSpeech",
+"properties": {
+"ssml": {
+"description": "The SSML to be synthesized. For more information, see [SSML](https://developers.google.com/actions/reference/ssml).",
+"type": "string"
+},
+"text": {
+"description": "The raw text to be synthesized.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCall": {
+"description": "Transfers the call in Telephony Gateway.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageTelephonyTransferCall",
+"properties": {
+"phoneNumber": {
+"description": "Required. The phone number to transfer the call to in [E.164 format](https://en.wikipedia.org/wiki/E.164). We currently only allow transferring to US numbers (+1xxxyyyzzzz).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentMessageText": {
+"description": "The text response message.",
+"id": "GoogleCloudDialogflowV2beta1IntentMessageText",
+"properties": {
+"text": {
+"description": "Optional. The collection of the agent's responses.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentParameter": {
+"description": "Represents intent parameters.",
+"id": "GoogleCloudDialogflowV2beta1IntentParameter",
+"properties": {
+"defaultValue": {
+"description": "Optional. The default value to use when the `value` yields an empty result. Default values can be extracted from contexts by using the following syntax: `#context_name.parameter_name`.",
+"type": "string"
+},
+"displayName": {
+"description": "Required. The name of the parameter.",
+"type": "string"
+},
+"entityTypeDisplayName": {
+"description": "Optional. The name of the entity type, prefixed with `@`, that describes values of the parameter. If the parameter is required, this must be provided.",
+"type": "string"
+},
+"isList": {
+"description": "Optional. Indicates whether the parameter represents a list of values.",
+"type": "boolean"
+},
+"mandatory": {
+"description": "Optional. Indicates whether the parameter is required. That is, whether the intent cannot be completed without collecting the parameter value.",
+"type": "boolean"
+},
+"name": {
+"description": "The unique identifier of this parameter.",
+"type": "string"
+},
+"prompts": {
+"description": "Optional. The collection of prompts that the agent can present to the user in order to collect a value for the parameter.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"value": {
+"description": "Optional. The definition of the parameter value. It can be: - a constant string, - a parameter value defined as `$parameter_name`, - an original parameter value defined as `$parameter_name.original`, - a parameter value from some context defined as `#context_name.parameter_name`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentSuggestion": {
+"description": "Represents an intent suggestion.",
+"id": "GoogleCloudDialogflowV2beta1IntentSuggestion",
+"properties": {
+"description": {
+"description": "Human readable description for better understanding an intent like its scope, content, result etc. Maximum character limit: 140 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name of the intent.",
+"type": "string"
+},
+"intentV2": {
+"description": "The unique identifier of this intent. Format: `projects//locations//agent/intents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentTrainingPhrase": {
+"description": "Represents an example that the agent is trained on.",
+"id": "GoogleCloudDialogflowV2beta1IntentTrainingPhrase",
+"properties": {
+"name": {
+"description": "Output only. The unique identifier of this training phrase.",
+"readOnly": true,
+"type": "string"
+},
+"parts": {
+"description": "Required. The ordered list of training phrase parts. The parts are concatenated in order to form the training phrase. Note: The API does not automatically annotate training phrases like the Dialogflow Console does. Note: Do not forget to include whitespace at part boundaries, so the training phrase is well formatted when the parts are concatenated. If the training phrase does not need to be annotated with parameters, you just need a single part with only the Part.text field set. If you want to annotate the training phrase, you must create multiple parts, where the fields of each part are populated in one of two ways: - `Part.text` is set to a part of the phrase that has no parameters. - `Part.text` is set to a part of the phrase that you want to annotate, and the `entity_type`, `alias`, and `user_defined` fields are all set.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart"
+},
+"type": "array"
+},
+"timesAddedCount": {
+"description": "Optional. Indicates how many times this example was added to the intent. Each time a developer adds an existing sample by editing an intent or training, this counter is increased.",
+"format": "int32",
+"type": "integer"
+},
+"type": {
+"description": "Required. The type of the training phrase.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"EXAMPLE",
+"TEMPLATE"
+],
+"enumDeprecated": [
+false,
+false,
+true
+],
+"enumDescriptions": [
+"Not specified. This value should never be used.",
+"Examples do not contain @-prefixed entity type names, but example parts can be annotated with entity types.",
+"Templates are not annotated with entity types, but they can contain @-prefixed entity type names as substrings. Note: Template mode has been deprecated. Example mode is the only supported way to create new training phrases. If you have existing training phrases in template mode, they will be removed during training and it can cause a drop in agent performance."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart": {
+"description": "Represents a part of a training phrase.",
+"id": "GoogleCloudDialogflowV2beta1IntentTrainingPhrasePart",
+"properties": {
+"alias": {
+"description": "Optional. The parameter name for the value extracted from the annotated part of the example. This field is required for annotated parts of the training phrase.",
+"type": "string"
+},
+"entityType": {
+"description": "Optional. The entity type name prefixed with `@`. This field is required for annotated parts of the training phrase.",
+"type": "string"
+},
+"text": {
+"description": "Required. The text for this part.",
+"type": "string"
+},
+"userDefined": {
+"description": "Optional. Indicates whether the text was manually annotated. This field is set to true when the Dialogflow Console is used to manually annotate the part. When creating an annotated part with the API, you must set this to true.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeAnswers": {
+"description": "Represents the result of querying a Knowledge base.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeAnswers",
+"properties": {
+"answers": {
+"description": "A list of answers from Knowledge Connector.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeAnswersAnswer"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeAnswersAnswer": {
+"description": "An answer from Knowledge Connector.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeAnswersAnswer",
+"properties": {
+"answer": {
+"description": "The piece of text from the `source` knowledge base document that answers this conversational query.",
+"type": "string"
+},
+"faqQuestion": {
+"description": "The corresponding FAQ question if the answer was extracted from a FAQ Document, empty otherwise.",
+"type": "string"
+},
+"matchConfidence": {
+"description": "The system's confidence score that this Knowledge answer is a good match for this conversational query. The range is from 0.0 (completely uncertain) to 1.0 (completely certain). Note: The confidence score is likely to vary somewhat (possibly even for identical requests), as the underlying model is under constant improvement. It may be deprecated in the future. We recommend using `match_confidence_level` which should be generally more stable.",
+"format": "float",
+"type": "number"
+},
+"matchConfidenceLevel": {
+"description": "The system's confidence level that this knowledge answer is a good match for this conversational query. NOTE: The confidence level for a given `` pair may change without notice, as it depends on models that are constantly being improved. However, it will change less frequently than the confidence score below, and should be preferred for referencing the quality of an answer.",
+"enum": [
+"MATCH_CONFIDENCE_LEVEL_UNSPECIFIED",
+"LOW",
+"MEDIUM",
+"HIGH"
+],
+"enumDescriptions": [
+"Not specified.",
+"Indicates that the confidence is low.",
+"Indicates our confidence is medium.",
+"Indicates our confidence is high."
+],
+"type": "string"
+},
+"source": {
+"description": "Indicates which Knowledge Document this answer was extracted from. Format: `projects//knowledgeBases//documents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeAssistAnswer": {
+"description": "Represents a Knowledge Assist answer.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswer",
+"properties": {
+"answerRecord": {
+"description": "The name of the answer record. Format: `projects//locations//answer Records/`.",
+"type": "string"
+},
+"suggestedQuery": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerSuggestedQuery",
+"description": "The query suggested based on the context. Suggestion is made only if it is different from the previous suggestion."
+},
+"suggestedQueryAnswer": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswer",
+"description": "The answer generated for the suggested query. Whether or not an answer is generated depends on how confident we are about the generated query."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswer": {
+"description": "Represents an answer from Knowledge. Currently supports FAQ and Generative answers.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswer",
+"properties": {
+"answerText": {
+"description": "The piece of text from the `source` that answers this suggested query.",
+"type": "string"
+},
+"faqSource": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerFaqSource",
+"description": "Populated if the prediction came from FAQ."
+},
+"generativeSource": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource",
+"description": "Populated if the prediction was Generative."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerFaqSource": {
+"description": "Details about source of FAQ answer.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerFaqSource",
+"properties": {
+"question": {
+"description": "The corresponding FAQ question.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource": {
+"description": "Details about source of Generative answer.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSource",
+"properties": {
+"snippets": {
+"description": "All snippets used for this Generative Prediction, with their source URI and data.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet": {
+"description": "Snippet Source for a Generative Prediction.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerKnowledgeAnswerGenerativeSourceSnippet",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Metadata of the document.",
+"type": "object"
+},
+"text": {
+"description": "Text taken from that URI.",
+"type": "string"
+},
+"title": {
+"description": "Title of the document.",
+"type": "string"
+},
+"uri": {
+"description": "URI the data is sourced from.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerSuggestedQuery": {
+"description": "Represents a suggested query.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswerSuggestedQuery",
+"properties": {
+"queryText": {
+"description": "Suggested query text.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeBase": {
+"description": "A knowledge base represents a collection of knowledge documents that you provide to Dialogflow. Your knowledge documents contain information that may be useful during conversations with end-users. Some Dialogflow features use knowledge bases when looking for a response to an end-user input. For more information, see the [knowledge base guide](https://cloud.google.com/dialogflow/docs/how/knowledge-bases). Note: The `projects.agent.knowledgeBases` resource is deprecated; only use `projects.knowledgeBases`.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeBase",
+"properties": {
+"displayName": {
+"description": "Required. The display name of the knowledge base. The name must be 1024 bytes or less; otherwise, the creation request fails.",
+"type": "string"
+},
+"languageCode": {
+"description": "Language which represents the KnowledgeBase. When the KnowledgeBase is created/updated, this is populated for all non en-us languages. If not populated, the default language en-us applies.",
+"type": "string"
+},
+"name": {
+"description": "The knowledge base resource name. The name must be empty when creating a knowledge base. Format: `projects//locations//knowledgeBases/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1KnowledgeOperationMetadata": {
+"description": "Metadata in google::longrunning::Operation for Knowledge operations.",
+"id": "GoogleCloudDialogflowV2beta1KnowledgeOperationMetadata",
+"properties": {
+"exportOperationMetadata": {
+"$ref": "GoogleCloudDialogflowV2beta1ExportOperationMetadata",
+"description": "Metadata for the Export Data Operation such as the destination of export."
+},
+"knowledgeBase": {
+"description": "The name of the knowledge base interacted with during the operation.",
+"type": "string"
+},
+"state": {
+"description": "Required. Output only. The current state of this operation.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"RUNNING",
+"DONE"
+],
+"enumDescriptions": [
+"State unspecified.",
+"The operation has been created.",
+"The operation is currently running.",
+"The operation is done, either cancelled or completed."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListAnswerRecordsResponse": {
+"description": "Response message for AnswerRecords.ListAnswerRecords.",
+"id": "GoogleCloudDialogflowV2beta1ListAnswerRecordsResponse",
+"properties": {
+"answerRecords": {
+"description": "The list of answer records.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1AnswerRecord"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to retrieve next page of results. Or empty if there are no more results. Pass this value in the ListAnswerRecordsRequest.page_token field in the subsequent call to `ListAnswerRecords` method to retrieve the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListContextsResponse": {
+"description": "The response message for Contexts.ListContexts.",
+"id": "GoogleCloudDialogflowV2beta1ListContextsResponse",
+"properties": {
+"contexts": {
+"description": "The list of contexts. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListConversationProfilesResponse": {
+"description": "The response message for ConversationProfiles.ListConversationProfiles.",
+"id": "GoogleCloudDialogflowV2beta1ListConversationProfilesResponse",
+"properties": {
+"conversationProfiles": {
+"description": "The list of project conversation profiles. There is a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1ConversationProfile"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListConversationsResponse": {
+"description": "The response message for Conversations.ListConversations.",
+"id": "GoogleCloudDialogflowV2beta1ListConversationsResponse",
+"properties": {
+"conversations": {
+"description": "The list of conversations. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Conversation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListDocumentsResponse": {
+"description": "Response message for Documents.ListDocuments.",
+"id": "GoogleCloudDialogflowV2beta1ListDocumentsResponse",
+"properties": {
+"documents": {
+"description": "The list of documents.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Document"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListEntityTypesResponse": {
+"description": "The response message for EntityTypes.ListEntityTypes.",
+"id": "GoogleCloudDialogflowV2beta1ListEntityTypesResponse",
+"properties": {
+"entityTypes": {
+"description": "The list of agent entity types. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityType"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListEnvironmentsResponse": {
+"description": "The response message for Environments.ListEnvironments.",
+"id": "GoogleCloudDialogflowV2beta1ListEnvironmentsResponse",
+"properties": {
+"environments": {
+"description": "The list of agent environments. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Environment"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListGeneratorsResponse": {
+"description": "Response of ListGenerators.",
+"id": "GoogleCloudDialogflowV2beta1ListGeneratorsResponse",
+"properties": {
+"generators": {
+"description": "List of generators retrieved.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Generator"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListIntentsResponse": {
+"description": "The response message for Intents.ListIntents.",
+"id": "GoogleCloudDialogflowV2beta1ListIntentsResponse",
+"properties": {
+"intents": {
+"description": "The list of agent intents. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListKnowledgeBasesResponse": {
+"description": "Response message for KnowledgeBases.ListKnowledgeBases.",
+"id": "GoogleCloudDialogflowV2beta1ListKnowledgeBasesResponse",
+"properties": {
+"knowledgeBases": {
+"description": "The list of knowledge bases.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeBase"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListMessagesResponse": {
+"description": "The response message for Conversations.ListMessages.",
+"id": "GoogleCloudDialogflowV2beta1ListMessagesResponse",
+"properties": {
+"messages": {
+"description": "Required. The list of messages. There will be a maximum number of items returned based on the page_size field in the request. `messages` is sorted by `create_time` in descending order.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Message"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Optional. Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListParticipantsResponse": {
+"description": "The response message for Participants.ListParticipants.",
+"id": "GoogleCloudDialogflowV2beta1ListParticipantsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to retrieve the next page of results or empty if there are no more results in the list.",
+"type": "string"
+},
+"participants": {
+"description": "The list of participants. There is a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Participant"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListSessionEntityTypesResponse": {
+"description": "The response message for SessionEntityTypes.ListSessionEntityTypes.",
+"id": "GoogleCloudDialogflowV2beta1ListSessionEntityTypesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+},
+"sessionEntityTypes": {
+"description": "The list of session entity types. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListSipTrunksResponse": {
+"description": "The response message for SipTrunks.ListSipTrunks.",
+"id": "GoogleCloudDialogflowV2beta1ListSipTrunksResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+},
+"sipTrunks": {
+"description": "The list of SIP trunks.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SipTrunk"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListSuggestionsResponse": {
+"deprecated": true,
+"description": "The response message for Participants.ListSuggestions.",
+"id": "GoogleCloudDialogflowV2beta1ListSuggestionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Optional. Token to retrieve the next page of results or empty if there are no more results in the list.",
+"type": "string"
+},
+"suggestions": {
+"description": "Required. The list of suggestions. There will be a maximum number of items returned based on the page_size field in the request. `suggestions` is sorted by `create_time` in descending order.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Suggestion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ListVersionsResponse": {
+"description": "The response message for Versions.ListVersions.",
+"id": "GoogleCloudDialogflowV2beta1ListVersionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+},
+"versions": {
+"description": "The list of agent versions. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Version"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1LoggingConfig": {
+"description": "Defines logging behavior for conversation lifecycle events.",
+"id": "GoogleCloudDialogflowV2beta1LoggingConfig",
+"properties": {
+"enableStackdriverLogging": {
+"description": "Whether to log conversation events like CONVERSATION_STARTED to Stackdriver in the conversation project as JSON format ConversationEvent protos.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Message": {
+"description": "Represents a message posted into a conversation.",
+"id": "GoogleCloudDialogflowV2beta1Message",
+"properties": {
+"content": {
+"description": "Required. The message content.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time when the message was created in Contact Center AI.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The message language. This should be a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\".",
+"type": "string"
+},
+"messageAnnotation": {
+"$ref": "GoogleCloudDialogflowV2beta1MessageAnnotation",
+"description": "Output only. The annotation for the message.",
+"readOnly": true
+},
+"name": {
+"description": "Optional. The unique identifier of the message. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"participant": {
+"description": "Output only. The participant that sends this message.",
+"readOnly": true,
+"type": "string"
+},
+"participantRole": {
+"description": "Output only. The role of the participant.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"readOnly": true,
+"type": "string"
+},
+"responseMessages": {
+"description": "Optional. Automated agent responses.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1ResponseMessage"
+},
+"type": "array"
+},
+"sendTime": {
+"description": "Optional. The time when the message was sent.",
+"format": "google-datetime",
+"type": "string"
+},
+"sentimentAnalysis": {
+"$ref": "GoogleCloudDialogflowV2beta1SentimentAnalysisResult",
+"description": "Output only. The sentiment analysis result for the message.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1MessageAnnotation": {
+"description": "Represents the result of annotation for the message.",
+"id": "GoogleCloudDialogflowV2beta1MessageAnnotation",
+"properties": {
+"containEntities": {
+"description": "Required. Indicates whether the text message contains entities.",
+"type": "boolean"
+},
+"parts": {
+"description": "Optional. The collection of annotated message parts ordered by their position in the message. You can recover the annotated message by concatenating [AnnotatedMessagePart.text].",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1AnnotatedMessagePart"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1MessageEntry": {
+"description": "Represents a message entry of a conversation.",
+"id": "GoogleCloudDialogflowV2beta1MessageEntry",
+"properties": {
+"createTime": {
+"description": "Optional. Create time of the message entry.",
+"format": "google-datetime",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language of the text. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes.",
+"type": "string"
+},
+"role": {
+"description": "Optional. Participant role of the message.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"type": "string"
+},
+"text": {
+"description": "Optional. Transcript content of the message.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1NotificationConfig": {
+"description": "Defines notification behavior.",
+"id": "GoogleCloudDialogflowV2beta1NotificationConfig",
+"properties": {
+"messageFormat": {
+"description": "Format of message.",
+"enum": [
+"MESSAGE_FORMAT_UNSPECIFIED",
+"PROTO",
+"JSON"
+],
+"enumDescriptions": [
+"If it is unspecified, PROTO will be used.",
+"Pub/Sub message will be serialized proto.",
+"Pub/Sub message will be json."
+],
+"type": "string"
+},
+"topic": {
+"description": "Name of the Pub/Sub topic to publish conversation events like CONVERSATION_STARTED as serialized ConversationEvent protos. For telephony integration to receive notification, make sure either this topic is in the same project as the conversation or you grant `service-@gcp-sa-dialogflow.iam.gserviceaccount.com` the `Dialogflow Service Agent` role in the topic project. For chat integration to receive notification, make sure API caller has been granted the `Dialogflow Service Agent` role for the topic. Format: `projects//locations//topics/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1OriginalDetectIntentRequest": {
+"description": "Represents the contents of the original request that was passed to the `[Streaming]DetectIntent` call.",
+"id": "GoogleCloudDialogflowV2beta1OriginalDetectIntentRequest",
+"properties": {
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. This field is set to the value of the `QueryParameters.payload` field passed in the request. Some integrations that query a Dialogflow agent may provide additional information in the payload. In particular, for the Dialogflow Phone Gateway integration, this field has the form: { \"telephony\": { \"caller_id\": \"+18558363987\" } } Note: The caller ID field (`caller_id`) will be redacted for Trial Edition agents and populated with the caller ID in [E.164 format](https://en.wikipedia.org/wiki/E.164) for Essentials Edition agents.",
+"type": "object"
+},
+"source": {
+"description": "The source of this request, e.g., `google`, `facebook`, `slack`. It is set by Dialogflow-owned servers.",
+"type": "string"
+},
+"version": {
+"description": "Optional. The version of the protocol used for this request. This field is AoG-specific.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1OutputAudio": {
+"description": "Represents the natural language speech audio to be played to the end user.",
+"id": "GoogleCloudDialogflowV2beta1OutputAudio",
+"properties": {
+"audio": {
+"description": "Required. The natural language speech audio.",
+"format": "byte",
+"type": "string"
+},
+"config": {
+"$ref": "GoogleCloudDialogflowV2beta1OutputAudioConfig",
+"description": "Required. Instructs the speech synthesizer how to generate the speech audio."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1OutputAudioConfig": {
+"description": "Instructs the speech synthesizer how to generate the output audio content. If this audio config is supplied in a request, it overrides all existing text-to-speech settings applied to the agent.",
+"id": "GoogleCloudDialogflowV2beta1OutputAudioConfig",
+"properties": {
+"audioEncoding": {
+"description": "Required. Audio encoding of the synthesized audio content.",
+"enum": [
+"OUTPUT_AUDIO_ENCODING_UNSPECIFIED",
+"OUTPUT_AUDIO_ENCODING_LINEAR_16",
+"OUTPUT_AUDIO_ENCODING_MP3",
+"OUTPUT_AUDIO_ENCODING_MP3_64_KBPS",
+"OUTPUT_AUDIO_ENCODING_OGG_OPUS",
+"OUTPUT_AUDIO_ENCODING_MULAW",
+"OUTPUT_AUDIO_ENCODING_ALAW"
+],
+"enumDescriptions": [
+"Not specified.",
+"Uncompressed 16-bit signed little-endian samples (Linear PCM). Audio content returned as LINEAR16 also contains a WAV header.",
+"MP3 audio at 32kbps.",
+"MP3 audio at 64kbps.",
+"Opus encoded audio wrapped in an ogg container. The result will be a file which can be played natively on Android, and in browsers (at least Chrome and Firefox). The quality of the encoding is considerably higher than MP3 while using approximately the same bitrate.",
+"8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
+"8-bit samples that compand 13-bit audio samples using G.711 PCMU/a-law."
+],
+"type": "string"
+},
+"sampleRateHertz": {
+"description": "The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice's natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality).",
+"format": "int32",
+"type": "integer"
+},
+"synthesizeSpeechConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig",
+"description": "Configuration of how speech should be synthesized."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Participant": {
+"description": "Represents a conversation participant (human agent, virtual agent, end-user).",
+"id": "GoogleCloudDialogflowV2beta1Participant",
+"properties": {
+"documentsMetadataFilters": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Key-value filters on the metadata of documents returned by article suggestion. If specified, article suggestion only returns suggested documents that match all filters in their Document.metadata. Multiple values for a metadata key should be concatenated by comma. For example, filters to match all documents that have 'US' or 'CA' in their market metadata values and 'agent' in their user metadata values will be ``` documents_metadata_filters { key: \"market\" value: \"US,CA\" } documents_metadata_filters { key: \"user\" value: \"agent\" } ```",
+"type": "object"
+},
+"name": {
+"description": "Optional. The unique identifier of this participant. Format: `projects//locations//conversations//participants/`.",
+"type": "string"
+},
+"obfuscatedExternalUserId": {
+"description": "Optional. Obfuscated user id that should be associated with the created participant. You can specify a user id as follows: 1. If you set this field in CreateParticipantRequest or UpdateParticipantRequest, Dialogflow adds the obfuscated user id with the participant. 2. If you set this field in AnalyzeContent or StreamingAnalyzeContent, Dialogflow will update Participant.obfuscated_external_user_id. Dialogflow uses this user id for billing and measurement. If a user with the same obfuscated_external_user_id is created in a later conversation, Dialogflow will know it's the same user. Dialogflow also uses this user id for Agent Assist suggestion personalization. For example, Dialogflow can use it to provide personalized smart reply suggestions for this user. Note: * Please never pass raw user ids to Dialogflow. Always obfuscate your user id first. * Dialogflow only accepts a UTF-8 encoded string, e.g., a hex digest of a hash function like SHA-512. * The length of the user id must be <= 256 characters.",
+"type": "string"
+},
+"role": {
+"description": "Immutable. The role this participant plays in the conversation. This field must be set during participant creation and is then immutable.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1QueryInput": {
+"description": "Represents the query input. It can contain either: 1. An audio config which instructs the speech recognizer how to process the speech audio. 2. A conversational query in the form of text. 3. An event that specifies which intent to trigger.",
+"id": "GoogleCloudDialogflowV2beta1QueryInput",
+"properties": {
+"audioConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1InputAudioConfig",
+"description": "Instructs the speech recognizer how to process the speech audio."
+},
+"dtmf": {
+"$ref": "GoogleCloudDialogflowV2beta1TelephonyDtmfEvents",
+"description": "The DTMF digits used to invoke intent and fill in parameter value."
+},
+"event": {
+"$ref": "GoogleCloudDialogflowV2beta1EventInput",
+"description": "The event to be processed."
+},
+"text": {
+"$ref": "GoogleCloudDialogflowV2beta1TextInput",
+"description": "The natural language text to be processed."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1QueryParameters": {
+"description": "Represents the parameters of the conversational query.",
+"id": "GoogleCloudDialogflowV2beta1QueryParameters",
+"properties": {
+"contexts": {
+"description": "The collection of contexts to be activated before this query is executed.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"type": "array"
+},
+"geoLocation": {
+"$ref": "GoogleTypeLatLng",
+"description": "The geo location of this conversational query."
+},
+"knowledgeBaseNames": {
+"description": "KnowledgeBases to get alternative results from. If not set, the KnowledgeBases enabled in the agent (through UI) will be used. Format: `projects//knowledgeBases/`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "This field can be used to pass custom data to your webhook. Arbitrary JSON objects are supported. If supplied, the value is used to populate the `WebhookRequest.original_detect_intent_request.payload` field sent to your webhook.",
+"type": "object"
+},
+"platform": {
+"description": "The platform of the virtual agent response messages. If not empty, only emits messages from this platform in the response. Valid values are the enum names of platform.",
+"type": "string"
+},
+"resetContexts": {
+"description": "Specifies whether to delete all contexts in the current session before the new ones are activated.",
+"type": "boolean"
+},
+"sentimentAnalysisRequestConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1SentimentAnalysisRequestConfig",
+"description": "Configures the type of sentiment analysis to perform. If not provided, sentiment analysis is not performed. Note: Sentiment Analysis is only currently available for Essentials Edition agents."
+},
+"sessionEntityTypes": {
+"description": "Additional session entity types to replace or extend developer entity types with. The entity synonyms apply to all languages and persist for the session of this query.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"type": "array"
+},
+"subAgents": {
+"description": "For mega agent query, directly specify which sub agents to query. If any specified sub agent is not linked to the mega agent, an error will be returned. If empty, Dialogflow will decide which sub agents to query. If specified for a non-mega-agent query, will be silently ignored.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SubAgent"
+},
+"type": "array"
+},
+"timeZone": {
+"description": "The time zone of this conversational query from the [time zone database](https://www.iana.org/time-zones), e.g., America/New_York, Europe/Paris. If not provided, the time zone specified in agent settings is used.",
+"type": "string"
+},
+"webhookHeaders": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "This field can be used to pass HTTP headers for a webhook call. These headers will be sent to webhook along with the headers that have been configured through Dialogflow web console. The headers defined within this field will overwrite the headers configured through Dialogflow console if there is a conflict. Header names are case-insensitive. Google's specified headers are not allowed. Including: \"Host\", \"Content-Length\", \"Connection\", \"From\", \"User-Agent\", \"Accept-Encoding\", \"If-Modified-Since\", \"If-None-Match\", \"X-Forwarded-For\", etc.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1QueryResult": {
+"description": "Represents the result of conversational query or event processing.",
+"id": "GoogleCloudDialogflowV2beta1QueryResult",
+"properties": {
+"action": {
+"description": "The action name from the matched intent.",
+"type": "string"
+},
+"allRequiredParamsPresent": {
+"description": "This field is set to: - `false` if the matched intent has required parameters and not all of the required parameter values have been collected. - `true` if all required parameter values have been collected, or if the matched intent doesn't contain any required parameters.",
+"type": "boolean"
+},
+"cancelsSlotFilling": {
+"description": "Indicates whether the conversational query triggers a cancellation for slot filling. For more information, see the [cancel slot filling documentation](https://cloud.google.com/dialogflow/es/docs/intents-actions-parameters#cancel).",
+"type": "boolean"
+},
+"diagnosticInfo": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Free-form diagnostic information for the associated detect intent request. The fields of this data can change without notice, so you should not write code that depends on its structure. The data may contain: - webhook call latency - webhook errors",
+"type": "object"
+},
+"fulfillmentMessages": {
+"description": "The collection of rich messages to present to the user.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessage"
+},
+"type": "array"
+},
+"fulfillmentText": {
+"description": "The text to be pronounced to the user or shown on the screen. Note: This is a legacy field, `fulfillment_messages` should be preferred.",
+"type": "string"
+},
+"intent": {
+"$ref": "GoogleCloudDialogflowV2beta1Intent",
+"description": "The intent that matched the conversational query. Some, not all fields are filled in this message, including but not limited to: `name`, `display_name`, `end_interaction` and `is_fallback`."
+},
+"intentDetectionConfidence": {
+"description": "The intent detection confidence. Values range from 0.0 (completely uncertain) to 1.0 (completely certain). This value is for informational purpose only and is only used to help match the best intent within the classification threshold. This value may change for the same end-user expression at any time due to a model retraining or change in implementation. If there are `multiple knowledge_answers` messages, this value is set to the greatest `knowledgeAnswers.match_confidence` value in the list.",
+"format": "float",
+"type": "number"
+},
+"knowledgeAnswers": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeAnswers",
+"description": "The result from Knowledge Connector (if any), ordered by decreasing `KnowledgeAnswers.match_confidence`."
+},
+"languageCode": {
+"description": "The language that was triggered during intent detection. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes.",
+"type": "string"
+},
+"outputContexts": {
+"description": "The collection of output contexts. If applicable, `output_contexts.parameters` contains entries with name `.original` containing the original parameter values before the query.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"type": "array"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "The collection of extracted parameters. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
+"type": "object"
+},
+"queryText": {
+"description": "The original conversational query text: - If natural language text was provided as input, `query_text` contains a copy of the input. - If natural language speech audio was provided as input, `query_text` contains the speech recognition result. If speech recognizer produced multiple alternatives, a particular one is picked. - If automatic spell correction is enabled, `query_text` will contain the corrected user input.",
+"type": "string"
+},
+"sentimentAnalysisResult": {
+"$ref": "GoogleCloudDialogflowV2beta1SentimentAnalysisResult",
+"description": "The sentiment analysis result, which depends on the `sentiment_analysis_request_config` specified in the request."
+},
+"speechRecognitionConfidence": {
+"description": "The Speech recognition confidence between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. The default of 0.0 is a sentinel value indicating that confidence was not set. This field is not guaranteed to be accurate or set. In particular this field isn't set for StreamingDetectIntent since the streaming endpoint has separate confidence estimates per portion of the audio in StreamingRecognitionResult.",
+"format": "float",
+"type": "number"
+},
+"webhookPayload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "If the query was fulfilled by a webhook call, this field is set to the value of the `payload` field returned in the webhook response.",
+"type": "object"
+},
+"webhookSource": {
+"description": "If the query was fulfilled by a webhook call, this field is set to the value of the `source` field returned in the webhook response.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ReloadDocumentRequest": {
+"description": "Request message for Documents.ReloadDocument.",
+"id": "GoogleCloudDialogflowV2beta1ReloadDocumentRequest",
+"properties": {
+"gcsSource": {
+"$ref": "GoogleCloudDialogflowV2beta1GcsSource",
+"description": "The path for a Cloud Storage source file for reloading document content. If not provided, the Document's existing source will be reloaded."
+},
+"importGcsCustomMetadata": {
+"description": "Whether to import custom metadata from Google Cloud Storage. Only valid when the document source is Google Cloud Storage URI.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ResponseMessage": {
+"description": "Response messages from an automated agent.",
+"id": "GoogleCloudDialogflowV2beta1ResponseMessage",
+"properties": {
+"endInteraction": {
+"$ref": "GoogleCloudDialogflowV2beta1ResponseMessageEndInteraction",
+"description": "A signal that indicates the interaction with the Dialogflow agent has ended."
+},
+"liveAgentHandoff": {
+"$ref": "GoogleCloudDialogflowV2beta1ResponseMessageLiveAgentHandoff",
+"description": "Hands off conversation to a live agent."
+},
+"mixedAudio": {
+"$ref": "GoogleCloudDialogflowV2beta1ResponseMessageMixedAudio",
+"description": "An audio response message composed of both the synthesized Dialogflow agent responses and the audios hosted in places known to the client."
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Returns a response containing a custom, platform-specific payload.",
+"type": "object"
+},
+"telephonyTransferCall": {
+"$ref": "GoogleCloudDialogflowV2beta1ResponseMessageTelephonyTransferCall",
+"description": "A signal that the client should transfer the phone call connected to this agent to a third-party endpoint."
+},
+"text": {
+"$ref": "GoogleCloudDialogflowV2beta1ResponseMessageText",
+"description": "Returns a text response."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ResponseMessageEndInteraction": {
+"description": "Indicates that interaction with the Dialogflow agent has ended.",
+"id": "GoogleCloudDialogflowV2beta1ResponseMessageEndInteraction",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ResponseMessageLiveAgentHandoff": {
+"description": "Indicates that the conversation should be handed off to a human agent. Dialogflow only uses this to determine which conversations were handed off to a human agent for measurement purposes. What else to do with this signal is up to you and your handoff procedures. You may set this, for example: * In the entry fulfillment of a CX Page if entering the page indicates something went extremely wrong in the conversation. * In a webhook response when you determine that the customer issue can only be handled by a human.",
+"id": "GoogleCloudDialogflowV2beta1ResponseMessageLiveAgentHandoff",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Custom metadata for your handoff procedure. Dialogflow doesn't impose any structure on this.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ResponseMessageMixedAudio": {
+"description": "Represents an audio message that is composed of both segments synthesized from the Dialogflow agent prompts and ones hosted externally at the specified URIs.",
+"id": "GoogleCloudDialogflowV2beta1ResponseMessageMixedAudio",
+"properties": {
+"segments": {
+"description": "Segments this audio response is composed of.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1ResponseMessageMixedAudioSegment"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ResponseMessageMixedAudioSegment": {
+"description": "Represents one segment of audio.",
+"id": "GoogleCloudDialogflowV2beta1ResponseMessageMixedAudioSegment",
+"properties": {
+"allowPlaybackInterruption": {
+"description": "Whether the playback of this segment can be interrupted by the end user's speech and the client should then start the next Dialogflow request.",
+"type": "boolean"
+},
+"audio": {
+"description": "Raw audio synthesized from the Dialogflow agent's response using the output config specified in the request.",
+"format": "byte",
+"type": "string"
+},
+"uri": {
+"description": "Client-specific URI that points to an audio clip accessible to the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ResponseMessageTelephonyTransferCall": {
+"description": "Represents the signal that telles the client to transfer the phone call connected to the agent to a third-party endpoint.",
+"id": "GoogleCloudDialogflowV2beta1ResponseMessageTelephonyTransferCall",
+"properties": {
+"phoneNumber": {
+"description": "Transfer the call to a phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164).",
+"type": "string"
+},
+"sipUri": {
+"description": "Transfer the call to a SIP endpoint.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ResponseMessageText": {
+"description": "The text response message.",
+"id": "GoogleCloudDialogflowV2beta1ResponseMessageText",
+"properties": {
+"text": {
+"description": "A collection of text response variants. If multiple variants are defined, only one text response variant is returned at runtime.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1RestoreAgentRequest": {
+"description": "The request message for Agents.RestoreAgent.",
+"id": "GoogleCloudDialogflowV2beta1RestoreAgentRequest",
+"properties": {
+"agentContent": {
+"description": "Zip compressed raw byte content for agent.",
+"format": "byte",
+"type": "string"
+},
+"agentUri": {
+"description": "The URI to a Google Cloud Storage file containing the agent to restore. Note: The URI must start with \"gs://\". Dialogflow performs a read operation for the Cloud Storage object on the caller's behalf, so your request authentication must have read permissions for the object. For more information, see [Dialogflow access control](https://cloud.google.com/dialogflow/cx/docs/concept/access-control#storage).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchAgentsResponse": {
+"description": "The response message for Agents.SearchAgents.",
+"id": "GoogleCloudDialogflowV2beta1SearchAgentsResponse",
+"properties": {
+"agents": {
+"description": "The list of agents. There will be a maximum number of items returned based on the page_size field in the request.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Agent"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeAnswer": {
+"description": "Represents a SearchKnowledge answer.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeAnswer",
+"properties": {
+"answer": {
+"description": "The piece of text from the knowledge base documents that answers the search query",
+"type": "string"
+},
+"answerRecord": {
+"description": "The name of the answer record. Format: `projects//locations//answer Records/`",
+"type": "string"
+},
+"answerSources": {
+"description": "All sources used to generate the answer.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeAnswerAnswerSource"
+},
+"type": "array"
+},
+"answerType": {
+"description": "The type of the answer.",
+"enum": [
+"ANSWER_TYPE_UNSPECIFIED",
+"FAQ",
+"GENERATIVE",
+"INTENT"
+],
+"enumDescriptions": [
+"The answer has a unspecified type.",
+"The answer is from FAQ documents.",
+"The answer is from generative model.",
+"The answer is from intent matching."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeAnswerAnswerSource": {
+"description": "The sources of the answers.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeAnswerAnswerSource",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Metadata associated with the article.",
+"type": "object"
+},
+"snippet": {
+"description": "The relevant snippet of the article.",
+"type": "string"
+},
+"title": {
+"description": "The title of the article.",
+"type": "string"
+},
+"uri": {
+"description": "The URI of the article.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeRequest": {
+"description": "The request message for Conversations.SearchKnowledge.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequest",
+"properties": {
+"conversation": {
+"description": "Optional. The conversation (between human agent and end user) where the search request is triggered. Format: `projects//locations//conversations/`.",
+"type": "string"
+},
+"conversationProfile": {
+"description": "Required. The conversation profile used to configure the search. Format: `projects//locations//conversationProfiles/`.",
+"type": "string"
+},
+"endUserMetadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. Information about the end-user to improve the relevance and accuracy of generative answers. This will be interpreted and used by a language model, so, for good results, the data should be self-descriptive, and in a simple structure. Example: ```json { \"subscription plan\": \"Business Premium Plus\", \"devices owned\": [ {\"model\": \"Google Pixel 7\"}, {\"model\": \"Google Pixel Tablet\"} ] } ```",
+"type": "object"
+},
+"exactSearch": {
+"description": "Optional. Whether to search the query exactly without query rewrite.",
+"type": "boolean"
+},
+"latestMessage": {
+"description": "Optional. The name of the latest conversation message when the request is triggered. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource contains the conversation profile Format: 'projects/' or `projects//locations/`.",
+"type": "string"
+},
+"query": {
+"$ref": "GoogleCloudDialogflowV2beta1TextInput",
+"description": "Required. The natural language text query for knowledge search."
+},
+"querySource": {
+"description": "Optional. The source of the query in the request.",
+"enum": [
+"QUERY_SOURCE_UNSPECIFIED",
+"AGENT_QUERY",
+"SUGGESTED_QUERY"
+],
+"enumDescriptions": [
+"Unknown query source.",
+"The query is from agents.",
+"The query is a suggested query from Participants.SuggestKnowledgeAssist."
+],
+"type": "string"
+},
+"searchConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfig",
+"description": "Optional. Configuration specific to search queries with data stores."
+},
+"sessionId": {
+"description": "Required. The ID of the search session. The session_id can be combined with Dialogflow V3 Agent ID retrieved from conversation profile or on its own to identify a search session. The search history of the same session will impact the search result. It's up to the API caller to choose an appropriate `Session ID`. It can be a random number or some type of session identifiers (preferably hashed). The length must not exceed 36 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfig": {
+"description": "Configuration specific to search queries with data stores.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfig",
+"properties": {
+"boostSpecs": {
+"description": "Optional. Boost specifications for data stores.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecs"
+},
+"type": "array"
+},
+"filterSpecs": {
+"description": "Optional. Filter specification for data store queries.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigFilterSpecs"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecs": {
+"description": "Boost specifications for data stores.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecs",
+"properties": {
+"dataStores": {
+"description": "Optional. Data Stores where the boosting configuration is applied. The full names of the referenced data stores. Formats: `projects/{project}/locations/{location}/collections/{collection}/dataStores/{data_store}` `projects/{project}/locations/{location}/dataStores/{data_store}`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"spec": {
+"description": "Optional. A list of boosting specifications.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpec"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpec": {
+"description": "Boost specification to boost certain documents. A copy of google.cloud.discoveryengine.v1main.BoostSpec, field documentation is available at https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/BoostSpec",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpec",
+"properties": {
+"conditionBoostSpecs": {
+"description": "Optional. Condition boost specifications. If a document matches multiple conditions in the specifictions, boost scores from these specifications are all applied and combined in a non-linear way. Maximum number of specifications is 20.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpec"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpec": {
+"description": "Boost applies to documents which match a condition.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpec",
+"properties": {
+"boost": {
+"description": "Optional. Strength of the condition boost, which should be in [-1, 1]. Negative boost means demotion. Default is 0.0. Setting to 1.0 gives the document a big promotion. However, it does not necessarily mean that the boosted document will be the top result at all times, nor that other documents will be excluded. Results could still be shown even when none of them matches the condition. And results that are significantly more relevant to the search query can still trump your heavily favored but irrelevant documents. Setting to -1.0 gives the document a big demotion. However, results that are deeply relevant might still be shown. The document will have an upstream battle to get a fairly high ranking, but it is not blocked out completely. Setting to 0.0 means no boost applied. The boosting condition is ignored.",
+"format": "float",
+"type": "number"
+},
+"boostControlSpec": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpec",
+"description": "Optional. Complex specification for custom ranking based on customer defined attribute value."
+},
+"condition": {
+"description": "Optional. An expression which specifies a boost condition. The syntax and supported fields are the same as a filter expression. Examples: * To boost documents with document ID \"doc_1\" or \"doc_2\", and color \"Red\" or \"Blue\": * (id: ANY(\"doc_1\", \"doc_2\")) AND (color: ANY(\"Red\",\"Blue\"))",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpec": {
+"description": "Specification for custom ranking based on customer specified attribute value. It provides more controls for customized ranking than the simple (condition, boost) combination above.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpec",
+"properties": {
+"attributeType": {
+"description": "Optional. The attribute type to be used to determine the boost amount. The attribute value can be derived from the field value of the specified field_name. In the case of numerical it is straightforward i.e. attribute_value = numerical_field_value. In the case of freshness however, attribute_value = (time.now() - datetime_field_value).",
+"enum": [
+"ATTRIBUTE_TYPE_UNSPECIFIED",
+"NUMERICAL",
+"FRESHNESS"
+],
+"enumDescriptions": [
+"Unspecified AttributeType.",
+"The value of the numerical field will be used to dynamically update the boost amount. In this case, the attribute_value (the x value) of the control point will be the actual value of the numerical field for which the boost_amount is specified.",
+"For the freshness use case the attribute value will be the duration between the current time and the date in the datetime field specified. The value must be formatted as an XSD `dayTimeDuration` value (a restricted subset of an ISO 8601 duration value). The pattern for this is: `nDnM]`. E.g. `5D`, `3DT12H30M`, `T24H`."
+],
+"type": "string"
+},
+"controlPoints": {
+"description": "Optional. The control points used to define the curve. The monotonic function (defined through the interpolation_type above) passes through the control points listed here.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpecControlPoint"
+},
+"type": "array"
+},
+"fieldName": {
+"description": "Optional. The name of the field whose value will be used to determine the boost amount.",
+"type": "string"
+},
+"interpolationType": {
+"description": "Optional. The interpolation type to be applied to connect the control points listed below.",
+"enum": [
+"INTERPOLATION_TYPE_UNSPECIFIED",
+"LINEAR"
+],
+"enumDescriptions": [
+"Interpolation type is unspecified. In this case, it defaults to Linear.",
+"Piecewise linear interpolation will be applied."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpecControlPoint": {
+"description": "The control points used to define the curve. The curve defined through these control points can only be monotonically increasing or decreasing(constant values are acceptable).",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigBoostSpecsBoostSpecConditionBoostSpecBoostControlSpecControlPoint",
+"properties": {
+"attributeValue": {
+"description": "Optional. Can be one of: 1. The numerical field value. 2. The duration spec for freshness: The value must be formatted as an XSD `dayTimeDuration` value (a restricted subset of an ISO 8601 duration value). The pattern for this is: `nDnM]`.",
+"type": "string"
+},
+"boostAmount": {
+"description": "Optional. The value between -1 to 1 by which to boost the score if the attribute_value evaluates to the value specified above.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigFilterSpecs": {
+"description": "Filter specification for data store queries.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeRequestSearchConfigFilterSpecs",
+"properties": {
+"dataStores": {
+"description": "Optional. The data store where the filter configuration is applied. Full resource name of data store, such as projects/{project}/locations/{location}/collections/{collectionId}/ dataStores/{dataStoreId}.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"filter": {
+"description": "Optional. The filter expression to be applied. Expression syntax is documented at https://cloud.google.com/generative-ai-app-builder/docs/filter-search-metadata#filter-expression-syntax",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SearchKnowledgeResponse": {
+"description": "The response message for Conversations.SearchKnowledge.",
+"id": "GoogleCloudDialogflowV2beta1SearchKnowledgeResponse",
+"properties": {
+"answers": {
+"description": "Most relevant snippets extracted from articles in the given knowledge base, ordered by confidence.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SearchKnowledgeAnswer"
+},
+"type": "array"
+},
+"rewrittenQuery": {
+"description": "The rewritten query used to search knowledge.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Sentiment": {
+"description": "The sentiment, such as positive/negative feeling or association, for a unit of analysis, such as the query text. See: https://cloud.google.com/natural-language/docs/basics#interpreting_sentiment_analysis_values for how to interpret the result.",
+"id": "GoogleCloudDialogflowV2beta1Sentiment",
+"properties": {
+"magnitude": {
+"description": "A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment, regardless of score (positive or negative).",
+"format": "float",
+"type": "number"
+},
+"score": {
+"description": "Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SentimentAnalysisRequestConfig": {
+"description": "Configures the types of sentiment analysis to perform.",
+"id": "GoogleCloudDialogflowV2beta1SentimentAnalysisRequestConfig",
+"properties": {
+"analyzeQueryTextSentiment": {
+"description": "Instructs the service to perform sentiment analysis on `query_text`. If not provided, sentiment analysis is not performed on `query_text`.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SentimentAnalysisResult": {
+"description": "The result of sentiment analysis. Sentiment analysis inspects user input and identifies the prevailing subjective opinion, especially to determine a user's attitude as positive, negative, or neutral. For Participants.DetectIntent, it needs to be configured in DetectIntentRequest.query_params. For Participants.StreamingDetectIntent, it needs to be configured in StreamingDetectIntentRequest.query_params. And for Participants.AnalyzeContent and Participants.StreamingAnalyzeContent, it needs to be configured in ConversationProfile.human_agent_assistant_config",
+"id": "GoogleCloudDialogflowV2beta1SentimentAnalysisResult",
+"properties": {
+"queryTextSentiment": {
+"$ref": "GoogleCloudDialogflowV2beta1Sentiment",
+"description": "The sentiment analysis result for `query_text`."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SessionEntityType": {
+"description": "A session represents a conversation between a Dialogflow agent and an end-user. You can create special entities, called session entities, during a session. Session entities can extend or replace custom entity types and only exist during the session that they were created for. All session data, including session entities, is stored by Dialogflow for 20 minutes. For more information, see the [session entity guide](https://cloud.google.com/dialogflow/docs/entities-session).",
+"id": "GoogleCloudDialogflowV2beta1SessionEntityType",
+"properties": {
+"entities": {
+"description": "Required. The collection of entities associated with this session entity type.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1EntityTypeEntity"
+},
+"type": "array"
+},
+"entityOverrideMode": {
+"description": "Required. Indicates whether the additional data should override or supplement the custom entity type definition.",
+"enum": [
+"ENTITY_OVERRIDE_MODE_UNSPECIFIED",
+"ENTITY_OVERRIDE_MODE_OVERRIDE",
+"ENTITY_OVERRIDE_MODE_SUPPLEMENT"
+],
+"enumDescriptions": [
+"Not specified. This value should be never used.",
+"The collection of session entities overrides the collection of entities in the corresponding custom entity type.",
+"The collection of session entities extends the collection of entities in the corresponding custom entity type. Note: Even in this override mode calls to `ListSessionEntityTypes`, `GetSessionEntityType`, `CreateSessionEntityType` and `UpdateSessionEntityType` only return the additional entities added in this session entity type. If you want to get the supplemented list, please call EntityTypes.GetEntityType on the custom entity type and merge."
+],
+"type": "string"
+},
+"name": {
+"description": "Required. The unique identifier of this session entity type. Supported formats: - `projects//agent/sessions//entityTypes/` - `projects//locations//agent/sessions//entityTypes/` - `projects//agent/environments//users//sessions//entityTypes/` - `projects//locations//agent/environments/ /users//sessions//entityTypes/` If `Location ID` is not specified we assume default 'us' location. If `Environment ID` is not specified, we assume default 'draft' environment. If `User ID` is not specified, we assume default '-' user. `` must be the display name of an existing entity type in the same agent that will be overridden or supplemented.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SetSuggestionFeatureConfigOperationMetadata": {
+"description": "Metadata for a ConversationProfile.SetSuggestionFeatureConfig operation.",
+"id": "GoogleCloudDialogflowV2beta1SetSuggestionFeatureConfigOperationMetadata",
+"properties": {
+"conversationProfile": {
+"description": "The resource name of the conversation profile. Format: `projects//locations//conversationProfiles/`",
+"type": "string"
+},
+"createTime": {
+"description": "Timestamp whe the request was created. The time is measured on server side.",
+"format": "google-datetime",
+"type": "string"
+},
+"participantRole": {
+"description": "Required. The participant role to add or update the suggestion feature config. Only HUMAN_AGENT or END_USER can be used.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"type": "string"
+},
+"suggestionFeatureType": {
+"description": "Required. The type of the suggestion feature to add or update.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"ARTICLE_SUGGESTION",
+"FAQ",
+"SMART_REPLY",
+"DIALOGFLOW_ASSIST",
+"CONVERSATION_SUMMARIZATION",
+"KNOWLEDGE_SEARCH",
+"KNOWLEDGE_ASSIST"
+],
+"enumDescriptions": [
+"Unspecified feature type.",
+"Run article suggestion model for chat.",
+"Run FAQ model.",
+"Run smart reply model for chat.",
+"Run Dialogflow assist model for chat, which will return automated agent response as suggestion.",
+"Run conversation summarization model for chat.",
+"Run knowledge search with text input from agent or text generated query.",
+"Run knowledge assist with automatic query generation."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SetSuggestionFeatureConfigRequest": {
+"description": "The request message for ConversationProfiles.SetSuggestionFeature.",
+"id": "GoogleCloudDialogflowV2beta1SetSuggestionFeatureConfigRequest",
+"properties": {
+"participantRole": {
+"description": "Required. The participant role to add or update the suggestion feature config. Only HUMAN_AGENT or END_USER can be used.",
+"enum": [
+"ROLE_UNSPECIFIED",
+"HUMAN_AGENT",
+"AUTOMATED_AGENT",
+"END_USER"
+],
+"enumDescriptions": [
+"Participant role not set.",
+"Participant is a human agent.",
+"Participant is an automated agent, such as a Dialogflow agent.",
+"Participant is an end user that has called or chatted with Dialogflow services."
+],
+"type": "string"
+},
+"suggestionFeatureConfig": {
+"$ref": "GoogleCloudDialogflowV2beta1HumanAgentAssistantConfigSuggestionFeatureConfig",
+"description": "Required. The suggestion feature config to add or update."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SipTrunk": {
+"description": "SipTrunk is the resource that represents a SIP trunk to connect to Google Telephony platform SIP trunking service.",
+"id": "GoogleCloudDialogflowV2beta1SipTrunk",
+"properties": {
+"connections": {
+"description": "Output only. Connections of the SIP trunk.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Connection"
+},
+"readOnly": true,
+"type": "array"
+},
+"displayName": {
+"description": "Optional. Human readable alias for this trunk.",
+"type": "string"
+},
+"expectedHostname": {
+"description": "Required. The expected hostnames in the peer certificate from partner that is used for TLS authentication.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "Identifier. The unique identifier of the SIP trunk. Format: `projects//locations//sipTrunks/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SmartReplyAnswer": {
+"description": "Represents a smart reply answer.",
+"id": "GoogleCloudDialogflowV2beta1SmartReplyAnswer",
+"properties": {
+"answerRecord": {
+"description": "The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"confidence": {
+"description": "Smart reply confidence. The system's confidence score that this reply is a good match for this conversation, as a value from 0.0 (completely uncertain) to 1.0 (completely certain).",
+"format": "float",
+"type": "number"
+},
+"reply": {
+"description": "The content of the reply.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SpeechContext": {
+"description": "Hints for the speech recognizer to help with recognition in a specific conversation state.",
+"id": "GoogleCloudDialogflowV2beta1SpeechContext",
+"properties": {
+"boost": {
+"description": "Optional. Boost for this context compared to other contexts: * If the boost is positive, Dialogflow will increase the probability that the phrases in this context are recognized over similar sounding phrases. * If the boost is unspecified or non-positive, Dialogflow will not apply any boost. Dialogflow recommends that you use boosts in the range (0, 20] and that you find a value that fits your use case with binary search.",
+"format": "float",
+"type": "number"
+},
+"phrases": {
+"description": "Optional. A list of strings containing words and phrases that the speech recognizer should recognize with higher likelihood. This list can be used to: * improve accuracy for words and phrases you expect the user to say, e.g. typical commands for your Dialogflow agent * add additional words to the speech recognizer vocabulary * ... See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/quotas) for usage limits.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SpeechToTextConfig": {
+"description": "Configures speech transcription for ConversationProfile.",
+"id": "GoogleCloudDialogflowV2beta1SpeechToTextConfig",
+"properties": {
+"audioEncoding": {
+"description": "Audio encoding of the audio content to process.",
+"enum": [
+"AUDIO_ENCODING_UNSPECIFIED",
+"AUDIO_ENCODING_LINEAR_16",
+"AUDIO_ENCODING_FLAC",
+"AUDIO_ENCODING_MULAW",
+"AUDIO_ENCODING_AMR",
+"AUDIO_ENCODING_AMR_WB",
+"AUDIO_ENCODING_OGG_OPUS",
+"AUDIO_ENCODING_SPEEX_WITH_HEADER_BYTE",
+"AUDIO_ENCODING_ALAW"
+],
+"enumDescriptions": [
+"Not specified.",
+"Uncompressed 16-bit signed little-endian samples (Linear PCM).",
+"[`FLAC`](https://xiph.org/flac/documentation.html) (Free Lossless Audio Codec) is the recommended encoding because it is lossless (therefore recognition is not compromised) and requires only about half the bandwidth of `LINEAR16`. `FLAC` stream encoding supports 16-bit and 24-bit samples, however, not all fields in `STREAMINFO` are supported.",
+"8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
+"Adaptive Multi-Rate Narrowband codec. `sample_rate_hertz` must be 8000.",
+"Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.",
+"Opus encoded audio frames in Ogg container ([OggOpus](https://wiki.xiph.org/OggOpus)). `sample_rate_hertz` must be 16000.",
+"Although the use of lossy encodings is not recommended, if a very low bitrate encoding is required, `OGG_OPUS` is highly preferred over Speex encoding. The [Speex](https://speex.org/) encoding supported by Dialogflow API has a header byte in each block, as in MIME type `audio/x-speex-with-header-byte`. It is a variant of the RTP Speex encoding defined in [RFC 5574](https://tools.ietf.org/html/rfc5574). The stream is a sequence of blocks, one block per RTP packet. Each block starts with a byte containing the length of the block, in bytes, followed by one or more frames of Speex data, padded to an integral number of bytes (octets) as specified in RFC 5574. In other words, each RTP header is replaced with a single byte containing the block length. Only Speex wideband is supported. `sample_rate_hertz` must be 16000.",
+"8-bit samples that compand 13-bit audio samples using G.711 PCMU/a-law."
+],
+"type": "string"
+},
+"enableWordInfo": {
+"description": "If `true`, Dialogflow returns SpeechWordInfo in StreamingRecognitionResult with information about the recognized speech words, e.g. start and end time offsets. If false or unspecified, Speech doesn't return any word-level information.",
+"type": "boolean"
+},
+"languageCode": {
+"description": "The language of the supplied audio. Dialogflow does not do translations. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language.",
+"type": "string"
+},
+"model": {
+"description": "Which Speech model to select. Select the model best suited to your domain to get best results. If a model is not explicitly specified, then Dialogflow auto-selects a model based on other parameters in the SpeechToTextConfig and Agent settings. If enhanced speech model is enabled for the agent and an enhanced version of the specified model for the language does not exist, then the speech is recognized using the standard version of the specified model. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics#select-model) for more details. If you specify a model, the following models typically have the best performance: - phone_call (best for Agent Assist and telephony) - latest_short (best for Dialogflow non-telephony) - command_and_search Leave this field unspecified to use [Agent Speech settings](https://cloud.google.com/dialogflow/cx/docs/concept/agent#settings-speech) for model selection.",
+"type": "string"
+},
+"phraseSets": {
+"description": "List of names of Cloud Speech phrase sets that are used for transcription.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sampleRateHertz": {
+"description": "Sample rate (in Hertz) of the audio content sent in the query. Refer to [Cloud Speech API documentation](https://cloud.google.com/speech-to-text/docs/basics) for more details.",
+"format": "int32",
+"type": "integer"
+},
+"speechModelVariant": {
+"description": "The speech model used in speech to text. `SPEECH_MODEL_VARIANT_UNSPECIFIED`, `USE_BEST_AVAILABLE` will be treated as `USE_ENHANCED`. It can be overridden in AnalyzeContentRequest and StreamingAnalyzeContentRequest request. If enhanced model variant is specified and an enhanced version of the specified model for the language does not exist, then it would emit an error.",
+"enum": [
+"SPEECH_MODEL_VARIANT_UNSPECIFIED",
+"USE_BEST_AVAILABLE",
+"USE_STANDARD",
+"USE_ENHANCED"
+],
+"enumDescriptions": [
+"No model variant specified. In this case Dialogflow defaults to USE_BEST_AVAILABLE.",
+"Use the best available variant of the Speech model that the caller is eligible for. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible for enhanced models.",
+"Use standard model variant even if an enhanced model is available. See the [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) for details about enhanced models.",
+"Use an enhanced model variant: * If an enhanced variant does not exist for the given model and request language, Dialogflow falls back to the standard variant. The [Cloud Speech documentation](https://cloud.google.com/speech-to-text/docs/enhanced-models) describes which models have enhanced variants. * If the API caller isn't eligible for enhanced models, Dialogflow returns an error. Please see the [Dialogflow docs](https://cloud.google.com/dialogflow/docs/data-logging) for how to make your project eligible."
+],
+"type": "string"
+},
+"useTimeoutBasedEndpointing": {
+"description": "Use timeout based endpointing, interpreting endpointer sensitivy as seconds of timeout value.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SpeechWordInfo": {
+"description": "Information for a word recognized by the speech recognizer.",
+"id": "GoogleCloudDialogflowV2beta1SpeechWordInfo",
+"properties": {
+"confidence": {
+"description": "The Speech confidence between 0.0 and 1.0 for this word. A higher number indicates an estimated greater likelihood that the recognized word is correct. The default of 0.0 is a sentinel value indicating that confidence was not set. This field is not guaranteed to be fully stable over time for the same audio input. Users should also not rely on it to always be provided.",
+"format": "float",
+"type": "number"
+},
+"endOffset": {
+"description": "Time offset relative to the beginning of the audio that corresponds to the end of the spoken word. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"startOffset": {
+"description": "Time offset relative to the beginning of the audio that corresponds to the start of the spoken word. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"word": {
+"description": "The word this info is for.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1StreamingRecognitionResult": {
+"description": "Contains a speech recognition result corresponding to a portion of the audio that is currently being processed or an indication that this is the end of the single requested utterance. While end-user audio is being processed, Dialogflow sends a series of results. Each result may contain a `transcript` value. A transcript represents a portion of the utterance. While the recognizer is processing audio, transcript values may be interim values or finalized values. Once a transcript is finalized, the `is_final` value is set to true and processing continues for the next transcript. If `StreamingDetectIntentRequest.query_input.audio_config.single_utterance` was true, and the recognizer has completed processing audio, the `message_type` value is set to `END_OF_SINGLE_UTTERANCE and the following (last) result contains the last finalized transcript. The complete end-user utterance is determined by concatenating the finalized transcript values received for the series of results. In the following example, single utterance is enabled. In the case where single utterance is not enabled, result 7 would not occur. ``` Num | transcript | message_type | is_final --- | ----------------------- | ----------------------- | -------- 1 | \"tube\" | TRANSCRIPT | false 2 | \"to be a\" | TRANSCRIPT | false 3 | \"to be\" | TRANSCRIPT | false 4 | \"to be or not to be\" | TRANSCRIPT | true 5 | \"that's\" | TRANSCRIPT | false 6 | \"that is | TRANSCRIPT | false 7 | unset | END_OF_SINGLE_UTTERANCE | unset 8 | \" that is the question\" | TRANSCRIPT | true ``` Concatenating the finalized transcripts with `is_final` set to true, the complete utterance becomes \"to be or not to be that is the question\".",
+"id": "GoogleCloudDialogflowV2beta1StreamingRecognitionResult",
+"properties": {
+"confidence": {
+"description": "The Speech confidence between 0.0 and 1.0 for the current portion of audio. A higher number indicates an estimated greater likelihood that the recognized words are correct. The default of 0.0 is a sentinel value indicating that confidence was not set. This field is typically only provided if `is_final` is true and you should not rely on it being accurate or even set.",
+"format": "float",
+"type": "number"
+},
+"dtmfDigits": {
+"$ref": "GoogleCloudDialogflowV2beta1TelephonyDtmfEvents",
+"description": "DTMF digits. Populated if and only if `message_type` = `DTMF_DIGITS`."
+},
+"isFinal": {
+"description": "If `false`, the `StreamingRecognitionResult` represents an interim result that may change. If `true`, the recognizer will not return any further hypotheses about this piece of the audio. May only be populated for `message_type` = `TRANSCRIPT`.",
+"type": "boolean"
+},
+"languageCode": {
+"description": "Detected language code for the transcript.",
+"type": "string"
+},
+"messageType": {
+"description": "Type of the result message.",
+"enum": [
+"MESSAGE_TYPE_UNSPECIFIED",
+"TRANSCRIPT",
+"DTMF_DIGITS",
+"END_OF_SINGLE_UTTERANCE",
+"PARTIAL_DTMF_DIGITS"
+],
+"enumDescriptions": [
+"Not specified. Should never be used.",
+"Message contains a (possibly partial) transcript.",
+"Message contains DTMF digits.",
+"This event indicates that the server has detected the end of the user's speech utterance and expects no additional speech. Therefore, the server will not process additional audio (although it may subsequently return additional results). The client should stop sending additional audio data, half-close the gRPC connection, and wait for any additional results until the server closes the gRPC connection. This message is only sent if `single_utterance` was set to `true`, and is not used otherwise.",
+"Message contains DTMF digits. Before a message with DTMF_DIGITS is sent, a message with PARTIAL_DTMF_DIGITS may be sent with DTMF digits collected up to the time of sending, which represents an intermediate result."
+],
+"type": "string"
+},
+"speechEndOffset": {
+"description": "Time offset of the end of this Speech recognition result relative to the beginning of the audio. Only populated for `message_type` = `TRANSCRIPT`.",
+"format": "google-duration",
+"type": "string"
+},
+"speechWordInfo": {
+"description": "Word-specific information for the words recognized by Speech in transcript. Populated if and only if `message_type` = `TRANSCRIPT` and [InputAudioConfig.enable_word_info] is set.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SpeechWordInfo"
+},
+"type": "array"
+},
+"stability": {
+"description": "An estimate of the likelihood that the speech recognizer will not change its guess about this interim recognition result: * If the value is unspecified or 0.0, Dialogflow didn't compute the stability. In particular, Dialogflow will only provide stability for `TRANSCRIPT` results with `is_final = false`. * Otherwise, the value is in (0.0, 1.0] where 0.0 means completely unstable and 1.0 means completely stable.",
+"format": "float",
+"type": "number"
+},
+"transcript": {
+"description": "Transcript text representing the words that the user spoke. Populated if and only if `message_type` = `TRANSCRIPT`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SubAgent": {
+"description": "Contains basic configuration for a sub-agent.",
+"id": "GoogleCloudDialogflowV2beta1SubAgent",
+"properties": {
+"environment": {
+"description": "Optional. The unique identifier (`environment name` in dialogflow console) of this sub-agent environment. Assumes draft environment if `environment` is not set.",
+"type": "string"
+},
+"project": {
+"description": "Required. The project of this agent. Format: `projects/` or `projects//locations/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestArticlesRequest": {
+"description": "The request message for Participants.SuggestArticles.",
+"id": "GoogleCloudDialogflowV2beta1SuggestArticlesRequest",
+"properties": {
+"assistQueryParams": {
+"$ref": "GoogleCloudDialogflowV2beta1AssistQueryParameters",
+"description": "Optional. Parameters for a human assist query."
+},
+"contextSize": {
+"description": "Optional. Max number of messages prior to and including latest_message to use as context when compiling the suggestion. By default 20 and at most 50.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "Optional. The name of the latest conversation message to compile suggestion for. If empty, it will be the latest message of the conversation. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestArticlesResponse": {
+"description": "The response message for Participants.SuggestArticles.",
+"id": "GoogleCloudDialogflowV2beta1SuggestArticlesResponse",
+"properties": {
+"articleAnswers": {
+"description": "Output only. Articles ordered by score in descending order.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1ArticleAnswer"
+},
+"type": "array"
+},
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestArticlesResponse.context_size field in the request if there aren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestConversationSummaryRequest": {
+"description": "The request message for Conversations.SuggestConversationSummary.",
+"id": "GoogleCloudDialogflowV2beta1SuggestConversationSummaryRequest",
+"properties": {
+"assistQueryParams": {
+"$ref": "GoogleCloudDialogflowV2beta1AssistQueryParameters",
+"description": "Optional. Parameters for a human assist query. Only used for POC/demo purpose."
+},
+"contextSize": {
+"description": "Optional. Max number of messages prior to and including [latest_message] to use as context when compiling the suggestion. By default 500 and at most 1000.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "Optional. The name of the latest conversation message used as context for compiling suggestion. If empty, the latest message of the conversation will be used. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponse": {
+"description": "The response message for Conversations.SuggestConversationSummary.",
+"id": "GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including last_conversation_message used to compile the suggestion. It may be smaller than the SuggestSummaryRequest.context_size field in the request if there weren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used as context for compiling suggestion. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"summary": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponseSummary",
+"description": "Generated summary."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponseSummary": {
+"description": "Generated summary for a conversation.",
+"id": "GoogleCloudDialogflowV2beta1SuggestConversationSummaryResponseSummary",
+"properties": {
+"answerRecord": {
+"description": "The name of the answer record. Format: \"projects//answerRecords/\"",
+"type": "string"
+},
+"baselineModelVersion": {
+"description": "The baseline model version used to generate this summary. It is empty if a baseline model was not used to generate this summary.",
+"type": "string"
+},
+"text": {
+"description": "The summary content that is concatenated into one string.",
+"type": "string"
+},
+"textSections": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The summary content that is divided into sections. The key is the section's name and the value is the section's content. There is no specific format for the key or value.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestDialogflowAssistsResponse": {
+"description": "The response message for Participants.SuggestDialogflowAssists.",
+"id": "GoogleCloudDialogflowV2beta1SuggestDialogflowAssistsResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestDialogflowAssistsRequest.context_size field in the request if there aren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"dialogflowAssistAnswers": {
+"description": "Output only. Multiple reply options provided by Dialogflow assist service. The order is based on the rank of the model prediction.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1DialogflowAssistAnswer"
+},
+"type": "array"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to suggest answer. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestFaqAnswersRequest": {
+"description": "The request message for Participants.SuggestFaqAnswers.",
+"id": "GoogleCloudDialogflowV2beta1SuggestFaqAnswersRequest",
+"properties": {
+"assistQueryParams": {
+"$ref": "GoogleCloudDialogflowV2beta1AssistQueryParameters",
+"description": "Optional. Parameters for a human assist query."
+},
+"contextSize": {
+"description": "Optional. Max number of messages prior to and including [latest_message] to use as context when compiling the suggestion. By default 20 and at most 50.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "Optional. The name of the latest conversation message to compile suggestion for. If empty, it will be the latest message of the conversation. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestFaqAnswersResponse": {
+"description": "The request message for Participants.SuggestFaqAnswers.",
+"id": "GoogleCloudDialogflowV2beta1SuggestFaqAnswersResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestFaqAnswersRequest.context_size field in the request if there aren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"faqAnswers": {
+"description": "Output only. Answers extracted from FAQ documents.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1FaqAnswer"
+},
+"type": "array"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistRequest": {
+"description": "The request message for Participants.SuggestKnowledgeAssist.",
+"id": "GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistRequest",
+"properties": {
+"contextSize": {
+"description": "Optional. Max number of messages prior to and including latest_message to use as context when compiling the suggestion. The context size is by default 100 and at most 100.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "Optional. The name of the latest conversation message to compile suggestions for. If empty, it will be the latest message of the conversation. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"previousSuggestedQuery": {
+"description": "Optional. The previously suggested query for the given conversation. This helps identify whether the next suggestion we generate is resonably different from the previous one. This is useful to avoid similar suggestions within the conversation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistResponse": {
+"description": "The response message for Participants.SuggestKnowledgeAssist.",
+"id": "GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestKnowledgeAssistRequest.context_size field in the request if there are fewer messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"knowledgeAssistAnswer": {
+"$ref": "GoogleCloudDialogflowV2beta1KnowledgeAssistAnswer",
+"description": "Output only. Knowledge Assist suggestion.",
+"readOnly": true
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestSmartRepliesRequest": {
+"description": "The request message for Participants.SuggestSmartReplies.",
+"id": "GoogleCloudDialogflowV2beta1SuggestSmartRepliesRequest",
+"properties": {
+"contextSize": {
+"description": "Optional. Max number of messages prior to and including [latest_message] to use as context when compiling the suggestion. By default 20 and at most 50.",
+"format": "int32",
+"type": "integer"
+},
+"currentTextInput": {
+"$ref": "GoogleCloudDialogflowV2beta1TextInput",
+"description": "The current natural language text segment to compile suggestion for. This provides a way for user to get follow up smart reply suggestion after a smart reply selection, without sending a text message."
+},
+"latestMessage": {
+"description": "The name of the latest conversation message to compile suggestion for. If empty, it will be the latest message of the conversation. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestSmartRepliesResponse": {
+"description": "The response message for Participants.SuggestSmartReplies.",
+"id": "GoogleCloudDialogflowV2beta1SuggestSmartRepliesResponse",
+"properties": {
+"contextSize": {
+"description": "Number of messages prior to and including latest_message to compile the suggestion. It may be smaller than the SuggestSmartRepliesRequest.context_size field in the request if there aren't that many messages in the conversation.",
+"format": "int32",
+"type": "integer"
+},
+"latestMessage": {
+"description": "The name of the latest conversation message used to compile suggestion for. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"smartReplyAnswers": {
+"description": "Output only. Multiple reply options provided by smart reply service. The order is based on the rank of the model prediction. The maximum number of the returned replies is set in SmartReplyConfig.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SmartReplyAnswer"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Suggestion": {
+"deprecated": true,
+"description": "Represents a suggestion for a human agent.",
+"id": "GoogleCloudDialogflowV2beta1Suggestion",
+"properties": {
+"articles": {
+"description": "Output only. Articles ordered by score in descending order.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestionArticle"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Output only. The time the suggestion was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"faqAnswers": {
+"description": "Output only. Answers extracted from FAQ documents.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestionFaqAnswer"
+},
+"type": "array"
+},
+"latestMessage": {
+"description": "Output only. Latest message used as context to compile this suggestion. Format: `projects//locations//conversations//messages/`.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The name of this suggestion. Format: `projects//locations//conversations//participants/*/suggestions/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestionArticle": {
+"description": "Represents suggested article.",
+"id": "GoogleCloudDialogflowV2beta1SuggestionArticle",
+"properties": {
+"answerRecord": {
+"description": "Output only. The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. A map that contains metadata about the answer and the document from which it originates.",
+"type": "object"
+},
+"snippets": {
+"description": "Output only. Article snippets.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"title": {
+"description": "Output only. The article title.",
+"type": "string"
+},
+"uri": {
+"description": "Output only. The article URI.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestionFaqAnswer": {
+"description": "Represents suggested answer from \"frequently asked questions\".",
+"id": "GoogleCloudDialogflowV2beta1SuggestionFaqAnswer",
+"properties": {
+"answer": {
+"description": "Output only. The piece of text from the `source` knowledge base document.",
+"type": "string"
+},
+"answerRecord": {
+"description": "Output only. The name of answer record, in the format of \"projects//locations//answerRecords/\"",
+"type": "string"
+},
+"confidence": {
+"description": "The system's confidence score that this Knowledge answer is a good match for this conversational query, range from 0.0 (completely uncertain) to 1.0 (completely certain).",
+"format": "float",
+"type": "number"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. A map that contains metadata about the answer and the document from which it originates.",
+"type": "object"
+},
+"question": {
+"description": "Output only. The corresponding FAQ question.",
+"type": "string"
+},
+"source": {
+"description": "Output only. Indicates which Knowledge Document this answer was extracted from. Format: `projects//locations//agent/knowledgeBases//documents/`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestionFeature": {
+"description": "The type of Human Agent Assistant API suggestion to perform, and the maximum number of results to return for that type. Multiple `Feature` objects can be specified in the `features` list.",
+"id": "GoogleCloudDialogflowV2beta1SuggestionFeature",
+"properties": {
+"type": {
+"description": "Type of Human Agent Assistant API feature to request.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"ARTICLE_SUGGESTION",
+"FAQ",
+"SMART_REPLY",
+"DIALOGFLOW_ASSIST",
+"CONVERSATION_SUMMARIZATION",
+"KNOWLEDGE_SEARCH",
+"KNOWLEDGE_ASSIST"
+],
+"enumDescriptions": [
+"Unspecified feature type.",
+"Run article suggestion model for chat.",
+"Run FAQ model.",
+"Run smart reply model for chat.",
+"Run Dialogflow assist model for chat, which will return automated agent response as suggestion.",
+"Run conversation summarization model for chat.",
+"Run knowledge search with text input from agent or text generated query.",
+"Run knowledge assist with automatic query generation."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestionInput": {
+"description": "Represents the selection of a suggestion.",
+"id": "GoogleCloudDialogflowV2beta1SuggestionInput",
+"properties": {
+"answerRecord": {
+"description": "Required. The ID of a suggestion selected by the human agent. The suggestion(s) were generated in a previous call to request Dialogflow assist. The format is: `projects//locations//answerRecords/` where is an alphanumeric string.",
+"type": "string"
+},
+"intentInput": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentInput",
+"description": "The intent to be triggered on V3 agent."
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "In Dialogflow assist for v3, the user can submit a form by sending a SuggestionInput. The form is uniquely determined by the answer_record field, which identifies a v3 QueryResult containing the current page. The form parameters are specified via the parameters field. Depending on your protocol or client library language, this is a map, associative array, symbol table, dictionary, or JSON object composed of a collection of (MapKey, MapValue) pairs: * MapKey type: string * MapKey value: parameter name * MapValue type: If parameter's entity type is a composite entity then use map, otherwise, depending on the parameter value type, it could be one of string, number, boolean, null, list or map. * MapValue value: If parameter's entity type is a composite entity then use map from composite entity property names to property values, otherwise, use parameter value.",
+"type": "object"
+},
+"textOverride": {
+"$ref": "GoogleCloudDialogflowV2beta1TextInput",
+"description": "Optional. If the customer edited the suggestion before using it, include the revised text here."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SuggestionResult": {
+"description": "One response of different type of suggestion response which is used in the response of Participants.AnalyzeContent and Participants.AnalyzeContent, as well as HumanAgentAssistantEvent.",
+"id": "GoogleCloudDialogflowV2beta1SuggestionResult",
+"properties": {
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "Error status if the request failed."
+},
+"suggestArticlesResponse": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestArticlesResponse",
+"description": "SuggestArticlesResponse if request is for ARTICLE_SUGGESTION."
+},
+"suggestDialogflowAssistsResponse": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestDialogflowAssistsResponse",
+"description": "SuggestDialogflowAssistsResponse if request is for DIALOGFLOW_ASSIST."
+},
+"suggestEntityExtractionResponse": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestDialogflowAssistsResponse",
+"description": "SuggestDialogflowAssistsResponse if request is for ENTITY_EXTRACTION."
+},
+"suggestFaqAnswersResponse": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestFaqAnswersResponse",
+"description": "SuggestFaqAnswersResponse if request is for FAQ_ANSWER."
+},
+"suggestKnowledgeAssistResponse": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestKnowledgeAssistResponse",
+"description": "SuggestKnowledgeAssistResponse if request is for KNOWLEDGE_ASSIST."
+},
+"suggestSmartRepliesResponse": {
+"$ref": "GoogleCloudDialogflowV2beta1SuggestSmartRepliesResponse",
+"description": "SuggestSmartRepliesResponse if request is for SMART_REPLY."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SummarizationContext": {
+"description": "Summarization context that customer can configure.",
+"id": "GoogleCloudDialogflowV2beta1SummarizationContext",
+"properties": {
+"fewShotExamples": {
+"description": "Optional. List of few shot examples.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1FewShotExample"
+},
+"type": "array"
+},
+"outputLanguageCode": {
+"description": "Optional. The target language of the generated summary. The language code for conversation will be used if this field is empty. Supported 2.0 and later versions.",
+"type": "string"
+},
+"summarizationSections": {
+"description": "Optional. List of sections. Note it contains both predefined section sand customer defined sections.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SummarizationSection"
+},
+"type": "array"
+},
+"version": {
+"description": "Optional. Version of the feature. If not set, default to latest version. Current candidates are [\"1.0\"].",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SummarizationSection": {
+"description": "Represents the section of summarization.",
+"id": "GoogleCloudDialogflowV2beta1SummarizationSection",
+"properties": {
+"definition": {
+"description": "Optional. Definition of the section, for example, \"what the customer needs help with or has question about.\"",
+"type": "string"
+},
+"key": {
+"description": "Optional. Name of the section, for example, \"situation\".",
+"type": "string"
+},
+"type": {
+"description": "Optional. Type of the summarization section.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"SITUATION",
+"ACTION",
+"RESOLUTION",
+"REASON_FOR_CANCELLATION",
+"CUSTOMER_SATISFACTION",
+"ENTITIES",
+"CUSTOMER_DEFINED"
+],
+"enumDescriptions": [
+"Undefined section type, does not return anything.",
+"What the customer needs help with or has question about. Section name: \"situation\".",
+"What the agent does to help the customer. Section name: \"action\".",
+"Result of the customer service. A single word describing the result of the conversation. Section name: \"resolution\".",
+"Reason for cancellation if the customer requests for a cancellation. \"N/A\" otherwise. Section name: \"reason_for_cancellation\".",
+"\"Unsatisfied\" or \"Satisfied\" depending on the customer's feelings at the end of the conversation. Section name: \"customer_satisfaction\".",
+"Key entities extracted from the conversation, such as ticket number, order number, dollar amount, etc. Section names are prefixed by \"entities/\".",
+"Customer defined sections."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SummarizationSectionList": {
+"description": "List of summarization sections.",
+"id": "GoogleCloudDialogflowV2beta1SummarizationSectionList",
+"properties": {
+"summarizationSections": {
+"description": "Optional. Summarization sections.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SummarizationSection"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SummarySuggestion": {
+"description": "Suggested summary of the conversation.",
+"id": "GoogleCloudDialogflowV2beta1SummarySuggestion",
+"properties": {
+"summarySections": {
+"description": "Required. All the parts of generated summary.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SummarySuggestionSummarySection"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SummarySuggestionSummarySection": {
+"description": "A component of the generated summary.",
+"id": "GoogleCloudDialogflowV2beta1SummarySuggestionSummarySection",
+"properties": {
+"section": {
+"description": "Required. Name of the section.",
+"type": "string"
+},
+"summary": {
+"description": "Required. Summary text for the section.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig": {
+"description": "Configuration of how speech should be synthesized.",
+"id": "GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig",
+"properties": {
+"effectsProfileId": {
+"description": "Optional. An identifier which selects 'audio effects' profiles that are applied on (post synthesized) text to speech. Effects are applied on top of each other in the order they are given.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"pitch": {
+"description": "Optional. Speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20 semitones from the original pitch. -20 means decrease 20 semitones from the original pitch.",
+"format": "double",
+"type": "number"
+},
+"speakingRate": {
+"description": "Optional. Speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal native speed supported by the specific voice. 2.0 is twice as fast, and 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any other values < 0.25 or > 4.0 will return an error.",
+"format": "double",
+"type": "number"
+},
+"voice": {
+"$ref": "GoogleCloudDialogflowV2beta1VoiceSelectionParams",
+"description": "Optional. The desired voice of the synthesized audio."
+},
+"volumeGainDb": {
+"description": "Optional. Volume gain (in dB) of the normal native volume supported by the specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB) will play at approximately half the amplitude of the normal native signal amplitude. A value of +6.0 (dB) will play at approximately twice the amplitude of the normal native signal amplitude. We strongly recommend not to exceed +10 (dB) as there's usually no effective increase in loudness for any value greater than that.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1TelephonyDtmfEvents": {
+"description": "A wrapper of repeated TelephonyDtmf digits.",
+"id": "GoogleCloudDialogflowV2beta1TelephonyDtmfEvents",
+"properties": {
+"dtmfEvents": {
+"description": "A sequence of TelephonyDtmf digits.",
+"items": {
+"enum": [
+"TELEPHONY_DTMF_UNSPECIFIED",
+"DTMF_ONE",
+"DTMF_TWO",
+"DTMF_THREE",
+"DTMF_FOUR",
+"DTMF_FIVE",
+"DTMF_SIX",
+"DTMF_SEVEN",
+"DTMF_EIGHT",
+"DTMF_NINE",
+"DTMF_ZERO",
+"DTMF_A",
+"DTMF_B",
+"DTMF_C",
+"DTMF_D",
+"DTMF_STAR",
+"DTMF_POUND"
+],
+"enumDescriptions": [
+"Not specified. This value may be used to indicate an absent digit.",
+"Number: '1'.",
+"Number: '2'.",
+"Number: '3'.",
+"Number: '4'.",
+"Number: '5'.",
+"Number: '6'.",
+"Number: '7'.",
+"Number: '8'.",
+"Number: '9'.",
+"Number: '0'.",
+"Letter: 'A'.",
+"Letter: 'B'.",
+"Letter: 'C'.",
+"Letter: 'D'.",
+"Asterisk/star: '*'.",
+"Pound/diamond/hash/square/gate/octothorpe: '#'."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1TextInput": {
+"description": "Represents the natural language text to be processed.",
+"id": "GoogleCloudDialogflowV2beta1TextInput",
+"properties": {
+"languageCode": {
+"description": "Required. The language of this conversational query. See [Language Support](https://cloud.google.com/dialogflow/docs/reference/language) for a list of the currently supported language codes. Note that queries in the same session do not necessarily need to specify the same language.",
+"type": "string"
+},
+"text": {
+"description": "Required. The UTF-8 encoded natural language text to be processed. Text length must not exceed 256 characters for virtual agent interactions.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1TextToSpeechSettings": {
+"description": "Instructs the speech synthesizer on how to generate the output audio content.",
+"id": "GoogleCloudDialogflowV2beta1TextToSpeechSettings",
+"properties": {
+"enableTextToSpeech": {
+"description": "Optional. Indicates whether text to speech is enabled. Even when this field is false, other settings in this proto are still retained.",
+"type": "boolean"
+},
+"outputAudioEncoding": {
+"description": "Required. Audio encoding of the synthesized audio content.",
+"enum": [
+"OUTPUT_AUDIO_ENCODING_UNSPECIFIED",
+"OUTPUT_AUDIO_ENCODING_LINEAR_16",
+"OUTPUT_AUDIO_ENCODING_MP3",
+"OUTPUT_AUDIO_ENCODING_MP3_64_KBPS",
+"OUTPUT_AUDIO_ENCODING_OGG_OPUS",
+"OUTPUT_AUDIO_ENCODING_MULAW",
+"OUTPUT_AUDIO_ENCODING_ALAW"
+],
+"enumDescriptions": [
+"Not specified.",
+"Uncompressed 16-bit signed little-endian samples (Linear PCM). Audio content returned as LINEAR16 also contains a WAV header.",
+"MP3 audio at 32kbps.",
+"MP3 audio at 64kbps.",
+"Opus encoded audio wrapped in an ogg container. The result will be a file which can be played natively on Android, and in browsers (at least Chrome and Firefox). The quality of the encoding is considerably higher than MP3 while using approximately the same bitrate.",
+"8-bit samples that compand 14-bit audio samples using G.711 PCMU/mu-law.",
+"8-bit samples that compand 13-bit audio samples using G.711 PCMU/a-law."
+],
+"type": "string"
+},
+"sampleRateHertz": {
+"description": "Optional. The synthesis sample rate (in hertz) for this audio. If not provided, then the synthesizer will use the default sample rate based on the audio encoding. If this is different from the voice's natural sample rate, then the synthesizer will honor this request by converting to the desired sample rate (which might result in worse audio quality).",
+"format": "int32",
+"type": "integer"
+},
+"synthesizeSpeechConfigs": {
+"additionalProperties": {
+"$ref": "GoogleCloudDialogflowV2beta1SynthesizeSpeechConfig"
+},
+"description": "Optional. Configuration of how speech should be synthesized, mapping from language (https://cloud.google.com/dialogflow/docs/reference/language) to SynthesizeSpeechConfig.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1TrainAgentRequest": {
+"description": "The request message for Agents.TrainAgent.",
+"id": "GoogleCloudDialogflowV2beta1TrainAgentRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ValidationError": {
+"description": "Represents a single validation error.",
+"id": "GoogleCloudDialogflowV2beta1ValidationError",
+"properties": {
+"entries": {
+"description": "The names of the entries that the error is associated with. Format: - `projects//agent`, if the error is associated with the entire agent. - `projects//agent/intents/`, if the error is associated with certain intents. - `projects//agent/intents//trainingPhrases/`, if the error is associated with certain intent training phrases. - `projects//agent/intents//parameters/`, if the error is associated with certain intent parameters. - `projects//agent/entities/`, if the error is associated with certain entities.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"errorMessage": {
+"description": "The detailed error message.",
+"type": "string"
+},
+"severity": {
+"description": "The severity of the error.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"INFO",
+"WARNING",
+"ERROR",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Not specified. This value should never be used.",
+"The agent doesn't follow Dialogflow best practices.",
+"The agent may not behave as expected.",
+"The agent may experience partial failures.",
+"The agent may completely fail."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1ValidationResult": {
+"description": "Represents the output of agent validation.",
+"id": "GoogleCloudDialogflowV2beta1ValidationResult",
+"properties": {
+"validationErrors": {
+"description": "Contains all validation errors.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1ValidationError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1Version": {
+"description": "You can create multiple versions of your agent and publish them to separate environments. When you edit an agent, you are editing the draft agent. At any point, you can save the draft agent as an agent version, which is an immutable snapshot of your agent. When you save the draft agent, it is published to the default environment. When you create agent versions, you can publish them to custom environments. You can create a variety of custom environments for: - testing - development - production - etc. For more information, see the [versions and environments guide](https://cloud.google.com/dialogflow/docs/agents-versions).",
+"id": "GoogleCloudDialogflowV2beta1Version",
+"properties": {
+"createTime": {
+"description": "Output only. The creation time of this version. This field is read-only, i.e., it cannot be set by create and update methods.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. The developer-provided description of this version.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The unique identifier of this agent version. Supported formats: - `projects//agent/versions/` - `projects//locations//agent/versions/`",
+"readOnly": true,
+"type": "string"
+},
+"status": {
+"description": "Output only. The status of this version. This field is read-only and cannot be set by create and update methods.",
+"enum": [
+"VERSION_STATUS_UNSPECIFIED",
+"IN_PROGRESS",
+"READY",
+"FAILED"
+],
+"enumDescriptions": [
+"Not specified. This value is not used.",
+"Version is not ready to serve (e.g. training is in progress).",
+"Version is ready to serve.",
+"Version training failed."
+],
+"readOnly": true,
+"type": "string"
+},
+"versionNumber": {
+"description": "Output only. The sequential number of this version. This field is read-only which means it cannot be set by create and update methods.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1VoiceSelectionParams": {
+"description": "Description of which voice to use for speech synthesis.",
+"id": "GoogleCloudDialogflowV2beta1VoiceSelectionParams",
+"properties": {
+"name": {
+"description": "Optional. The name of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and ssml_gender. For the list of available voices, please refer to [Supported voices and languages](https://cloud.google.com/text-to-speech/docs/voices).",
+"type": "string"
+},
+"ssmlGender": {
+"description": "Optional. The preferred gender of the voice. If not set, the service will choose a voice based on the other parameters such as language_code and name. Note that this is only a preference, not requirement. If a voice of the appropriate gender is not available, the synthesizer should substitute a voice with a different gender rather than failing the request.",
+"enum": [
+"SSML_VOICE_GENDER_UNSPECIFIED",
+"SSML_VOICE_GENDER_MALE",
+"SSML_VOICE_GENDER_FEMALE",
+"SSML_VOICE_GENDER_NEUTRAL"
+],
+"enumDescriptions": [
+"An unspecified gender, which means that the client doesn't care which gender the selected voice will have.",
+"A male voice.",
+"A female voice.",
+"A gender-neutral voice."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1WebhookRequest": {
+"description": "The request message for a webhook call.",
+"id": "GoogleCloudDialogflowV2beta1WebhookRequest",
+"properties": {
+"alternativeQueryResults": {
+"description": "Alternative query results from KnowledgeService.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1QueryResult"
+},
+"type": "array"
+},
+"originalDetectIntentRequest": {
+"$ref": "GoogleCloudDialogflowV2beta1OriginalDetectIntentRequest",
+"description": "Optional. The contents of the original request that was passed to `[Streaming]DetectIntent` call."
+},
+"queryResult": {
+"$ref": "GoogleCloudDialogflowV2beta1QueryResult",
+"description": "The result of the conversational query or event processing. Contains the same value as `[Streaming]DetectIntentResponse.query_result`."
+},
+"responseId": {
+"description": "The unique identifier of the response. Contains the same value as `[Streaming]DetectIntentResponse.response_id`.",
+"type": "string"
+},
+"session": {
+"description": "The unique identifier of detectIntent request session. Can be used to identify end-user inside webhook implementation. Supported formats: - `projects//agent/sessions/, - `projects//locations//agent/sessions/`, - `projects//agent/environments//users//sessions/`, - `projects//locations//agent/environments//users//sessions/`,",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV2beta1WebhookResponse": {
+"description": "The response message for a webhook call. This response is validated by the Dialogflow server. If validation fails, an error will be returned in the QueryResult.diagnostic_info field. Setting JSON fields to an empty value with the wrong type is a common error. To avoid this error: - Use `\"\"` for empty strings - Use `{}` or `null` for empty objects - Use `[]` or `null` for empty arrays For more information, see the [Protocol Buffers Language Guide](https://developers.google.com/protocol-buffers/docs/proto3#json).",
+"id": "GoogleCloudDialogflowV2beta1WebhookResponse",
+"properties": {
+"endInteraction": {
+"description": "Optional. Indicates that this intent ends an interaction. Some integrations (e.g., Actions on Google or Dialogflow phone gateway) use this information to close interaction with an end user. Default is false.",
+"type": "boolean"
+},
+"followupEventInput": {
+"$ref": "GoogleCloudDialogflowV2beta1EventInput",
+"description": "Optional. Invokes the supplied events. When this field is set, Dialogflow ignores the `fulfillment_text`, `fulfillment_messages`, and `payload` fields."
+},
+"fulfillmentMessages": {
+"description": "Optional. The rich response messages intended for the end-user. When provided, Dialogflow uses this field to populate QueryResult.fulfillment_messages sent to the integration or API caller.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1IntentMessage"
+},
+"type": "array"
+},
+"fulfillmentText": {
+"description": "Optional. The text response message intended for the end-user. It is recommended to use `fulfillment_messages.text.text[0]` instead. When provided, Dialogflow uses this field to populate QueryResult.fulfillment_text sent to the integration or API caller.",
+"type": "string"
+},
+"liveAgentHandoff": {
+"description": "Indicates that a live agent should be brought in to handle the interaction with the user. In most cases, when you set this flag to true, you would also want to set end_interaction to true as well. Default is false.",
+"type": "boolean"
+},
+"outputContexts": {
+"description": "Optional. The collection of output contexts that will overwrite currently active contexts for the session and reset their lifespans. When provided, Dialogflow uses this field to populate QueryResult.output_contexts sent to the integration or API caller.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1Context"
+},
+"type": "array"
+},
+"payload": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. This field can be used to pass custom data from your webhook to the integration or API caller. Arbitrary JSON objects are supported. When provided, Dialogflow uses this field to populate QueryResult.webhook_payload sent to the integration or API caller. This field is also used by the [Google Assistant integration](https://cloud.google.com/dialogflow/docs/integrations/aog) for rich response messages. See the format definition at [Google Assistant Dialogflow webhook format](https://developers.google.com/assistant/actions/build/json/dialogflow-webhook-json)",
+"type": "object"
+},
+"sessionEntityTypes": {
+"description": "Optional. Additional session entity types to replace or extend developer entity types with. The entity synonyms apply to all languages and persist for the session. Setting this data from a webhook overwrites the session entity types that have been set using `detectIntent`, `streamingDetectIntent` or SessionEntityType management methods.",
+"items": {
+"$ref": "GoogleCloudDialogflowV2beta1SessionEntityType"
+},
+"type": "array"
+},
+"source": {
+"description": "Optional. A custom field used to identify the webhook source. Arbitrary strings are supported. When provided, Dialogflow uses this field to populate QueryResult.webhook_source sent to the integration or API caller.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV3alpha1ConversationSignals": {
+"description": "This message is used to hold all the Conversation Signals data, which will be converted to JSON and exported to BigQuery.",
+"id": "GoogleCloudDialogflowV3alpha1ConversationSignals",
+"properties": {
+"turnSignals": {
+"$ref": "GoogleCloudDialogflowV3alpha1TurnSignals",
+"description": "Required. Turn signals for the current turn."
+}
+},
+"type": "object"
+},
+"GoogleCloudDialogflowV3alpha1TurnSignals": {
+"description": "Collection of all signals that were extracted for a single turn of the conversation.",
+"id": "GoogleCloudDialogflowV3alpha1TurnSignals",
+"properties": {
+"agentEscalated": {
+"description": "Whether agent responded with LiveAgentHandoff fulfillment.",
+"type": "boolean"
+},
+"dtmfUsed": {
+"description": "Whether user was using DTMF input.",
+"type": "boolean"
+},
+"failureReasons": {
+"description": "Failure reasons of the turn.",
+"items": {
+"enum": [
+"FAILURE_REASON_UNSPECIFIED",
+"FAILED_INTENT",
+"FAILED_WEBHOOK"
+],
+"enumDescriptions": [
+"Failure reason is not assigned.",
+"Whether NLU failed to recognize user intent.",
+"Whether webhook failed during the turn."
+],
+"type": "string"
+},
+"type": "array"
+},
+"noMatch": {
+"description": "Whether NLU predicted NO_MATCH.",
+"type": "boolean"
+},
+"noUserInput": {
+"description": "Whether user provided no input.",
+"type": "boolean"
+},
+"reachedEndPage": {
+"description": "Whether turn resulted in End Session page.",
+"type": "boolean"
+},
+"sentimentMagnitude": {
+"description": "Sentiment magnitude of the user utterance if [sentiment](https://cloud.google.com/dialogflow/cx/docs/concept/sentiment) was enabled.",
+"format": "float",
+"type": "number"
+},
+"sentimentScore": {
+"description": "Sentiment score of the user utterance if [sentiment](https://cloud.google.com/dialogflow/cx/docs/concept/sentiment) was enabled.",
+"format": "float",
+"type": "number"
+},
+"triggeredAbandonmentEvent": {
+"description": "Whether agent has triggered the event corresponding to user abandoning the conversation.",
+"type": "boolean"
+},
+"userEscalated": {
+"description": "Whether user was specifically asking for a live agent.",
+"type": "boolean"
+},
+"webhookStatuses": {
+"description": "Human-readable statuses of the webhooks triggered during this turn.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudLocationListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "GoogleCloudLocationListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "GoogleCloudLocationLocation"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudLocationLocation": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "GoogleCloudLocationLocation",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "GoogleLongrunningListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "GoogleLongrunningOperation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningOperation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunningOperation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeLatLng": {
+"description": "An object that represents a latitude/longitude pair. This is expressed as a pair of doubles to represent degrees latitude and degrees longitude. Unless specified otherwise, this object must conform to the WGS84 standard. Values must be within normalized ranges.",
+"id": "GoogleTypeLatLng",
+"properties": {
+"latitude": {
+"description": "The latitude in degrees. It must be in the range [-90.0, +90.0].",
+"format": "double",
+"type": "number"
+},
+"longitude": {
+"description": "The longitude in degrees. It must be in the range [-180.0, +180.0].",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Dialogflow API",
+"version": "v2beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/domains.v1beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/domains.v1beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..5589f50c12e52509a46c4f32244377724a63b60e
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/domains.v1beta1.json
@@ -0,0 +1,2758 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://domains.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Domains",
+"description": "Enables management and configuration of domain names.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/domains/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "domains:v1beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://domains.mtls.googleapis.com/",
+"name": "domains",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "domains.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1beta1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "domains.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "domains.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "domains.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"registrations": {
+"methods": {
+"configureContactSettings": {
+"description": "Updates a `Registration`'s contact settings. Some changes require confirmation by the domain's registrant contact . Caution: Please consider carefully any changes to contact privacy settings when changing from `REDACTED_CONTACT_DATA` to `PUBLIC_CONTACT_DATA.` There may be a delay in reflecting updates you make to registrant contact information such that any changes you make to contact privacy (including from `REDACTED_CONTACT_DATA` to `PUBLIC_CONTACT_DATA`) will be applied without delay but changes to registrant contact information may take a limited time to be publicized. This means that changes to contact privacy from `REDACTED_CONTACT_DATA` to `PUBLIC_CONTACT_DATA` may make the previous registrant contact data public until the modified registrant contact details are published.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:configureContactSettings",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.configureContactSettings",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"registration": {
+"description": "Required. The name of the `Registration` whose contact settings are being updated, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:configureContactSettings",
+"request": {
+"$ref": "ConfigureContactSettingsRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"configureDnsSettings": {
+"description": "Updates a `Registration`'s DNS settings.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:configureDnsSettings",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.configureDnsSettings",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"registration": {
+"description": "Required. The name of the `Registration` whose DNS settings are being updated, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:configureDnsSettings",
+"request": {
+"$ref": "ConfigureDnsSettingsRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"configureManagementSettings": {
+"description": "Updates a `Registration`'s management settings.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:configureManagementSettings",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.configureManagementSettings",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"registration": {
+"description": "Required. The name of the `Registration` whose management settings are being updated, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:configureManagementSettings",
+"request": {
+"$ref": "ConfigureManagementSettingsRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a `Registration` resource. This method works on any `Registration` resource using [Subscription or Commitment billing](/domains/pricing#billing-models), provided that the resource was created at least 1 day in the past. When an active registration is successfully deleted, you can continue to use the domain in [Google Domains](https://domains.google/) until it expires. The calling user becomes the domain's sole owner in Google Domains, and permissions for the domain are subsequently managed there. The domain does not renew automatically unless the new owner sets up billing in Google Domains. After January 2024 you will only be able to delete `Registration` resources when `state` is one of: `EXPORTED`, `EXPIRED`,`REGISTRATION_FAILED` or `TRANSFER_FAILED`. See [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) for more details.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}",
+"httpMethod": "DELETE",
+"id": "domains.projects.locations.registrations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the `Registration` to delete, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"export": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Exports a `Registration` resource, such that it is no longer managed by Cloud Domains. When an active domain is successfully exported, you can continue to use the domain in [Google Domains](https://domains.google/) until it expires. The calling user becomes the domain's sole owner in Google Domains, and permissions for the domain are subsequently managed there. The domain does not renew automatically unless the new owner sets up billing in Google Domains.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:export",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.export",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the `Registration` to export, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:export",
+"request": {
+"$ref": "ExportRegistrationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the details of a `Registration` resource.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the `Registration` to get, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Registration"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"import": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Imports a domain name from [Google Domains](https://domains.google/) for use in Cloud Domains. To transfer a domain from another registrar, use the `TransferDomain` method instead. Since individual users can own domains in Google Domains, the calling user must have ownership permission on the domain.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations:import",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.import",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the Registration. Must be in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/registrations:import",
+"request": {
+"$ref": "ImportDomainRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"initiatePushTransfer": {
+"description": "Initiates the `Push Transfer` process to transfer the domain to another registrar. The process might complete instantly or might require confirmation or additional work. Check the emails sent to the email address of the registrant. The process is aborted after a timeout if it's not completed. This method is only supported for domains that have the `REQUIRE_PUSH_TRANSFER` property in the list of `domain_properties`. The domain must also be unlocked before it can be transferred to a different registrar. For more information, see [Transfer a registered domain to another registrar](https://cloud.google.com/domains/docs/transfer-domain-to-another-registrar).",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:initiatePushTransfer",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.initiatePushTransfer",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"registration": {
+"description": "Required. The name of the `Registration` for which the push transfer is initiated, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:initiatePushTransfer",
+"request": {
+"$ref": "InitiatePushTransferRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the `Registration` resources in a project.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filter expression to restrict the `Registration`s returned. The expression must specify the field name, a comparison operator, and the value that you want to use for filtering. The value must be a string, a number, a boolean, or an enum value. The comparison operator should be one of =, !=, >, <, >=, <=, or : for prefix or wildcard matches. For example, to filter to a specific domain name, use an expression like `domainName=\"example.com\"`. You can also check for the existence of a field; for example, to find domains using custom DNS settings, use an expression like `dnsSettings.customDns:*`. You can also create compound filters by combining expressions with the `AND` and `OR` operators. For example, to find domains that are suspended or have specific issues flagged, use an expression like `(state=SUSPENDED) OR (issue:*)`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "When set to the `next_page_token` from a prior response, provides the next page of results.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which to list `Registration`s, specified in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/registrations",
+"response": {
+"$ref": "ListRegistrationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates select fields of a `Registration` resource, notably `labels`. To update other fields, use the appropriate custom update method: * To update management settings, see `ConfigureManagementSettings` * To update DNS configuration, see `ConfigureDnsSettings` * To update contact information, see `ConfigureContactSettings`",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}",
+"httpMethod": "PATCH",
+"id": "domains.projects.locations.registrations.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Name of the `Registration` resource, in the format `projects/*/locations/*/registrations/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The field mask describing which fields to update as a comma-separated list. For example, if only the labels are being updated, the `update_mask` is `\"labels\"`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Registration"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"register": {
+"description": "Registers a new domain name and creates a corresponding `Registration` resource. Call `RetrieveRegisterParameters` first to check availability of the domain name and determine parameters like price that are needed to build a call to this method. A successful call creates a `Registration` resource in state `REGISTRATION_PENDING`, which resolves to `ACTIVE` within 1-2 minutes, indicating that the domain was successfully registered. If the resource ends up in state `REGISTRATION_FAILED`, it indicates that the domain was not registered successfully, and you can safely delete the resource and retry registration.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations:register",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.register",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the `Registration`. Must be in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/registrations:register",
+"request": {
+"$ref": "RegisterDomainRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"renewDomain": {
+"description": "Renews a recently expired domain. This method can only be called on domains that expired in the previous 30 days. After the renewal, the new expiration time of the domain is one year after the old expiration time and you are charged a `yearly_price` for the renewal.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:renewDomain",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.renewDomain",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"registration": {
+"description": "Required. The name of the `Registration` whish is being renewed, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:renewDomain",
+"request": {
+"$ref": "RenewDomainRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"resetAuthorizationCode": {
+"description": "Resets the authorization code of the `Registration` to a new random string. You can call this method only after 60 days have elapsed since the initial domain registration. Domains that have the `REQUIRE_PUSH_TRANSFER` property in the list of `domain_properties` don't support authorization codes and must use the `InitiatePushTransfer` method to initiate the process to transfer the domain to a different registrar.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:resetAuthorizationCode",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.resetAuthorizationCode",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"registration": {
+"description": "Required. The name of the `Registration` whose authorization code is being reset, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:resetAuthorizationCode",
+"request": {
+"$ref": "ResetAuthorizationCodeRequest"
+},
+"response": {
+"$ref": "AuthorizationCode"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"retrieveAuthorizationCode": {
+"description": "Gets the authorization code of the `Registration` for the purpose of transferring the domain to another registrar. You can call this method only after 60 days have elapsed since the initial domain registration. Domains that have the `REQUIRE_PUSH_TRANSFER` property in the list of `domain_properties` don't support authorization codes and must use the `InitiatePushTransfer` method to initiate the process to transfer the domain to a different registrar.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:retrieveAuthorizationCode",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.retrieveAuthorizationCode",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"registration": {
+"description": "Required. The name of the `Registration` whose authorization code is being retrieved, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:retrieveAuthorizationCode",
+"response": {
+"$ref": "AuthorizationCode"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"retrieveGoogleDomainsDnsRecords": {
+"description": "Lists the DNS records from the Google Domains DNS zone for domains that use the deprecated `google_domains_dns` in the `Registration`'s `dns_settings`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:retrieveGoogleDomainsDnsRecords",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.retrieveGoogleDomainsDnsRecords",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. When set to the `next_page_token` from a prior response, provides the next page of results.",
+"location": "query",
+"type": "string"
+},
+"registration": {
+"description": "Required. The name of the `Registration` whose Google Domains DNS records details you are retrieving, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:retrieveGoogleDomainsDnsRecords",
+"response": {
+"$ref": "RetrieveGoogleDomainsDnsRecordsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"retrieveGoogleDomainsForwardingConfig": {
+"description": "Lists the deprecated domain and email forwarding configurations you set up in the deprecated Google Domains UI. The configuration is present only for domains with the `google_domains_redirects_data_available` set to `true` in the `Registration`'s `dns_settings`. A forwarding configuration might not work correctly if required DNS records are not present in the domain's authoritative DNS Zone.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:retrieveGoogleDomainsForwardingConfig",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.retrieveGoogleDomainsForwardingConfig",
+"parameterOrder": [
+"registration"
+],
+"parameters": {
+"registration": {
+"description": "Required. The name of the `Registration` whose Google Domains forwarding configuration details are being retrieved, in the format `projects/*/locations/*/registrations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+registration}:retrieveGoogleDomainsForwardingConfig",
+"response": {
+"$ref": "RetrieveGoogleDomainsForwardingConfigResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"retrieveImportableDomains": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Lists domain names from [Google Domains](https://domains.google/) that can be imported to Cloud Domains using the `ImportDomain` method. Since individual users can own domains in Google Domains, the list of domains returned depends on the individual user making the call. Domains already managed by Cloud Domains are not returned.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations:retrieveImportableDomains",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.retrieveImportableDomains",
+"parameterOrder": [
+"location"
+],
+"parameters": {
+"location": {
+"description": "Required. The location. Must be in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "When set to the `next_page_token` from a prior response, provides the next page of results.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+location}/registrations:retrieveImportableDomains",
+"response": {
+"$ref": "RetrieveImportableDomainsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"retrieveRegisterParameters": {
+"description": "Gets parameters needed to register a new domain name, including price and up-to-date availability. Use the returned values to call `RegisterDomain`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations:retrieveRegisterParameters",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.retrieveRegisterParameters",
+"parameterOrder": [
+"location"
+],
+"parameters": {
+"domainName": {
+"description": "Required. The domain name. Unicode domain names must be expressed in Punycode format.",
+"location": "query",
+"type": "string"
+},
+"location": {
+"description": "Required. The location. Must be in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+location}/registrations:retrieveRegisterParameters",
+"response": {
+"$ref": "RetrieveRegisterParametersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"retrieveTransferParameters": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Gets parameters needed to transfer a domain name from another registrar to Cloud Domains. For domains already managed by [Google Domains](https://domains.google/), use `ImportDomain` instead. Use the returned values to call `TransferDomain`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations:retrieveTransferParameters",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.retrieveTransferParameters",
+"parameterOrder": [
+"location"
+],
+"parameters": {
+"domainName": {
+"description": "Required. The domain name. Unicode domain names must be expressed in Punycode format.",
+"location": "query",
+"type": "string"
+},
+"location": {
+"description": "Required. The location. Must be in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+location}/registrations:retrieveTransferParameters",
+"response": {
+"$ref": "RetrieveTransferParametersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"searchDomains": {
+"description": "Searches for available domain names similar to the provided query. Availability results from this method are approximate; call `RetrieveRegisterParameters` on a domain before registering to confirm availability.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations:searchDomains",
+"httpMethod": "GET",
+"id": "domains.projects.locations.registrations.searchDomains",
+"parameterOrder": [
+"location"
+],
+"parameters": {
+"location": {
+"description": "Required. The location. Must be in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"query": {
+"description": "Required. String used to search for available domain names.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+location}/registrations:searchDomains",
+"response": {
+"$ref": "SearchDomainsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations/{registrationsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/registrations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"transfer": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations) Transfers a domain name from another registrar to Cloud Domains. For domains already managed by [Google Domains](https://domains.google/), use `ImportDomain` instead. Before calling this method, go to the domain's current registrar to unlock the domain for transfer and retrieve the domain's transfer authorization code. Then call `RetrieveTransferParameters` to confirm that the domain is unlocked and to get values needed to build a call to this method. A successful call creates a `Registration` resource in state `TRANSFER_PENDING`. It can take several days to complete the transfer process. The registrant can often speed up this process by approving the transfer through the current registrar, either by clicking a link in an email from the registrar or by visiting the registrar's website. A few minutes after transfer approval, the resource transitions to state `ACTIVE`, indicating that the transfer was successful. If the transfer is rejected or the request expires without being approved, the resource can end up in state `TRANSFER_FAILED`. If transfer fails, you can safely delete the resource and retry the transfer.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/registrations:transfer",
+"httpMethod": "POST",
+"id": "domains.projects.locations.registrations.transfer",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the `Registration`. Must be in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/registrations:transfer",
+"request": {
+"$ref": "TransferDomainRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241209",
+"rootUrl": "https://domains.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuthorizationCode": {
+"description": "Defines an authorization code.",
+"id": "AuthorizationCode",
+"properties": {
+"code": {
+"description": "The Authorization Code in ASCII. It can be used to transfer the domain to or from another registrar.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigureContactSettingsRequest": {
+"description": "Request for the `ConfigureContactSettings` method.",
+"id": "ConfigureContactSettingsRequest",
+"properties": {
+"contactNotices": {
+"description": "The list of contact notices that the caller acknowledges. The notices needed here depend on the values specified in `contact_settings`.",
+"items": {
+"enum": [
+"CONTACT_NOTICE_UNSPECIFIED",
+"PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT"
+],
+"enumDescriptions": [
+"The notice is undefined.",
+"Required when setting the `privacy` field of `ContactSettings` to `PUBLIC_CONTACT_DATA`, which exposes contact data publicly."
+],
+"type": "string"
+},
+"type": "array"
+},
+"contactSettings": {
+"$ref": "ContactSettings",
+"description": "Fields of the `ContactSettings` to update."
+},
+"updateMask": {
+"description": "Required. The field mask describing which fields to update as a comma-separated list. For example, if only the registrant contact is being updated, the `update_mask` is `\"registrant_contact\"`.",
+"format": "google-fieldmask",
+"type": "string"
+},
+"validateOnly": {
+"description": "Validate the request without actually updating the contact settings.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ConfigureDnsSettingsRequest": {
+"description": "Request for the `ConfigureDnsSettings` method.",
+"id": "ConfigureDnsSettingsRequest",
+"properties": {
+"dnsSettings": {
+"$ref": "DnsSettings",
+"description": "Fields of the `DnsSettings` to update."
+},
+"updateMask": {
+"description": "Required. The field mask describing which fields to update as a comma-separated list. For example, if only the name servers are being updated for an existing Custom DNS configuration, the `update_mask` is `\"custom_dns.name_servers\"`. When changing the DNS provider from one type to another, pass the new provider's field name as part of the field mask. For example, when changing from a Google Domains DNS configuration to a Custom DNS configuration, the `update_mask` is `\"custom_dns\"`. //",
+"format": "google-fieldmask",
+"type": "string"
+},
+"validateOnly": {
+"description": "Validate the request without actually updating the DNS settings.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ConfigureManagementSettingsRequest": {
+"description": "Request for the `ConfigureManagementSettings` method.",
+"id": "ConfigureManagementSettingsRequest",
+"properties": {
+"managementSettings": {
+"$ref": "ManagementSettings",
+"description": "Fields of the `ManagementSettings` to update."
+},
+"updateMask": {
+"description": "Required. The field mask describing which fields to update as a comma-separated list. For example, if only the transfer lock is being updated, the `update_mask` is `\"transfer_lock_state\"`.",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Contact": {
+"description": "Details required for a contact associated with a `Registration`.",
+"id": "Contact",
+"properties": {
+"email": {
+"description": "Required. Email address of the contact.",
+"type": "string"
+},
+"faxNumber": {
+"description": "Fax number of the contact in international format. For example, `\"+1-800-555-0123\"`.",
+"type": "string"
+},
+"phoneNumber": {
+"description": "Required. Phone number of the contact in international format. For example, `\"+1-800-555-0123\"`.",
+"type": "string"
+},
+"postalAddress": {
+"$ref": "PostalAddress",
+"description": "Required. Postal address of the contact."
+}
+},
+"type": "object"
+},
+"ContactSettings": {
+"description": "Defines the contact information associated with a `Registration`. [ICANN](https://icann.org/) requires all domain names to have associated contact information. The `registrant_contact` is considered the domain's legal owner, and often the other contacts are identical.",
+"id": "ContactSettings",
+"properties": {
+"adminContact": {
+"$ref": "Contact",
+"description": "Required. The administrative contact for the `Registration`."
+},
+"privacy": {
+"description": "Required. Privacy setting for the contacts associated with the `Registration`.",
+"enum": [
+"CONTACT_PRIVACY_UNSPECIFIED",
+"PUBLIC_CONTACT_DATA",
+"PRIVATE_CONTACT_DATA",
+"REDACTED_CONTACT_DATA"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false
+],
+"enumDescriptions": [
+"The contact privacy settings are undefined.",
+"All the data from `ContactSettings` is publicly available. When setting this option, you must also provide a `PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT` in the `contact_notices` field of the request.",
+"Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). None of the data from `ContactSettings` is publicly available. Instead, proxy contact data is published for your domain. Email sent to the proxy email address is forwarded to the registrant's email address. Cloud Domains provides this privacy proxy service at no additional cost.",
+"The organization name (if provided) and limited non-identifying data from `ContactSettings` is available to the public (e.g. country and state). The remaining data is marked as `REDACTED FOR PRIVACY` in the WHOIS database. The actual information redacted depends on the domain. For details, see [the registration privacy article](https://support.google.com/domains/answer/3251242)."
+],
+"type": "string"
+},
+"registrantContact": {
+"$ref": "Contact",
+"description": "Required. The registrant contact for the `Registration`. *Caution: Anyone with access to this email address, phone number, and/or postal address can take control of the domain.* *Warning: For new `Registration`s, the registrant receives an email confirmation that they must complete within 15 days to avoid domain suspension.*"
+},
+"technicalContact": {
+"$ref": "Contact",
+"description": "Required. The technical contact for the `Registration`."
+}
+},
+"type": "object"
+},
+"CustomDns": {
+"description": "Configuration for an arbitrary DNS provider.",
+"id": "CustomDns",
+"properties": {
+"dsRecords": {
+"description": "The list of DS records for this domain, which are used to enable DNSSEC. The domain's DNS provider can provide the values to set here. If this field is empty, DNSSEC is disabled.",
+"items": {
+"$ref": "DsRecord"
+},
+"type": "array"
+},
+"nameServers": {
+"description": "Required. A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"DnsSettings": {
+"description": "Defines the DNS configuration of a `Registration`, including name servers, DNSSEC, and glue records.",
+"id": "DnsSettings",
+"properties": {
+"customDns": {
+"$ref": "CustomDns",
+"description": "An arbitrary DNS provider identified by its name servers."
+},
+"glueRecords": {
+"description": "The list of glue records for this `Registration`. Commonly empty.",
+"items": {
+"$ref": "GlueRecord"
+},
+"type": "array"
+},
+"googleDomainsDns": {
+"$ref": "GoogleDomainsDns",
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). The free DNS zone provided by [Google Domains](https://domains.google/)."
+},
+"googleDomainsRedirectsDataAvailable": {
+"description": "Output only. Indicates if this `Registration` has configured one of the following deprecated Google Domains DNS features: * Domain forwarding (HTTP `301` and `302` response status codes), * Email forwarding. See https://cloud.google.com/domains/docs/deprecations/feature-deprecations for more details. If any of these features is enabled call the `RetrieveGoogleDomainsForwardingConfig` method to get details about the feature's configuration. A forwarding configuration might not work correctly if required DNS records are not present in the domain's authoritative DNS Zone.",
+"readOnly": true,
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Domain": {
+"description": "A domain that the calling user manages in Google Domains.",
+"id": "Domain",
+"properties": {
+"domainName": {
+"description": "The domain name. Unicode domain names are expressed in Punycode format.",
+"type": "string"
+},
+"resourceState": {
+"description": "The state of this domain as a `Registration` resource.",
+"enum": [
+"RESOURCE_STATE_UNSPECIFIED",
+"IMPORTABLE",
+"UNSUPPORTED",
+"SUSPENDED",
+"EXPIRED",
+"DELETED"
+],
+"enumDescriptions": [
+"The assessment is undefined.",
+"A `Registration` resource can be created for this domain by calling `ImportDomain`.",
+"A `Registration` resource cannot be created for this domain because it is not supported by Cloud Domains; for example, the top-level domain is not supported or the registry charges non-standard pricing for yearly renewals.",
+"A `Registration` resource cannot be created for this domain because it is suspended and needs to be resolved with Google Domains.",
+"A `Registration` resource cannot be created for this domain because it is expired and needs to be renewed with Google Domains.",
+"A `Registration` resource cannot be created for this domain because it is deleted, but it may be possible to restore it with Google Domains."
+],
+"type": "string"
+},
+"yearlyPrice": {
+"$ref": "Money",
+"description": "Price to renew the domain for one year. Only set when `resource_state` is `IMPORTABLE`."
+}
+},
+"type": "object"
+},
+"DomainForwarding": {
+"description": "Domain forwarding configuration.",
+"id": "DomainForwarding",
+"properties": {
+"pathForwarding": {
+"description": "If true, forwards the path after the domain name to the same path at the new address.",
+"type": "boolean"
+},
+"pemCertificate": {
+"description": "The PEM-encoded certificate chain.",
+"type": "string"
+},
+"redirectType": {
+"description": "The redirect type.",
+"enum": [
+"REDIRECT_TYPE_UNSPECIFIED",
+"TEMPORARY",
+"PERMANENT"
+],
+"enumDescriptions": [
+"Redirect Type is unspecified.",
+"301 redirect. Allows to propagate changes to the forwarding address quickly.",
+"302 redirect. Allows browsers to cache the forwarding address. This may help the address resolve more quickly. Changes may take longer to propagate"
+],
+"type": "string"
+},
+"sslEnabled": {
+"description": "If true, the forwarding works also over HTTPS.",
+"type": "boolean"
+},
+"subdomain": {
+"description": "The subdomain of the registered domain that is being forwarded. E.g. `www.example.com`, `example.com` (i.e. the registered domain itself) or `*.example.com` (i.e. all subdomains).",
+"type": "string"
+},
+"targetUri": {
+"description": "The target of the domain forwarding, i.e. the path to redirect the `subdomain` to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DsRecord": {
+"description": "Defines a Delegation Signer (DS) record, which is needed to enable DNSSEC for a domain. It contains a digest (hash) of a DNSKEY record that must be present in the domain's DNS zone.",
+"id": "DsRecord",
+"properties": {
+"algorithm": {
+"description": "The algorithm used to generate the referenced DNSKEY.",
+"enum": [
+"ALGORITHM_UNSPECIFIED",
+"RSAMD5",
+"DH",
+"DSA",
+"ECC",
+"RSASHA1",
+"DSANSEC3SHA1",
+"RSASHA1NSEC3SHA1",
+"RSASHA256",
+"RSASHA512",
+"ECCGOST",
+"ECDSAP256SHA256",
+"ECDSAP384SHA384",
+"ED25519",
+"ED448",
+"INDIRECT",
+"PRIVATEDNS",
+"PRIVATEOID"
+],
+"enumDescriptions": [
+"The algorithm is unspecified.",
+"RSA/MD5. Cannot be used for new deployments.",
+"Diffie-Hellman. Cannot be used for new deployments.",
+"DSA/SHA1. Not recommended for new deployments.",
+"ECC. Not recommended for new deployments.",
+"RSA/SHA-1. Not recommended for new deployments.",
+"DSA-NSEC3-SHA1. Not recommended for new deployments.",
+"RSA/SHA1-NSEC3-SHA1. Not recommended for new deployments.",
+"RSA/SHA-256.",
+"RSA/SHA-512.",
+"GOST R 34.10-2001.",
+"ECDSA Curve P-256 with SHA-256.",
+"ECDSA Curve P-384 with SHA-384.",
+"Ed25519.",
+"Ed448.",
+"Reserved for Indirect Keys. Cannot be used for new deployments.",
+"Private algorithm. Cannot be used for new deployments.",
+"Private algorithm OID. Cannot be used for new deployments."
+],
+"type": "string"
+},
+"digest": {
+"description": "The digest generated from the referenced DNSKEY.",
+"type": "string"
+},
+"digestType": {
+"description": "The hash function used to generate the digest of the referenced DNSKEY.",
+"enum": [
+"DIGEST_TYPE_UNSPECIFIED",
+"SHA1",
+"SHA256",
+"GOST3411",
+"SHA384"
+],
+"enumDescriptions": [
+"The DigestType is unspecified.",
+"SHA-1. Not recommended for new deployments.",
+"SHA-256.",
+"GOST R 34.11-94.",
+"SHA-384."
+],
+"type": "string"
+},
+"keyTag": {
+"description": "The key tag of the record. Must be set in range 0 -- 65535.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"EmailForwarding": {
+"description": "Email forwarding configuration.",
+"id": "EmailForwarding",
+"properties": {
+"alias": {
+"description": "An alias recipient email that forwards emails to the `target_email_address`. For example, `admin@example.com` or `*@example.com` (wildcard alias forwards all the emails under the registered domain).",
+"type": "string"
+},
+"targetEmailAddress": {
+"description": "Target email that receives emails sent to the `alias`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExportRegistrationRequest": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). Request for the `ExportRegistration` method.",
+"id": "ExportRegistrationRequest",
+"properties": {},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GeoPolicy": {
+"description": "Configures a `RRSetRoutingPolicy` that routes based on the geo location of the querying user.",
+"id": "GeoPolicy",
+"properties": {
+"enableFencing": {
+"description": "Without fencing, if health check fails for all configured items in the current geo bucket, we failover to the next nearest geo bucket. With fencing, if health checking is enabled, as long as some targets in the current geo bucket are healthy, we return only the healthy targets. However, if all targets are unhealthy, we don't failover to the next nearest bucket; instead, we return all the items in the current bucket even when all targets are unhealthy.",
+"type": "boolean"
+},
+"item": {
+"description": "The primary geo routing configuration. If there are multiple items with the same location, an error is returned instead.",
+"items": {
+"$ref": "GeoPolicyItem"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GeoPolicyItem": {
+"description": "ResourceRecordSet data for one geo location.",
+"id": "GeoPolicyItem",
+"properties": {
+"healthCheckedTargets": {
+"$ref": "HealthCheckTargets",
+"description": "For A and AAAA types only. Endpoints to return in the query result only if they are healthy. These can be specified along with `rrdata` within this item."
+},
+"location": {
+"description": "The geo-location granularity is a GCP region. This location string should correspond to a GCP region. e.g. \"us-east1\", \"southamerica-east1\", \"asia-east1\", etc.",
+"type": "string"
+},
+"rrdata": {
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"signatureRrdata": {
+"description": "DNSSEC generated signatures for all the `rrdata` within this item. If health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GlueRecord": {
+"description": "Defines a host on your domain that is a DNS name server for your domain and/or other domains. Glue records are a way of making the IP address of a name server known, even when it serves DNS queries for its parent domain. For example, when `ns.example.com` is a name server for `example.com`, the host `ns.example.com` must have a glue record to break the circular DNS reference.",
+"id": "GlueRecord",
+"properties": {
+"hostName": {
+"description": "Required. Domain name of the host in Punycode format.",
+"type": "string"
+},
+"ipv4Addresses": {
+"description": "List of IPv4 addresses corresponding to this host in the standard decimal format (e.g. `198.51.100.1`). At least one of `ipv4_address` and `ipv6_address` must be set.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"ipv6Addresses": {
+"description": "List of IPv6 addresses corresponding to this host in the standard hexadecimal format (e.g. `2001:db8::`). At least one of `ipv4_address` and `ipv6_address` must be set.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleDomainsDns": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). Configuration for using the free DNS zone provided by Google Domains as a `Registration`'s `dns_provider`. You cannot configure the DNS zone itself using the API. To configure the DNS zone, go to [Google Domains](https://domains.google/).",
+"id": "GoogleDomainsDns",
+"properties": {
+"dsRecords": {
+"description": "Output only. The list of DS records published for this domain. The list is automatically populated when `ds_state` is `DS_RECORDS_PUBLISHED`, otherwise it remains empty.",
+"items": {
+"$ref": "DsRecord"
+},
+"readOnly": true,
+"type": "array"
+},
+"dsState": {
+"description": "Required. The state of DS records for this domain. Used to enable or disable automatic DNSSEC.",
+"enum": [
+"DS_STATE_UNSPECIFIED",
+"DS_RECORDS_UNPUBLISHED",
+"DS_RECORDS_PUBLISHED"
+],
+"enumDescriptions": [
+"DS state is unspecified.",
+"DNSSEC is disabled for this domain. No DS records for this domain are published in the parent DNS zone.",
+"DNSSEC is enabled for this domain. Appropriate DS records for this domain are published in the parent DNS zone. This option is valid only if the DNS zone referenced in the `Registration`'s `dns_provider` field is already DNSSEC-signed."
+],
+"type": "string"
+},
+"nameServers": {
+"description": "Output only. A list of name servers that store the DNS zone for this domain. Each name server is a domain name, with Unicode domain names expressed in Punycode format. This field is automatically populated with the name servers assigned to the Google Domains DNS zone.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"HealthCheckTargets": {
+"description": "HealthCheckTargets describes endpoints to health-check when responding to Routing Policy queries. Only the healthy endpoints will be included in the response.",
+"id": "HealthCheckTargets",
+"properties": {
+"externalEndpoints": {
+"description": "The Internet IP addresses to be health checked. The format matches the format of ResourceRecordSet.rrdata as defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1)",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"internalLoadBalancer": {
+"description": "Configuration for internal load balancers to be health checked.",
+"items": {
+"$ref": "LoadBalancerTarget"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ImportDomainRequest": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). Request for the `ImportDomain` method.",
+"id": "ImportDomainRequest",
+"properties": {
+"domainName": {
+"description": "Required. The domain name. Unicode domain names must be expressed in Punycode format.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Set of labels associated with the `Registration`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"InitiatePushTransferRequest": {
+"description": "Request for the `InitiatePushTransfer` method.",
+"id": "InitiatePushTransferRequest",
+"properties": {
+"tag": {
+"description": "Required. The Tag of the new registrar. Can be found at [List of registrars](https://nominet.uk/registrar-list/).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListRegistrationsResponse": {
+"description": "Response for the `ListRegistrations` method.",
+"id": "ListRegistrationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "When present, there are more results to retrieve. Set `page_token` to this value on a subsequent call to get the next page of results.",
+"type": "string"
+},
+"registrations": {
+"description": "A list of `Registration`s.",
+"items": {
+"$ref": "Registration"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"LoadBalancerTarget": {
+"description": "The configuration for an individual load balancer to health check.",
+"id": "LoadBalancerTarget",
+"properties": {
+"ipAddress": {
+"description": "The frontend IP address of the load balancer to health check.",
+"type": "string"
+},
+"ipProtocol": {
+"description": "The protocol of the load balancer to health check.",
+"enum": [
+"UNDEFINED",
+"TCP",
+"UDP"
+],
+"enumDescriptions": [
+"",
+"Indicates the load balancer is accessible via TCP.",
+"Indicates the load balancer is accessible via UDP."
+],
+"type": "string"
+},
+"loadBalancerType": {
+"description": "The type of load balancer specified by this target. This value must match the configuration of the load balancer located at the LoadBalancerTarget's IP address, port, and region. Use the following: - *regionalL4ilb*: for a regional internal passthrough Network Load Balancer. - *regionalL7ilb*: for a regional internal Application Load Balancer. - *globalL7ilb*: for a global internal Application Load Balancer. ",
+"enum": [
+"NONE",
+"GLOBAL_L7ILB",
+"REGIONAL_L4ILB",
+"REGIONAL_L7ILB"
+],
+"enumDescriptions": [
+"",
+"Indicates the load balancer is a Cross-Region Application Load Balancer.",
+"Indicates the load balancer is a Regional Network Passthrough Load Balancer.",
+"Indicates the load balancer is a Regional Application Load Balancer."
+],
+"type": "string"
+},
+"networkUrl": {
+"description": "The fully qualified URL of the network that the load balancer is attached to. This should be formatted like `https://www.googleapis.com/compute/v1/projects/{project}/global/networks/{network}`.",
+"type": "string"
+},
+"port": {
+"description": "The configured port of the load balancer.",
+"type": "string"
+},
+"project": {
+"description": "The project ID in which the load balancer is located.",
+"type": "string"
+},
+"region": {
+"description": "The region in which the load balancer is located.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ManagementSettings": {
+"description": "Defines renewal, billing, and transfer settings for a `Registration`.",
+"id": "ManagementSettings",
+"properties": {
+"effectiveTransferLockState": {
+"description": "Output only. The actual transfer lock state for this `Registration`.",
+"enum": [
+"TRANSFER_LOCK_STATE_UNSPECIFIED",
+"UNLOCKED",
+"LOCKED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The domain is unlocked and can be transferred to another registrar.",
+"The domain is locked and cannot be transferred to another registrar."
+],
+"readOnly": true,
+"type": "string"
+},
+"preferredRenewalMethod": {
+"description": "Optional. The desired renewal method for this `Registration`. The actual `renewal_method` is automatically updated to reflect this choice. If unset or equal to `RENEWAL_METHOD_UNSPECIFIED`, the actual `renewalMethod` is treated as if it were set to `AUTOMATIC_RENEWAL`. You cannot use `RENEWAL_DISABLED` during resource creation, and you can update the renewal status only when the `Registration` resource has state `ACTIVE` or `SUSPENDED`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL`, the actual `renewal_method` can be set to `RENEWAL_DISABLED` in case of problems with the billing account or reported domain abuse. In such cases, check the `issues` field on the `Registration`. After the problem is resolved, the `renewal_method` is automatically updated to `preferred_renewal_method` in a few hours.",
+"enum": [
+"RENEWAL_METHOD_UNSPECIFIED",
+"AUTOMATIC_RENEWAL",
+"MANUAL_RENEWAL",
+"RENEWAL_DISABLED"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false
+],
+"enumDescriptions": [
+"The renewal method is undefined.",
+"The domain is automatically renewed each year.",
+"Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). This option was never used. Use `RENEWAL_DISABLED` instead.",
+"The domain won't be renewed and will expire at its expiration time."
+],
+"type": "string"
+},
+"renewalMethod": {
+"description": "Output only. The actual renewal method for this `Registration`. When `preferred_renewal_method` is set to `AUTOMATIC_RENEWAL`, the actual `renewal_method` can be equal to `RENEWAL_DISABLED`\u2014for example, when there are problems with the billing account or reported domain abuse. In such cases, check the `issues` field on the `Registration`. After the problem is resolved, the `renewal_method` is automatically updated to `preferred_renewal_method` in a few hours.",
+"enum": [
+"RENEWAL_METHOD_UNSPECIFIED",
+"AUTOMATIC_RENEWAL",
+"MANUAL_RENEWAL",
+"RENEWAL_DISABLED"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false
+],
+"enumDescriptions": [
+"The renewal method is undefined.",
+"The domain is automatically renewed each year.",
+"Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). This option was never used. Use `RENEWAL_DISABLED` instead.",
+"The domain won't be renewed and will expire at its expiration time."
+],
+"readOnly": true,
+"type": "string"
+},
+"transferLockState": {
+"description": "This is the desired transfer lock state for this `Registration`. A transfer lock controls whether the domain can be transferred to another registrar. The transfer lock state of the domain is returned in the `effective_transfer_lock_state` property. The transfer lock state values might be different for the following reasons: * `transfer_lock_state` was updated only a short time ago. * Domains with the `TRANSFER_LOCK_UNSUPPORTED_BY_REGISTRY` state are in the list of `domain_properties`. These domains are always in the `UNLOCKED` state.",
+"enum": [
+"TRANSFER_LOCK_STATE_UNSPECIFIED",
+"UNLOCKED",
+"LOCKED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The domain is unlocked and can be transferred to another registrar.",
+"The domain is locked and cannot be transferred to another registrar."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Money": {
+"description": "Represents an amount of money with its currency type.",
+"id": "Money",
+"properties": {
+"currencyCode": {
+"description": "The three-letter currency code defined in ISO 4217.",
+"type": "string"
+},
+"nanos": {
+"description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.",
+"format": "int32",
+"type": "integer"
+},
+"units": {
+"description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation. Output only.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "API version used to start the operation.",
+"type": "string"
+},
+"createTime": {
+"description": "The time the operation was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"endTime": {
+"description": "The time the operation finished running.",
+"format": "google-datetime",
+"type": "string"
+},
+"statusDetail": {
+"description": "Human-readable status of the operation, if any.",
+"type": "string"
+},
+"target": {
+"description": "Server-defined resource path for the target of the operation.",
+"type": "string"
+},
+"verb": {
+"description": "Name of the verb executed by the operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"PostalAddress": {
+"description": "Represents a postal address. For example for postal delivery or payments addresses. Given a postal address, a postal service can deliver items to a premise, P.O. Box or similar. It is not intended to model geographical locations (roads, towns, mountains). In typical usage an address would be created by user input or from importing existing data, depending on the type of process. Advice on address input / editing: - Use an internationalization-ready address widget such as https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, see: https://support.google.com/business/answer/6397478",
+"id": "PostalAddress",
+"properties": {
+"addressLines": {
+"description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (For example \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (For example Japan), address_language is used to make it explicit (For example \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"administrativeArea": {
+"description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (For example \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. For example in Switzerland this should be left unpopulated.",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\".",
+"type": "string"
+},
+"locality": {
+"description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.",
+"type": "string"
+},
+"organization": {
+"description": "Optional. The name of the organization at the address.",
+"type": "string"
+},
+"postalCode": {
+"description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (For example state/zip validation in the U.S.A.).",
+"type": "string"
+},
+"recipients": {
+"description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"regionCode": {
+"description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.",
+"type": "string"
+},
+"revision": {
+"description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.",
+"format": "int32",
+"type": "integer"
+},
+"sortingCode": {
+"description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (For example \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (For example C\u00f4te d'Ivoire).",
+"type": "string"
+},
+"sublocality": {
+"description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PrimaryBackupPolicy": {
+"description": "Configures a RRSetRoutingPolicy such that all queries are responded with the primary_targets if they are healthy. And if all of them are unhealthy, then we fallback to a geo localized policy.",
+"id": "PrimaryBackupPolicy",
+"properties": {
+"backupGeoTargets": {
+"$ref": "GeoPolicy",
+"description": "Backup targets provide a regional failover policy for the otherwise global primary targets. If serving state is set to `BACKUP`, this policy essentially becomes a geo routing policy."
+},
+"primaryTargets": {
+"$ref": "HealthCheckTargets",
+"description": "Endpoints that are health checked before making the routing decision. Unhealthy endpoints are omitted from the results. If all endpoints are unhealthy, we serve a response based on the `backup_geo_targets`."
+},
+"trickleTraffic": {
+"description": "When serving state is `PRIMARY`, this field provides the option of sending a small percentage of the traffic to the backup targets.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"RRSetRoutingPolicy": {
+"description": "A RRSetRoutingPolicy represents ResourceRecordSet data that is returned dynamically with the response varying based on configured properties such as geolocation or by weighted random selection.",
+"id": "RRSetRoutingPolicy",
+"properties": {
+"geo": {
+"$ref": "GeoPolicy"
+},
+"geoPolicy": {
+"$ref": "GeoPolicy",
+"deprecated": true
+},
+"healthCheck": {
+"description": "The selfLink attribute of the HealthCheck resource to use for this RRSetRoutingPolicy. https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks",
+"type": "string"
+},
+"primaryBackup": {
+"$ref": "PrimaryBackupPolicy"
+},
+"wrr": {
+"$ref": "WrrPolicy"
+},
+"wrrPolicy": {
+"$ref": "WrrPolicy",
+"deprecated": true
+}
+},
+"type": "object"
+},
+"RegisterDomainRequest": {
+"description": "Request for the `RegisterDomain` method.",
+"id": "RegisterDomainRequest",
+"properties": {
+"contactNotices": {
+"description": "The list of contact notices that the caller acknowledges. The notices needed here depend on the values specified in `registration.contact_settings`.",
+"items": {
+"enum": [
+"CONTACT_NOTICE_UNSPECIFIED",
+"PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT"
+],
+"enumDescriptions": [
+"The notice is undefined.",
+"Required when setting the `privacy` field of `ContactSettings` to `PUBLIC_CONTACT_DATA`, which exposes contact data publicly."
+],
+"type": "string"
+},
+"type": "array"
+},
+"domainNotices": {
+"description": "The list of domain notices that you acknowledge. Call `RetrieveRegisterParameters` to see the notices that need acknowledgement.",
+"items": {
+"enum": [
+"DOMAIN_NOTICE_UNSPECIFIED",
+"HSTS_PRELOADED"
+],
+"enumDescriptions": [
+"The notice is undefined.",
+"Indicates that the domain is preloaded on the HTTP Strict Transport Security list in browsers. Serving a website on such domain requires an SSL certificate. For details, see [how to get an SSL certificate](https://support.google.com/domains/answer/7638036)."
+],
+"type": "string"
+},
+"type": "array"
+},
+"registration": {
+"$ref": "Registration",
+"description": "Required. The complete `Registration` resource to be created."
+},
+"validateOnly": {
+"description": "When true, only validation is performed, without actually registering the domain. Follows: https://cloud.google.com/apis/design/design_patterns#request_validation",
+"type": "boolean"
+},
+"yearlyPrice": {
+"$ref": "Money",
+"description": "Required. Yearly price to register or renew the domain. The value that should be put here can be obtained from RetrieveRegisterParameters or SearchDomains calls."
+}
+},
+"type": "object"
+},
+"RegisterParameters": {
+"description": "Parameters required to register a new domain.",
+"id": "RegisterParameters",
+"properties": {
+"availability": {
+"description": "Indicates whether the domain is available for registration. This value is accurate when obtained by calling `RetrieveRegisterParameters`, but is approximate when obtained by calling `SearchDomains`.",
+"enum": [
+"AVAILABILITY_UNSPECIFIED",
+"AVAILABLE",
+"UNAVAILABLE",
+"UNSUPPORTED",
+"UNKNOWN"
+],
+"enumDescriptions": [
+"The availability is unspecified.",
+"The domain is available for registration.",
+"The domain is not available for registration. Generally this means it is already registered to another party.",
+"The domain is not currently supported by Cloud Domains, but may be available elsewhere.",
+"Cloud Domains is unable to determine domain availability, generally due to system maintenance at the domain name registry."
+],
+"type": "string"
+},
+"domainName": {
+"description": "The domain name. Unicode domain names are expressed in Punycode format.",
+"type": "string"
+},
+"domainNotices": {
+"description": "Notices about special properties of the domain.",
+"items": {
+"enum": [
+"DOMAIN_NOTICE_UNSPECIFIED",
+"HSTS_PRELOADED"
+],
+"enumDescriptions": [
+"The notice is undefined.",
+"Indicates that the domain is preloaded on the HTTP Strict Transport Security list in browsers. Serving a website on such domain requires an SSL certificate. For details, see [how to get an SSL certificate](https://support.google.com/domains/answer/7638036)."
+],
+"type": "string"
+},
+"type": "array"
+},
+"supportedPrivacy": {
+"description": "Contact privacy options that the domain supports.",
+"items": {
+"enum": [
+"CONTACT_PRIVACY_UNSPECIFIED",
+"PUBLIC_CONTACT_DATA",
+"PRIVATE_CONTACT_DATA",
+"REDACTED_CONTACT_DATA"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false
+],
+"enumDescriptions": [
+"The contact privacy settings are undefined.",
+"All the data from `ContactSettings` is publicly available. When setting this option, you must also provide a `PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT` in the `contact_notices` field of the request.",
+"Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). None of the data from `ContactSettings` is publicly available. Instead, proxy contact data is published for your domain. Email sent to the proxy email address is forwarded to the registrant's email address. Cloud Domains provides this privacy proxy service at no additional cost.",
+"The organization name (if provided) and limited non-identifying data from `ContactSettings` is available to the public (e.g. country and state). The remaining data is marked as `REDACTED FOR PRIVACY` in the WHOIS database. The actual information redacted depends on the domain. For details, see [the registration privacy article](https://support.google.com/domains/answer/3251242)."
+],
+"type": "string"
+},
+"type": "array"
+},
+"yearlyPrice": {
+"$ref": "Money",
+"description": "Price to register or renew the domain for one year."
+}
+},
+"type": "object"
+},
+"Registration": {
+"description": "The `Registration` resource facilitates managing and configuring domain name registrations. There are several ways to create a new `Registration` resource: To create a new `Registration` resource, find a suitable domain name by calling the `SearchDomains` method with a query to see available domain name options. After choosing a name, call `RetrieveRegisterParameters` to ensure availability and obtain information like pricing, which is needed to build a call to `RegisterDomain`. Another way to create a new `Registration` is to transfer an existing domain from another registrar (Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations)). First, go to the current registrar to unlock the domain for transfer and retrieve the domain's transfer authorization code. Then call `RetrieveTransferParameters` to confirm that the domain is unlocked and to get values needed to build a call to `TransferDomain`. Finally, you can create a new `Registration` by importing an existing domain managed with [Google Domains](https://domains.google/) (Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations)). First, call `RetrieveImportableDomains` to list domains to which the calling user has sufficient access. Then call `ImportDomain` on any domain names you want to use with Cloud Domains.",
+"id": "Registration",
+"properties": {
+"contactSettings": {
+"$ref": "ContactSettings",
+"description": "Required. Settings for contact information linked to the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureContactSettings` method."
+},
+"createTime": {
+"description": "Output only. The creation timestamp of the `Registration` resource.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"dnsSettings": {
+"$ref": "DnsSettings",
+"description": "Settings controlling the DNS configuration of the `Registration`. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureDnsSettings` method."
+},
+"domainName": {
+"description": "Required. Immutable. The domain name. Unicode domain names must be expressed in Punycode format.",
+"type": "string"
+},
+"domainProperties": {
+"description": "Output only. Special properties of the domain.",
+"items": {
+"enum": [
+"DOMAIN_PROPERTY_UNSPECIFIED",
+"TRANSFER_LOCK_UNSUPPORTED_BY_REGISTRY",
+"REQUIRE_PUSH_TRANSFER"
+],
+"enumDescriptions": [
+"The property is undefined.",
+"The domain does not support transfer locks due to restrictions of the registry. Such domains are effectively always unlocked and any change made to `management_settings.transfer_lock_state` is ignored.",
+"The domain uses an alternative `Push Transfer` process to transfer the domain to another registrar. There are two important consequences: * Cloud Domains does not supply the authorization codes. * To initiate the process to transfer the domain to another registrar, you must provide a tag of the registrar you want to transfer to. You can do this by using the `InitiatePushTransfer` method. For more information, see [Transfer a registered domain to another registrar](https://cloud.google.com/domains/docs/transfer-domain-to-another-registrar)."
+],
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"expireTime": {
+"description": "Output only. The expiration timestamp of the `Registration`.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"issues": {
+"description": "Output only. The set of issues with the `Registration` that require attention.",
+"items": {
+"enum": [
+"ISSUE_UNSPECIFIED",
+"CONTACT_SUPPORT",
+"UNVERIFIED_EMAIL",
+"PROBLEM_WITH_BILLING",
+"DNS_NOT_ACTIVATED"
+],
+"enumDescriptions": [
+"The issue is undefined.",
+"Contact the Cloud Support team to resolve a problem with this domain.",
+"[ICANN](https://icann.org/) requires verification of the email address in the `Registration`'s `contact_settings.registrant_contact` field. To verify the email address, follow the instructions in the email the `registrant_contact` receives following registration. If you do not complete email verification within 15 days of registration, the domain is suspended. To resend the verification email, call ConfigureContactSettings and provide the current `registrant_contact.email`.",
+"The billing account is not in good standing. The domain is not automatically renewed at its expiration time unless you resolve problems with your billing account.",
+"The registry failed to validate your DNS configuration and activate your domain. The failure might happen for the following reasons: * You recently registered the domain (wait up to 72 hours). * You provided invalid name servers or name servers that correspond to a newly created DNS zone. Verify your DNS configuration. If the configuration is incorrect, you must fix it. If the configuration is correct, either wait or call the ConfigureDnsSettings method to retry the registry validation."
+],
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Set of labels associated with the `Registration`.",
+"type": "object"
+},
+"managementSettings": {
+"$ref": "ManagementSettings",
+"description": "Settings for management of the `Registration`, including renewal, billing, and transfer. You cannot update these with the `UpdateRegistration` method. To update these settings, use the `ConfigureManagementSettings` method."
+},
+"name": {
+"description": "Output only. Name of the `Registration` resource, in the format `projects/*/locations/*/registrations/`.",
+"readOnly": true,
+"type": "string"
+},
+"pendingContactSettings": {
+"$ref": "ContactSettings",
+"description": "Output only. Pending contact settings for the `Registration`. Updates to the `contact_settings` field that change its `registrant_contact` or `privacy` fields require email confirmation by the `registrant_contact` before taking effect. This field is set only if there are pending updates to the `contact_settings` that have not been confirmed. To confirm the changes, the `registrant_contact` must follow the instructions in the email they receive.",
+"readOnly": true
+},
+"registerFailureReason": {
+"description": "Output only. The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state.",
+"enum": [
+"REGISTER_FAILURE_REASON_UNSPECIFIED",
+"REGISTER_FAILURE_REASON_UNKNOWN",
+"DOMAIN_NOT_AVAILABLE",
+"INVALID_CONTACTS"
+],
+"enumDescriptions": [
+"Register failure unspecified.",
+"Registration failed for an unknown reason.",
+"The domain is not available for registration.",
+"The provided contact information was rejected."
+],
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of the `Registration`",
+"enum": [
+"STATE_UNSPECIFIED",
+"REGISTRATION_PENDING",
+"REGISTRATION_FAILED",
+"TRANSFER_PENDING",
+"TRANSFER_FAILED",
+"IMPORT_PENDING",
+"ACTIVE",
+"SUSPENDED",
+"EXPORTED",
+"EXPIRED"
+],
+"enumDeprecated": [
+false,
+false,
+false,
+true,
+true,
+true,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"The state is undefined.",
+"The domain is being registered.",
+"The domain registration failed. You can delete resources in this state to allow registration to be retried.",
+"The domain is being transferred from another registrar to Cloud Domains.",
+"The attempt to transfer the domain from another registrar to Cloud Domains failed. You can delete resources in this state and retry the transfer.",
+"The domain is being imported from Google Domains to Cloud Domains.",
+"The domain is registered and operational. The domain renews automatically as long as it remains in this state and the `RenewalMethod` is set to `AUTOMATIC_RENEWAL`.",
+"The domain is suspended and inoperative. For more details, see the `issues` field.",
+"The domain is no longer managed with Cloud Domains. It may have been transferred to another registrar or exported for management in [Google Domains](https://domains.google/). You can no longer update it with this API, and information shown about it may be stale. Domains in this state are not automatically renewed by Cloud Domains.",
+"The domain is expired."
+],
+"readOnly": true,
+"type": "string"
+},
+"supportedPrivacy": {
+"description": "Output only. Set of options for the `contact_settings.privacy` field that this `Registration` supports.",
+"items": {
+"enum": [
+"CONTACT_PRIVACY_UNSPECIFIED",
+"PUBLIC_CONTACT_DATA",
+"PRIVATE_CONTACT_DATA",
+"REDACTED_CONTACT_DATA"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false
+],
+"enumDescriptions": [
+"The contact privacy settings are undefined.",
+"All the data from `ContactSettings` is publicly available. When setting this option, you must also provide a `PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT` in the `contact_notices` field of the request.",
+"Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). None of the data from `ContactSettings` is publicly available. Instead, proxy contact data is published for your domain. Email sent to the proxy email address is forwarded to the registrant's email address. Cloud Domains provides this privacy proxy service at no additional cost.",
+"The organization name (if provided) and limited non-identifying data from `ContactSettings` is available to the public (e.g. country and state). The remaining data is marked as `REDACTED FOR PRIVACY` in the WHOIS database. The actual information redacted depends on the domain. For details, see [the registration privacy article](https://support.google.com/domains/answer/3251242)."
+],
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"transferFailureReason": {
+"deprecated": true,
+"description": "Output only. Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). The reason the domain transfer failed. Only set for domains in TRANSFER_FAILED state.",
+"enum": [
+"TRANSFER_FAILURE_REASON_UNSPECIFIED",
+"TRANSFER_FAILURE_REASON_UNKNOWN",
+"EMAIL_CONFIRMATION_FAILURE",
+"DOMAIN_NOT_REGISTERED",
+"DOMAIN_HAS_TRANSFER_LOCK",
+"INVALID_AUTHORIZATION_CODE",
+"TRANSFER_CANCELLED",
+"TRANSFER_REJECTED",
+"INVALID_REGISTRANT_EMAIL_ADDRESS",
+"DOMAIN_NOT_ELIGIBLE_FOR_TRANSFER",
+"TRANSFER_ALREADY_PENDING"
+],
+"enumDescriptions": [
+"Transfer failure unspecified.",
+"Transfer failed for an unknown reason.",
+"An email confirmation sent to the user was rejected or expired.",
+"The domain is available for registration.",
+"The domain has a transfer lock with its current registrar which must be removed prior to transfer.",
+"The authorization code entered is not valid.",
+"The transfer was cancelled by the domain owner, current registrar, or TLD registry.",
+"The transfer was rejected by the current registrar. Contact the current registrar for more information.",
+"The registrant email address cannot be parsed from the domain's current public contact data.",
+"The domain is not eligible for transfer due requirements imposed by the current registrar or TLD registry.",
+"Another transfer is already pending for this domain. The existing transfer attempt must expire or be cancelled in order to proceed."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"RenewDomainRequest": {
+"description": "Request for the `RenewDomain` method.",
+"id": "RenewDomainRequest",
+"properties": {
+"validateOnly": {
+"description": "Optional. When true, only validation is performed, without actually renewing the domain. For more information, see [Request validation](https://cloud.google.com/apis/design/design_patterns#request_validation)",
+"type": "boolean"
+},
+"yearlyPrice": {
+"$ref": "Money",
+"description": "Required. Acknowledgement of the price to renew the domain for one year. To get the price, see [Cloud Domains pricing](https://cloud.google.com/domains/pricing). If not provided, the expected price is returned in the error message."
+}
+},
+"type": "object"
+},
+"ResetAuthorizationCodeRequest": {
+"description": "Request for the `ResetAuthorizationCode` method.",
+"id": "ResetAuthorizationCodeRequest",
+"properties": {},
+"type": "object"
+},
+"ResourceRecordSet": {
+"description": "A unit of data that is returned by the DNS servers.",
+"id": "ResourceRecordSet",
+"properties": {
+"name": {
+"description": "For example, www.example.com.",
+"type": "string"
+},
+"routingPolicy": {
+"$ref": "RRSetRoutingPolicy",
+"description": "Configures dynamic query responses based on either the geo location of the querying user or a weighted round robin based routing policy. A valid `ResourceRecordSet` contains only `rrdata` (for static resolution) or a `routing_policy` (for dynamic resolution)."
+},
+"rrdata": {
+"description": "As defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1) -- see examples.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"signatureRrdata": {
+"description": "As defined in RFC 4034 (section 3.2).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"ttl": {
+"description": "Number of seconds that this `ResourceRecordSet` can be cached by resolvers.",
+"format": "int32",
+"type": "integer"
+},
+"type": {
+"description": "The identifier of a supported record type. See the list of Supported DNS record types.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RetrieveGoogleDomainsDnsRecordsResponse": {
+"description": "Response for the `RetrieveGoogleDomainsDnsRecords` method.",
+"id": "RetrieveGoogleDomainsDnsRecordsResponse",
+"properties": {
+"nextPageToken": {
+"description": "When present, there are more results to retrieve. Set `page_token` to this value on a subsequent call to get the next page of results.",
+"type": "string"
+},
+"rrset": {
+"description": "The resource record set resources (DNS Zone records).",
+"items": {
+"$ref": "ResourceRecordSet"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"RetrieveGoogleDomainsForwardingConfigResponse": {
+"description": "Response for the `RetrieveGoogleDomainsForwardingConfig` method.",
+"id": "RetrieveGoogleDomainsForwardingConfigResponse",
+"properties": {
+"domainForwardings": {
+"description": "The list of domain forwarding configurations. A forwarding configuration might not work correctly if the required DNS records are not present in the domain's authoritative DNS zone.",
+"items": {
+"$ref": "DomainForwarding"
+},
+"type": "array"
+},
+"emailForwardings": {
+"description": "The list of email forwarding configurations. A forwarding configuration might not work correctly if the required DNS records are not present in the domain's authoritative DNS zone.",
+"items": {
+"$ref": "EmailForwarding"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"RetrieveImportableDomainsResponse": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). Response for the `RetrieveImportableDomains` method.",
+"id": "RetrieveImportableDomainsResponse",
+"properties": {
+"domains": {
+"description": "A list of domains that the calling user manages in Google Domains.",
+"items": {
+"$ref": "Domain"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "When present, there are more results to retrieve. Set `page_token` to this value on a subsequent call to get the next page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RetrieveRegisterParametersResponse": {
+"description": "Response for the `RetrieveRegisterParameters` method.",
+"id": "RetrieveRegisterParametersResponse",
+"properties": {
+"registerParameters": {
+"$ref": "RegisterParameters",
+"description": "Parameters to use when calling the `RegisterDomain` method."
+}
+},
+"type": "object"
+},
+"RetrieveTransferParametersResponse": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). Response for the `RetrieveTransferParameters` method.",
+"id": "RetrieveTransferParametersResponse",
+"properties": {
+"transferParameters": {
+"$ref": "TransferParameters",
+"description": "Parameters to use when calling the `TransferDomain` method."
+}
+},
+"type": "object"
+},
+"SearchDomainsResponse": {
+"description": "Response for the `SearchDomains` method.",
+"id": "SearchDomainsResponse",
+"properties": {
+"registerParameters": {
+"description": "Results of the domain name search.",
+"items": {
+"$ref": "RegisterParameters"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TransferDomainRequest": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). Request for the `TransferDomain` method.",
+"id": "TransferDomainRequest",
+"properties": {
+"authorizationCode": {
+"$ref": "AuthorizationCode",
+"description": "The domain's transfer authorization code. You can obtain this from the domain's current registrar."
+},
+"contactNotices": {
+"description": "The list of contact notices that you acknowledge. The notices needed here depend on the values specified in `registration.contact_settings`.",
+"items": {
+"enum": [
+"CONTACT_NOTICE_UNSPECIFIED",
+"PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT"
+],
+"enumDescriptions": [
+"The notice is undefined.",
+"Required when setting the `privacy` field of `ContactSettings` to `PUBLIC_CONTACT_DATA`, which exposes contact data publicly."
+],
+"type": "string"
+},
+"type": "array"
+},
+"registration": {
+"$ref": "Registration",
+"description": "Required. The complete `Registration` resource to be created. You can leave `registration.dns_settings` unset to import the domain's current DNS configuration from its current registrar. Use this option only if you are sure that the domain's current DNS service does not cease upon transfer, as is often the case for DNS services provided for free by the registrar."
+},
+"validateOnly": {
+"description": "Validate the request without actually transferring the domain.",
+"type": "boolean"
+},
+"yearlyPrice": {
+"$ref": "Money",
+"description": "Required. Acknowledgement of the price to transfer or renew the domain for one year. Call `RetrieveTransferParameters` to obtain the price, which you must acknowledge."
+}
+},
+"type": "object"
+},
+"TransferParameters": {
+"deprecated": true,
+"description": "Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). Parameters required to transfer a domain from another registrar.",
+"id": "TransferParameters",
+"properties": {
+"currentRegistrar": {
+"description": "The registrar that currently manages the domain.",
+"type": "string"
+},
+"currentRegistrarUri": {
+"description": "The URL of the registrar that currently manages the domain.",
+"type": "string"
+},
+"domainName": {
+"description": "The domain name. Unicode domain names are expressed in Punycode format.",
+"type": "string"
+},
+"nameServers": {
+"description": "The name servers that currently store the configuration of the domain.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"supportedPrivacy": {
+"description": "Contact privacy options that the domain supports.",
+"items": {
+"enum": [
+"CONTACT_PRIVACY_UNSPECIFIED",
+"PUBLIC_CONTACT_DATA",
+"PRIVATE_CONTACT_DATA",
+"REDACTED_CONTACT_DATA"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false
+],
+"enumDescriptions": [
+"The contact privacy settings are undefined.",
+"All the data from `ContactSettings` is publicly available. When setting this option, you must also provide a `PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT` in the `contact_notices` field of the request.",
+"Deprecated: For more information, see [Cloud Domains feature deprecation](https://cloud.google.com/domains/docs/deprecations/feature-deprecations). None of the data from `ContactSettings` is publicly available. Instead, proxy contact data is published for your domain. Email sent to the proxy email address is forwarded to the registrant's email address. Cloud Domains provides this privacy proxy service at no additional cost.",
+"The organization name (if provided) and limited non-identifying data from `ContactSettings` is available to the public (e.g. country and state). The remaining data is marked as `REDACTED FOR PRIVACY` in the WHOIS database. The actual information redacted depends on the domain. For details, see [the registration privacy article](https://support.google.com/domains/answer/3251242)."
+],
+"type": "string"
+},
+"type": "array"
+},
+"transferLockState": {
+"description": "Indicates whether the domain is protected by a transfer lock. For a transfer to succeed, this must show `UNLOCKED`. To unlock a domain, go to its current registrar.",
+"enum": [
+"TRANSFER_LOCK_STATE_UNSPECIFIED",
+"UNLOCKED",
+"LOCKED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The domain is unlocked and can be transferred to another registrar.",
+"The domain is locked and cannot be transferred to another registrar."
+],
+"type": "string"
+},
+"yearlyPrice": {
+"$ref": "Money",
+"description": "Price to transfer or renew the domain for one year."
+}
+},
+"type": "object"
+},
+"WrrPolicy": {
+"description": "Configures a RRSetRoutingPolicy that routes in a weighted round robin fashion.",
+"id": "WrrPolicy",
+"properties": {
+"item": {
+"items": {
+"$ref": "WrrPolicyItem"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"WrrPolicyItem": {
+"description": "A routing block which contains the routing information for one WRR item.",
+"id": "WrrPolicyItem",
+"properties": {
+"healthCheckedTargets": {
+"$ref": "HealthCheckTargets",
+"description": "Endpoints that are health checked before making the routing decision. The unhealthy endpoints are omitted from the result. If all endpoints within a bucket are unhealthy, we choose a different bucket (sampled with respect to its weight) for responding. If DNSSEC is enabled for this zone, only one of `rrdata` or `health_checked_targets` can be set."
+},
+"rrdata": {
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"signatureRrdata": {
+"description": "DNSSEC generated signatures for all the `rrdata` within this item. Note that if health checked targets are provided for DNSSEC enabled zones, there's a restriction of 1 IP address per item.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"weight": {
+"description": "The weight corresponding to this `WrrPolicyItem` object. When multiple `WrrPolicyItem` objects are configured, the probability of returning an `WrrPolicyItem` object's data is proportional to its weight relative to the sum of weights configured for all items. This weight must be non-negative.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Domains API",
+"version": "v1beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/drive.v3.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/drive.v3.json
new file mode 100644
index 0000000000000000000000000000000000000000..d7560f8b36b127f6278f1f67429f64a2a9b4979b
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/drive.v3.json
@@ -0,0 +1,5259 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/drive": {
+"description": "See, edit, create, and delete all of your Google Drive files"
+},
+"https://www.googleapis.com/auth/drive.appdata": {
+"description": "See, create, and delete its own configuration data in your Google Drive"
+},
+"https://www.googleapis.com/auth/drive.apps.readonly": {
+"description": "View your Google Drive apps"
+},
+"https://www.googleapis.com/auth/drive.file": {
+"description": "See, edit, create, and delete only the specific Google Drive files you use with this app"
+},
+"https://www.googleapis.com/auth/drive.meet.readonly": {
+"description": "See and download your Google Drive files that were created or edited by Google Meet."
+},
+"https://www.googleapis.com/auth/drive.metadata": {
+"description": "View and manage metadata of files in your Google Drive"
+},
+"https://www.googleapis.com/auth/drive.metadata.readonly": {
+"description": "See information about your Google Drive files"
+},
+"https://www.googleapis.com/auth/drive.photos.readonly": {
+"description": "View the photos, videos and albums in your Google Photos"
+},
+"https://www.googleapis.com/auth/drive.readonly": {
+"description": "See and download all your Google Drive files"
+},
+"https://www.googleapis.com/auth/drive.scripts": {
+"description": "Modify your Google Apps Script scripts' behavior"
+}
+}
+}
+},
+"basePath": "/drive/v3/",
+"baseUrl": "https://www.googleapis.com/drive/v3/",
+"batchPath": "batch/drive/v3",
+"description": "The Google Drive API allows clients to access resources from Google Drive.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/drive/",
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "drive:v3",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://www.mtls.googleapis.com/",
+"name": "drive",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"about": {
+"methods": {
+"get": {
+"description": "Gets information about the user, the user's Drive, and system capabilities. For more information, see [Return user info](https://developers.google.com/drive/api/guides/user-info). Required: The `fields` parameter must be set. To return the exact fields you need, see [Return specific fields](https://developers.google.com/drive/api/guides/fields-parameter).",
+"flatPath": "about",
+"httpMethod": "GET",
+"id": "drive.about.get",
+"parameterOrder": [],
+"parameters": {},
+"path": "about",
+"response": {
+"$ref": "About"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+}
+}
+},
+"accessproposals": {
+"methods": {
+"get": {
+"description": "Retrieves an AccessProposal by ID.",
+"flatPath": "files/{fileId}/accessproposals/{proposalId}",
+"httpMethod": "GET",
+"id": "drive.accessproposals.get",
+"parameterOrder": [
+"fileId",
+"proposalId"
+],
+"parameters": {
+"fileId": {
+"description": "Required. The id of the item the request is on.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"proposalId": {
+"description": "Required. The id of the access proposal to resolve.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/accessproposals/{proposalId}",
+"response": {
+"$ref": "AccessProposal"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"list": {
+"description": "List the AccessProposals on a file. Note: Only approvers are able to list AccessProposals on a file. If the user is not an approver, returns a 403.",
+"flatPath": "files/{fileId}/accessproposals",
+"httpMethod": "GET",
+"id": "drive.accessproposals.list",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "Required. The id of the item the request is on.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The number of results per page",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The continuation token on the list of access requests.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "files/{fileId}/accessproposals",
+"response": {
+"$ref": "ListAccessProposalsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"resolve": {
+"description": "Used to approve or deny an Access Proposal.",
+"flatPath": "files/{fileId}/accessproposals/{proposalId}:resolve",
+"httpMethod": "POST",
+"id": "drive.accessproposals.resolve",
+"parameterOrder": [
+"fileId",
+"proposalId"
+],
+"parameters": {
+"fileId": {
+"description": "Required. The id of the item the request is on.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"proposalId": {
+"description": "Required. The id of the access proposal to resolve.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/accessproposals/{proposalId}:resolve",
+"request": {
+"$ref": "ResolveAccessProposalRequest"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+}
+}
+},
+"apps": {
+"methods": {
+"get": {
+"description": "Gets a specific app. For more information, see [Return user info](https://developers.google.com/drive/api/guides/user-info).",
+"flatPath": "apps/{appId}",
+"httpMethod": "GET",
+"id": "drive.apps.get",
+"parameterOrder": [
+"appId"
+],
+"parameters": {
+"appId": {
+"description": "The ID of the app.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "apps/{appId}",
+"response": {
+"$ref": "App"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.apps.readonly",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"list": {
+"description": "Lists a user's installed apps. For more information, see [Return user info](https://developers.google.com/drive/api/guides/user-info).",
+"flatPath": "apps",
+"httpMethod": "GET",
+"id": "drive.apps.list",
+"parameterOrder": [],
+"parameters": {
+"appFilterExtensions": {
+"default": "",
+"description": "A comma-separated list of file extensions to limit returned results. All results within the given app query scope which can open any of the given file extensions are included in the response. If `appFilterMimeTypes` are provided as well, the result is a union of the two resulting app lists.",
+"location": "query",
+"type": "string"
+},
+"appFilterMimeTypes": {
+"default": "",
+"description": "A comma-separated list of file extensions to limit returned results. All results within the given app query scope which can open any of the given MIME types will be included in the response. If `appFilterExtensions` are provided as well, the result is a union of the two resulting app lists.",
+"location": "query",
+"type": "string"
+},
+"languageCode": {
+"description": "A language or locale code, as defined by BCP 47, with some extensions from Unicode's LDML format (http://www.unicode.org/reports/tr35/).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "apps",
+"response": {
+"$ref": "AppList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive.apps.readonly"
+]
+}
+}
+},
+"changes": {
+"methods": {
+"getStartPageToken": {
+"description": "Gets the starting pageToken for listing future changes. For more information, see [Retrieve changes](https://developers.google.com/drive/api/guides/manage-changes).",
+"flatPath": "changes/startPageToken",
+"httpMethod": "GET",
+"id": "drive.changes.getStartPageToken",
+"parameterOrder": [],
+"parameters": {
+"driveId": {
+"description": "The ID of the shared drive for which the starting pageToken for listing future changes from that shared drive will be returned.",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"teamDriveId": {
+"deprecated": true,
+"description": "Deprecated: Use `driveId` instead.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "changes/startPageToken",
+"response": {
+"$ref": "StartPageToken"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"list": {
+"description": "Lists the changes for a user or shared drive. For more information, see [Retrieve changes](https://developers.google.com/drive/api/guides/manage-changes).",
+"flatPath": "changes",
+"httpMethod": "GET",
+"id": "drive.changes.list",
+"parameterOrder": [
+"pageToken"
+],
+"parameters": {
+"driveId": {
+"description": "The shared drive from which changes will be returned. If specified the change IDs will be reflective of the shared drive; use the combined drive ID and change ID as an identifier.",
+"location": "query",
+"type": "string"
+},
+"includeCorpusRemovals": {
+"default": "false",
+"description": "Whether changes should include the file resource if the file is still accessible by the user at the time of the request, even when a file was removed from the list of changes and there will be no further change entries for this file.",
+"location": "query",
+"type": "boolean"
+},
+"includeItemsFromAllDrives": {
+"default": "false",
+"description": "Whether both My Drive and shared drive items should be included in results.",
+"location": "query",
+"type": "boolean"
+},
+"includeLabels": {
+"description": "A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.",
+"location": "query",
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"includeRemoved": {
+"default": "true",
+"description": "Whether to include changes indicating that items have been removed from the list of changes, for example by deletion or loss of access.",
+"location": "query",
+"type": "boolean"
+},
+"includeTeamDriveItems": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `includeItemsFromAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"pageSize": {
+"default": "100",
+"description": "The maximum number of changes to return per page.",
+"format": "int32",
+"location": "query",
+"maximum": "1000",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response or to the response from the getStartPageToken method.",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"restrictToMyDrive": {
+"default": "false",
+"description": "Whether to restrict the results to changes inside the My Drive hierarchy. This omits changes to files such as those in the Application Data folder or shared files which have not been added to My Drive.",
+"location": "query",
+"type": "boolean"
+},
+"spaces": {
+"default": "drive",
+"description": "A comma-separated list of spaces to query within the corpora. Supported values are 'drive' and 'appDataFolder'.",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"teamDriveId": {
+"deprecated": true,
+"description": "Deprecated: Use `driveId` instead.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "changes",
+"response": {
+"$ref": "ChangeList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+],
+"supportsSubscription": true
+},
+"watch": {
+"description": "Subscribes to changes for a user. For more information, see [Notifications for resource changes](https://developers.google.com/drive/api/guides/push).",
+"flatPath": "changes/watch",
+"httpMethod": "POST",
+"id": "drive.changes.watch",
+"parameterOrder": [
+"pageToken"
+],
+"parameters": {
+"driveId": {
+"description": "The shared drive from which changes will be returned. If specified the change IDs will be reflective of the shared drive; use the combined drive ID and change ID as an identifier.",
+"location": "query",
+"type": "string"
+},
+"includeCorpusRemovals": {
+"default": "false",
+"description": "Whether changes should include the file resource if the file is still accessible by the user at the time of the request, even when a file was removed from the list of changes and there will be no further change entries for this file.",
+"location": "query",
+"type": "boolean"
+},
+"includeItemsFromAllDrives": {
+"default": "false",
+"description": "Whether both My Drive and shared drive items should be included in results.",
+"location": "query",
+"type": "boolean"
+},
+"includeLabels": {
+"description": "A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.",
+"location": "query",
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"includeRemoved": {
+"default": "true",
+"description": "Whether to include changes indicating that items have been removed from the list of changes, for example by deletion or loss of access.",
+"location": "query",
+"type": "boolean"
+},
+"includeTeamDriveItems": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `includeItemsFromAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"pageSize": {
+"default": "100",
+"description": "The maximum number of changes to return per page.",
+"format": "int32",
+"location": "query",
+"maximum": "1000",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response or to the response from the getStartPageToken method.",
+"location": "query",
+"required": true,
+"type": "string"
+},
+"restrictToMyDrive": {
+"default": "false",
+"description": "Whether to restrict the results to changes inside the My Drive hierarchy. This omits changes to files such as those in the Application Data folder or shared files which have not been added to My Drive.",
+"location": "query",
+"type": "boolean"
+},
+"spaces": {
+"default": "drive",
+"description": "A comma-separated list of spaces to query within the corpora. Supported values are 'drive' and 'appDataFolder'.",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"teamDriveId": {
+"deprecated": true,
+"description": "Deprecated: Use `driveId` instead.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "changes/watch",
+"request": {
+"$ref": "Channel",
+"parameterName": "resource"
+},
+"response": {
+"$ref": "Channel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+],
+"supportsSubscription": true
+}
+}
+},
+"channels": {
+"methods": {
+"stop": {
+"description": "Stops watching resources through this channel. For more information, see [Notifications for resource changes](https://developers.google.com/drive/api/guides/push).",
+"flatPath": "channels/stop",
+"httpMethod": "POST",
+"id": "drive.channels.stop",
+"parameterOrder": [],
+"parameters": {},
+"path": "channels/stop",
+"request": {
+"$ref": "Channel",
+"parameterName": "resource"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+}
+}
+},
+"comments": {
+"methods": {
+"create": {
+"description": "Creates a comment on a file. For more information, see [Manage comments and replies](https://developers.google.com/drive/api/guides/manage-comments). Required: The `fields` parameter must be set. To return the exact fields you need, see [Return specific fields](https://developers.google.com/drive/api/guides/fields-parameter).",
+"flatPath": "files/{fileId}/comments",
+"httpMethod": "POST",
+"id": "drive.comments.create",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments",
+"request": {
+"$ref": "Comment"
+},
+"response": {
+"$ref": "Comment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"delete": {
+"description": "Deletes a comment. For more information, see [Manage comments and replies](https://developers.google.com/drive/api/guides/manage-comments). Required: The `fields` parameter must be set. To return the exact fields you need, see [Return specific fields](https://developers.google.com/drive/api/guides/fields-parameter).",
+"flatPath": "files/{fileId}/comments/{commentId}",
+"httpMethod": "DELETE",
+"id": "drive.comments.delete",
+"parameterOrder": [
+"fileId",
+"commentId"
+],
+"parameters": {
+"commentId": {
+"description": "The ID of the comment.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments/{commentId}",
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"get": {
+"description": "Gets a comment by ID. For more information, see [Manage comments and replies](https://developers.google.com/drive/api/guides/manage-comments). Required: The `fields` parameter must be set. To return the exact fields you need, see [Return specific fields](https://developers.google.com/drive/api/guides/fields-parameter).",
+"flatPath": "files/{fileId}/comments/{commentId}",
+"httpMethod": "GET",
+"id": "drive.comments.get",
+"parameterOrder": [
+"fileId",
+"commentId"
+],
+"parameters": {
+"commentId": {
+"description": "The ID of the comment.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"includeDeleted": {
+"default": "false",
+"description": "Whether to return deleted comments. Deleted comments will not include their original content.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}/comments/{commentId}",
+"response": {
+"$ref": "Comment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"list": {
+"description": "Lists a file's comments. For more information, see [Manage comments and replies](https://developers.google.com/drive/api/guides/manage-comments). Required: The `fields` parameter must be set. To return the exact fields you need, see [Return specific fields](https://developers.google.com/drive/api/guides/fields-parameter).",
+"flatPath": "files/{fileId}/comments",
+"httpMethod": "GET",
+"id": "drive.comments.list",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"includeDeleted": {
+"default": "false",
+"description": "Whether to include deleted comments. Deleted comments will not include their original content.",
+"location": "query",
+"type": "boolean"
+},
+"pageSize": {
+"default": "20",
+"description": "The maximum number of comments to return per page.",
+"format": "int32",
+"location": "query",
+"maximum": "100",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response.",
+"location": "query",
+"type": "string"
+},
+"startModifiedTime": {
+"description": "The minimum value of 'modifiedTime' for the result comments (RFC 3339 date-time).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments",
+"response": {
+"$ref": "CommentList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"update": {
+"description": "Updates a comment with patch semantics. For more information, see [Manage comments and replies](https://developers.google.com/drive/api/guides/manage-comments). Required: The `fields` parameter must be set. To return the exact fields you need, see [Return specific fields](https://developers.google.com/drive/api/guides/fields-parameter).",
+"flatPath": "files/{fileId}/comments/{commentId}",
+"httpMethod": "PATCH",
+"id": "drive.comments.update",
+"parameterOrder": [
+"fileId",
+"commentId"
+],
+"parameters": {
+"commentId": {
+"description": "The ID of the comment.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments/{commentId}",
+"request": {
+"$ref": "Comment"
+},
+"response": {
+"$ref": "Comment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+}
+}
+},
+"drives": {
+"methods": {
+"create": {
+"description": "Creates a shared drive.",
+"flatPath": "drives",
+"httpMethod": "POST",
+"id": "drive.drives.create",
+"parameterOrder": [
+"requestId"
+],
+"parameters": {
+"requestId": {
+"description": "Required. An ID, such as a random UUID, which uniquely identifies this user's request for idempotent creation of a shared drive. A repeated request by the same user and with the same request ID will avoid creating duplicates by attempting to create the same shared drive. If the shared drive already exists a 409 error will be returned.",
+"location": "query",
+"required": true,
+"type": "string"
+}
+},
+"path": "drives",
+"request": {
+"$ref": "Drive"
+},
+"response": {
+"$ref": "Drive"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+},
+"delete": {
+"description": "Permanently deletes a shared drive for which the user is an `organizer`. The shared drive cannot contain any untrashed items.",
+"flatPath": "drives/{driveId}",
+"httpMethod": "DELETE",
+"id": "drive.drives.delete",
+"parameterOrder": [
+"driveId"
+],
+"parameters": {
+"allowItemDeletion": {
+"default": "false",
+"description": "Whether any items inside the shared drive should also be deleted. This option is only supported when `useDomainAdminAccess` is also set to `true`.",
+"location": "query",
+"type": "boolean"
+},
+"driveId": {
+"description": "The ID of the shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if they are an administrator of the domain to which the shared drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "drives/{driveId}",
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+},
+"get": {
+"description": "Gets a shared drive's metadata by ID.",
+"flatPath": "drives/{driveId}",
+"httpMethod": "GET",
+"id": "drive.drives.get",
+"parameterOrder": [
+"driveId"
+],
+"parameters": {
+"driveId": {
+"description": "The ID of the shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if they are an administrator of the domain to which the shared drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "drives/{driveId}",
+"response": {
+"$ref": "Drive"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"hide": {
+"description": "Hides a shared drive from the default view.",
+"flatPath": "drives/{driveId}/hide",
+"httpMethod": "POST",
+"id": "drive.drives.hide",
+"parameterOrder": [
+"driveId"
+],
+"parameters": {
+"driveId": {
+"description": "The ID of the shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "drives/{driveId}/hide",
+"response": {
+"$ref": "Drive"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+},
+"list": {
+"description": " Lists the user's shared drives. This method accepts the `q` parameter, which is a search query combining one or more search terms. For more information, see the [Search for shared drives](/drive/api/guides/search-shareddrives) guide.",
+"flatPath": "drives",
+"httpMethod": "GET",
+"id": "drive.drives.list",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"default": "10",
+"description": "Maximum number of shared drives to return per page.",
+"format": "int32",
+"location": "query",
+"maximum": "100",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token for shared drives.",
+"location": "query",
+"type": "string"
+},
+"q": {
+"description": "Query string for searching shared drives.",
+"location": "query",
+"type": "string"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then all shared drives of the domain in which the requester is an administrator are returned.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "drives",
+"response": {
+"$ref": "DriveList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"unhide": {
+"description": "Restores a shared drive to the default view.",
+"flatPath": "drives/{driveId}/unhide",
+"httpMethod": "POST",
+"id": "drive.drives.unhide",
+"parameterOrder": [
+"driveId"
+],
+"parameters": {
+"driveId": {
+"description": "The ID of the shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "drives/{driveId}/unhide",
+"response": {
+"$ref": "Drive"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+},
+"update": {
+"description": "Updates the metadata for a shared drive.",
+"flatPath": "drives/{driveId}",
+"httpMethod": "PATCH",
+"id": "drive.drives.update",
+"parameterOrder": [
+"driveId"
+],
+"parameters": {
+"driveId": {
+"description": "The ID of the shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if they are an administrator of the domain to which the shared drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "drives/{driveId}",
+"request": {
+"$ref": "Drive"
+},
+"response": {
+"$ref": "Drive"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+}
+}
+},
+"files": {
+"methods": {
+"copy": {
+"description": "Creates a copy of a file and applies any requested updates with patch semantics.",
+"flatPath": "files/{fileId}/copy",
+"httpMethod": "POST",
+"id": "drive.files.copy",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"enforceSingleParent": {
+"default": "false",
+"description": "Deprecated. Copying files into multiple folders is no longer supported. Use shortcuts instead.",
+"location": "query",
+"type": "boolean"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"ignoreDefaultVisibility": {
+"default": "false",
+"description": "Whether to ignore the domain's default visibility settings for the created file. Domain administrators can choose to make all uploaded files visible to the domain by default; this parameter bypasses that behavior for the request. Permissions are still inherited from parent folders.",
+"location": "query",
+"type": "boolean"
+},
+"includeLabels": {
+"description": "A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.",
+"location": "query",
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"keepRevisionForever": {
+"default": "false",
+"description": "Whether to set the 'keepForever' field in the new head revision. This is only applicable to files with binary content in Google Drive. Only 200 revisions for the file can be kept forever. If the limit is reached, try deleting pinned revisions.",
+"location": "query",
+"type": "boolean"
+},
+"ocrLanguage": {
+"description": "A language hint for OCR processing during image import (ISO 639-1 code).",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}/copy",
+"request": {
+"$ref": "File"
+},
+"response": {
+"$ref": "File"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.photos.readonly"
+]
+},
+"create": {
+"description": " Creates a new file. This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:*`*/*` Note: Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded. For more information on uploading files, see [Upload file data](/drive/api/guides/manage-uploads). Apps creating shortcuts with `files.create` must specify the MIME type `application/vnd.google-apps.shortcut`. Apps should specify a file extension in the `name` property when inserting files with the API. For example, an operation to insert a JPEG file should specify something like `\"name\": \"cat.jpg\"` in the metadata. Subsequent `GET` requests include the read-only `fileExtension` property populated with the extension originally specified in the `title` property. When a Google Drive user requests to download a file, or when the file is downloaded through the sync client, Drive builds a full filename (with extension) based on the title. In cases where the extension is missing, Drive attempts to determine the extension based on the file's MIME type.",
+"flatPath": "files",
+"httpMethod": "POST",
+"id": "drive.files.create",
+"mediaUpload": {
+"accept": [
+"*/*"
+],
+"maxSize": "5497558138880",
+"protocols": {
+"resumable": {
+"multipart": true,
+"path": "/resumable/upload/drive/v3/files"
+},
+"simple": {
+"multipart": true,
+"path": "/upload/drive/v3/files"
+}
+}
+},
+"parameterOrder": [],
+"parameters": {
+"enforceSingleParent": {
+"default": "false",
+"description": "Deprecated. Creating files in multiple folders is no longer supported.",
+"location": "query",
+"type": "boolean"
+},
+"ignoreDefaultVisibility": {
+"default": "false",
+"description": "Whether to ignore the domain's default visibility settings for the created file. Domain administrators can choose to make all uploaded files visible to the domain by default; this parameter bypasses that behavior for the request. Permissions are still inherited from parent folders.",
+"location": "query",
+"type": "boolean"
+},
+"includeLabels": {
+"description": "A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.",
+"location": "query",
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"keepRevisionForever": {
+"default": "false",
+"description": "Whether to set the 'keepForever' field in the new head revision. This is only applicable to files with binary content in Google Drive. Only 200 revisions for the file can be kept forever. If the limit is reached, try deleting pinned revisions.",
+"location": "query",
+"type": "boolean"
+},
+"ocrLanguage": {
+"description": "A language hint for OCR processing during image import (ISO 639-1 code).",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"useContentAsIndexableText": {
+"default": "false",
+"description": "Whether to use the uploaded content as indexable text.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files",
+"request": {
+"$ref": "File"
+},
+"response": {
+"$ref": "File"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file"
+],
+"supportsMediaUpload": true
+},
+"delete": {
+"description": "Permanently deletes a file owned by the user without moving it to the trash. If the file belongs to a shared drive, the user must be an `organizer` on the parent folder. If the target is a folder, all descendants owned by the user are also deleted.",
+"flatPath": "files/{fileId}",
+"httpMethod": "DELETE",
+"id": "drive.files.delete",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"enforceSingleParent": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: If an item is not in a shared drive and its last parent is deleted but the item itself is not, the item will be placed under its owner's root.",
+"location": "query",
+"type": "boolean"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}",
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"download": {
+"description": "Downloads content of a file. Operations are valid for 24 hours from the time of creation.",
+"flatPath": "files/{fileId}/download",
+"httpMethod": "POST",
+"id": "drive.files.download",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "Required. The ID of the file to download.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"mimeType": {
+"description": "Optional. The MIME type the file should be downloaded as. This field can only be set when downloading Google Workspace documents. See [Export MIME types for Google Workspace documents](/drive/api/guides/ref-export-formats) for the list of supported MIME types. If not set, a Google Workspace document is downloaded with a default MIME type. The default MIME type might change in the future.",
+"location": "query",
+"type": "string"
+},
+"revisionId": {
+"description": "Optional. The revision ID of the file to download. This field can only be set when downloading blob files, Google Docs, and Google Sheets. Returns `INVALID_ARGUMENT` if downloading a specific revision on the file is unsupported.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "files/{fileId}/download",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"emptyTrash": {
+"description": "Permanently deletes all of the user's trashed files.",
+"flatPath": "files/trash",
+"httpMethod": "DELETE",
+"id": "drive.files.emptyTrash",
+"parameterOrder": [],
+"parameters": {
+"driveId": {
+"description": "If set, empties the trash of the provided shared drive.",
+"location": "query",
+"type": "string"
+},
+"enforceSingleParent": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: If an item is not in a shared drive and its last parent is deleted but the item itself is not, the item will be placed under its owner's root.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/trash",
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+},
+"export": {
+"description": "Exports a Google Workspace document to the requested MIME type and returns exported byte content. Note that the exported content is limited to 10MB.",
+"flatPath": "files/{fileId}/export",
+"httpMethod": "GET",
+"id": "drive.files.export",
+"parameterOrder": [
+"fileId",
+"mimeType"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"mimeType": {
+"description": "Required. The MIME type of the format requested for this export.",
+"location": "query",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/export",
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+],
+"supportsMediaDownload": true,
+"useMediaDownloadService": true
+},
+"generateIds": {
+"description": "Generates a set of file IDs which can be provided in create or copy requests.",
+"flatPath": "files/generateIds",
+"httpMethod": "GET",
+"id": "drive.files.generateIds",
+"parameterOrder": [],
+"parameters": {
+"count": {
+"default": "10",
+"description": "The number of IDs to return.",
+"format": "int32",
+"location": "query",
+"maximum": "1000",
+"minimum": "1",
+"type": "integer"
+},
+"space": {
+"default": "drive",
+"description": "The space in which the IDs can be used to create new files. Supported values are 'drive' and 'appDataFolder'. (Default: 'drive')",
+"location": "query",
+"type": "string"
+},
+"type": {
+"default": "files",
+"description": "The type of items which the IDs can be used for. Supported values are 'files' and 'shortcuts'. Note that 'shortcuts' are only supported in the `drive` 'space'. (Default: 'files')",
+"location": "query",
+"type": "string"
+}
+},
+"path": "files/generateIds",
+"response": {
+"$ref": "GeneratedIds"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"get": {
+"description": " Gets a file's metadata or content by ID. If you provide the URL parameter `alt=media`, then the response includes the file contents in the response body. Downloading content with `alt=media` only works if the file is stored in Drive. To download Google Docs, Sheets, and Slides use [`files.export`](/drive/api/reference/rest/v3/files/export) instead. For more information, see [Download & export files](/drive/api/guides/manage-downloads).",
+"flatPath": "files/{fileId}",
+"httpMethod": "GET",
+"id": "drive.files.get",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"acknowledgeAbuse": {
+"default": "false",
+"description": "Whether the user is acknowledging the risk of downloading known malware or other abusive files. This is only applicable when the `alt` parameter is set to `media` and the user is the owner of the file or an organizer of the shared drive in which the file resides.",
+"location": "query",
+"type": "boolean"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"includeLabels": {
+"description": "A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.",
+"location": "query",
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}",
+"response": {
+"$ref": "File"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+],
+"supportsMediaDownload": true,
+"supportsSubscription": true,
+"useMediaDownloadService": true
+},
+"list": {
+"description": " Lists the user's files. This method accepts the `q` parameter, which is a search query combining one or more search terms. For more information, see the [Search for files & folders](/drive/api/guides/search-files) guide. *Note:* This method returns *all* files by default, including trashed files. If you don't want trashed files to appear in the list, use the `trashed=false` query parameter to remove trashed files from the results.",
+"flatPath": "files",
+"httpMethod": "GET",
+"id": "drive.files.list",
+"parameterOrder": [],
+"parameters": {
+"corpora": {
+"description": "Bodies of items (files/documents) to which the query applies. Supported bodies are 'user', 'domain', 'drive', and 'allDrives'. Prefer 'user' or 'drive' to 'allDrives' for efficiency. By default, corpora is set to 'user'. However, this can change depending on the filter set through the 'q' parameter.",
+"location": "query",
+"type": "string"
+},
+"corpus": {
+"deprecated": true,
+"description": "Deprecated: The source of files to list. Use 'corpora' instead.",
+"enum": [
+"domain",
+"user"
+],
+"enumDescriptions": [
+"Files shared to the user's domain.",
+"Files owned by or shared to the user."
+],
+"location": "query",
+"type": "string"
+},
+"driveId": {
+"description": "ID of the shared drive to search.",
+"location": "query",
+"type": "string"
+},
+"includeItemsFromAllDrives": {
+"default": "false",
+"description": "Whether both My Drive and shared drive items should be included in results.",
+"location": "query",
+"type": "boolean"
+},
+"includeLabels": {
+"description": "A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.",
+"location": "query",
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"includeTeamDriveItems": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `includeItemsFromAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"orderBy": {
+"description": "A comma-separated list of sort keys. Valid keys are: * `createdTime`: When the file was created. * `folder`: The folder ID. This field is sorted using alphabetical ordering. * `modifiedByMeTime`: The last time the file was modified by the user. * `modifiedTime`: The last time the file was modified by anyone. * `name`: The name of the file. This field is sorted using alphabetical ordering, so 1, 12, 2, 22. * `name_natural`: The name of the file. This field is sorted using natural sort ordering, so 1, 2, 12, 22. * `quotaBytesUsed`: The number of storage quota bytes used by the file. * `recency`: The most recent timestamp from the file's date-time fields. * `sharedWithMeTime`: When the file was shared with the user, if applicable. * `starred`: Whether the user has starred the file. * `viewedByMeTime`: The last time the file was viewed by the user. Each key sorts ascending by default, but can be reversed with the 'desc' modifier. Example usage: `?orderBy=folder,modifiedTime desc,name`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"default": "100",
+"description": "The maximum number of files to return per page. Partial or empty result pages are possible even before the end of the files list has been reached.",
+"format": "int32",
+"location": "query",
+"maximum": "1000",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response.",
+"location": "query",
+"type": "string"
+},
+"q": {
+"description": "A query for filtering the file results. See the \"Search for files & folders\" guide for supported syntax.",
+"location": "query",
+"type": "string"
+},
+"spaces": {
+"default": "drive",
+"description": "A comma-separated list of spaces to query within the corpora. Supported values are 'drive' and 'appDataFolder'.",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"teamDriveId": {
+"deprecated": true,
+"description": "Deprecated: Use `driveId` instead.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "files",
+"response": {
+"$ref": "FileList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"listLabels": {
+"description": "Lists the labels on a file.",
+"flatPath": "files/{fileId}/listLabels",
+"httpMethod": "GET",
+"id": "drive.files.listLabels",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID for the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"maxResults": {
+"default": "100",
+"description": "The maximum number of labels to return per page. When not set, defaults to 100.",
+"format": "int32",
+"location": "query",
+"maximum": "100",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "files/{fileId}/listLabels",
+"response": {
+"$ref": "LabelList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"modifyLabels": {
+"description": "Modifies the set of labels applied to a file. Returns a list of the labels that were added or modified.",
+"flatPath": "files/{fileId}/modifyLabels",
+"httpMethod": "POST",
+"id": "drive.files.modifyLabels",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file to which the labels belong.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/modifyLabels",
+"request": {
+"$ref": "ModifyLabelsRequest"
+},
+"response": {
+"$ref": "ModifyLabelsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.metadata"
+]
+},
+"update": {
+"description": " Updates a file's metadata and/or content. When calling this method, only populate fields in the request that you want to modify. When updating fields, some fields might be changed automatically, such as `modifiedDate`. This method supports patch semantics. This method supports an */upload* URI and accepts uploaded media with the following characteristics: - *Maximum file size:* 5,120 GB - *Accepted Media MIME types:*`*/*` Note: Specify a valid MIME type, rather than the literal `*/*` value. The literal `*/*` is only used to indicate that any valid MIME type can be uploaded. For more information on uploading files, see [Upload file data](/drive/api/guides/manage-uploads).",
+"flatPath": "files/{fileId}",
+"httpMethod": "PATCH",
+"id": "drive.files.update",
+"mediaUpload": {
+"accept": [
+"*/*"
+],
+"maxSize": "5497558138880",
+"protocols": {
+"resumable": {
+"multipart": true,
+"path": "/resumable/upload/drive/v3/files/{fileId}"
+},
+"simple": {
+"multipart": true,
+"path": "/upload/drive/v3/files/{fileId}"
+}
+}
+},
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"addParents": {
+"description": "A comma-separated list of parent IDs to add.",
+"location": "query",
+"type": "string"
+},
+"enforceSingleParent": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Adding files to multiple folders is no longer supported. Use shortcuts instead.",
+"location": "query",
+"type": "boolean"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"includeLabels": {
+"description": "A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.",
+"location": "query",
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"keepRevisionForever": {
+"default": "false",
+"description": "Whether to set the 'keepForever' field in the new head revision. This is only applicable to files with binary content in Google Drive. Only 200 revisions for the file can be kept forever. If the limit is reached, try deleting pinned revisions.",
+"location": "query",
+"type": "boolean"
+},
+"ocrLanguage": {
+"description": "A language hint for OCR processing during image import (ISO 639-1 code).",
+"location": "query",
+"type": "string"
+},
+"removeParents": {
+"description": "A comma-separated list of parent IDs to remove.",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"useContentAsIndexableText": {
+"default": "false",
+"description": "Whether to use the uploaded content as indexable text.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}",
+"request": {
+"$ref": "File"
+},
+"response": {
+"$ref": "File"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.scripts"
+],
+"supportsMediaUpload": true
+},
+"watch": {
+"description": "Subscribes to changes to a file.",
+"flatPath": "files/{fileId}/watch",
+"httpMethod": "POST",
+"id": "drive.files.watch",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"acknowledgeAbuse": {
+"default": "false",
+"description": "Whether the user is acknowledging the risk of downloading known malware or other abusive files. This is only applicable when the `alt` parameter is set to `media` and the user is the owner of the file or an organizer of the shared drive in which the file resides.",
+"location": "query",
+"type": "boolean"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"includeLabels": {
+"description": "A comma-separated list of IDs of labels to include in the `labelInfo` part of the response.",
+"location": "query",
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}/watch",
+"request": {
+"$ref": "Channel",
+"parameterName": "resource"
+},
+"response": {
+"$ref": "Channel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+],
+"supportsSubscription": true
+}
+}
+},
+"operation": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "operation/{name}:cancel",
+"httpMethod": "POST",
+"id": "drive.operation.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "operation/{name}:cancel"
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "operation/{name}",
+"httpMethod": "DELETE",
+"id": "drive.operation.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "operation/{name}"
+}
+}
+},
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "operations/{name}",
+"httpMethod": "GET",
+"id": "drive.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "operations/{name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "operations",
+"httpMethod": "GET",
+"id": "drive.operations.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "operations",
+"response": {
+"$ref": "ListOperationsResponse"
+}
+}
+}
+},
+"permissions": {
+"methods": {
+"create": {
+"description": "Creates a permission for a file or shared drive. **Warning:** Concurrent permissions operations on the same file are not supported; only the last update is applied.",
+"flatPath": "files/{fileId}/permissions",
+"httpMethod": "POST",
+"id": "drive.permissions.create",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"emailMessage": {
+"description": "A plain text custom message to include in the notification email.",
+"location": "query",
+"type": "string"
+},
+"enforceSingleParent": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: See `moveToNewOwnersRoot` for details.",
+"location": "query",
+"type": "boolean"
+},
+"fileId": {
+"description": "The ID of the file or shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"moveToNewOwnersRoot": {
+"default": "false",
+"description": "This parameter will only take effect if the item is not in a shared drive and the request is attempting to transfer the ownership of the item. If set to `true`, the item will be moved to the new owner's My Drive root folder and all prior parents removed. If set to `false`, parents are not changed.",
+"location": "query",
+"type": "boolean"
+},
+"sendNotificationEmail": {
+"description": "Whether to send a notification email when sharing to users or groups. This defaults to true for users and groups, and is not allowed for other requests. It must not be disabled for ownership transfers.",
+"location": "query",
+"type": "boolean"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"transferOwnership": {
+"default": "false",
+"description": "Whether to transfer ownership to the specified user and downgrade the current owner to a writer. This parameter is required as an acknowledgement of the side effect.",
+"location": "query",
+"type": "boolean"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if the file ID parameter refers to a shared drive and the requester is an administrator of the domain to which the shared drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}/permissions",
+"request": {
+"$ref": "Permission"
+},
+"response": {
+"$ref": "Permission"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"delete": {
+"description": "Deletes a permission. **Warning:** Concurrent permissions operations on the same file are not supported; only the last update is applied.",
+"flatPath": "files/{fileId}/permissions/{permissionId}",
+"httpMethod": "DELETE",
+"id": "drive.permissions.delete",
+"parameterOrder": [
+"fileId",
+"permissionId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file or shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"permissionId": {
+"description": "The ID of the permission.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if the file ID parameter refers to a shared drive and the requester is an administrator of the domain to which the shared drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}/permissions/{permissionId}",
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"get": {
+"description": "Gets a permission by ID.",
+"flatPath": "files/{fileId}/permissions/{permissionId}",
+"httpMethod": "GET",
+"id": "drive.permissions.get",
+"parameterOrder": [
+"fileId",
+"permissionId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"permissionId": {
+"description": "The ID of the permission.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if the file ID parameter refers to a shared drive and the requester is an administrator of the domain to which the shared drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}/permissions/{permissionId}",
+"response": {
+"$ref": "Permission"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"list": {
+"description": "Lists a file's or shared drive's permissions.",
+"flatPath": "files/{fileId}/permissions",
+"httpMethod": "GET",
+"id": "drive.permissions.list",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file or shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"includePermissionsForView": {
+"description": "Specifies which additional view's permissions to include in the response. Only 'published' is supported.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of permissions to return per page. When not set for files in a shared drive, at most 100 results will be returned. When not set for files that are not in a shared drive, the entire list will be returned.",
+"format": "int32",
+"location": "query",
+"maximum": "100",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response.",
+"location": "query",
+"type": "string"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if the file ID parameter refers to a shared drive and the requester is an administrator of the domain to which the shared drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}/permissions",
+"response": {
+"$ref": "PermissionList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"update": {
+"description": "Updates a permission with patch semantics. **Warning:** Concurrent permissions operations on the same file are not supported; only the last update is applied.",
+"flatPath": "files/{fileId}/permissions/{permissionId}",
+"httpMethod": "PATCH",
+"id": "drive.permissions.update",
+"parameterOrder": [
+"fileId",
+"permissionId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file or shared drive.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"permissionId": {
+"description": "The ID of the permission.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"removeExpiration": {
+"default": "false",
+"description": "Whether to remove the expiration date.",
+"location": "query",
+"type": "boolean"
+},
+"supportsAllDrives": {
+"default": "false",
+"description": "Whether the requesting application supports both My Drives and shared drives.",
+"location": "query",
+"type": "boolean"
+},
+"supportsTeamDrives": {
+"default": "false",
+"deprecated": true,
+"description": "Deprecated: Use `supportsAllDrives` instead.",
+"location": "query",
+"type": "boolean"
+},
+"transferOwnership": {
+"default": "false",
+"description": "Whether to transfer ownership to the specified user and downgrade the current owner to a writer. This parameter is required as an acknowledgement of the side effect.",
+"location": "query",
+"type": "boolean"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if the file ID parameter refers to a shared drive and the requester is an administrator of the domain to which the shared drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "files/{fileId}/permissions/{permissionId}",
+"request": {
+"$ref": "Permission"
+},
+"response": {
+"$ref": "Permission"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+}
+}
+},
+"replies": {
+"methods": {
+"create": {
+"description": "Creates a reply to a comment.",
+"flatPath": "files/{fileId}/comments/{commentId}/replies",
+"httpMethod": "POST",
+"id": "drive.replies.create",
+"parameterOrder": [
+"fileId",
+"commentId"
+],
+"parameters": {
+"commentId": {
+"description": "The ID of the comment.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments/{commentId}/replies",
+"request": {
+"$ref": "Reply"
+},
+"response": {
+"$ref": "Reply"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"delete": {
+"description": "Deletes a reply.",
+"flatPath": "files/{fileId}/comments/{commentId}/replies/{replyId}",
+"httpMethod": "DELETE",
+"id": "drive.replies.delete",
+"parameterOrder": [
+"fileId",
+"commentId",
+"replyId"
+],
+"parameters": {
+"commentId": {
+"description": "The ID of the comment.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"replyId": {
+"description": "The ID of the reply.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments/{commentId}/replies/{replyId}",
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"get": {
+"description": "Gets a reply by ID.",
+"flatPath": "files/{fileId}/comments/{commentId}/replies/{replyId}",
+"httpMethod": "GET",
+"id": "drive.replies.get",
+"parameterOrder": [
+"fileId",
+"commentId",
+"replyId"
+],
+"parameters": {
+"commentId": {
+"description": "The ID of the comment.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"includeDeleted": {
+"default": "false",
+"description": "Whether to return deleted replies. Deleted replies will not include their original content.",
+"location": "query",
+"type": "boolean"
+},
+"replyId": {
+"description": "The ID of the reply.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments/{commentId}/replies/{replyId}",
+"response": {
+"$ref": "Reply"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"list": {
+"description": "Lists a comment's replies.",
+"flatPath": "files/{fileId}/comments/{commentId}/replies",
+"httpMethod": "GET",
+"id": "drive.replies.list",
+"parameterOrder": [
+"fileId",
+"commentId"
+],
+"parameters": {
+"commentId": {
+"description": "The ID of the comment.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"includeDeleted": {
+"default": "false",
+"description": "Whether to include deleted replies. Deleted replies will not include their original content.",
+"location": "query",
+"type": "boolean"
+},
+"pageSize": {
+"default": "20",
+"description": "The maximum number of replies to return per page.",
+"format": "int32",
+"location": "query",
+"maximum": "100",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments/{commentId}/replies",
+"response": {
+"$ref": "ReplyList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"update": {
+"description": "Updates a reply with patch semantics.",
+"flatPath": "files/{fileId}/comments/{commentId}/replies/{replyId}",
+"httpMethod": "PATCH",
+"id": "drive.replies.update",
+"parameterOrder": [
+"fileId",
+"commentId",
+"replyId"
+],
+"parameters": {
+"commentId": {
+"description": "The ID of the comment.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"replyId": {
+"description": "The ID of the reply.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/comments/{commentId}/replies/{replyId}",
+"request": {
+"$ref": "Reply"
+},
+"response": {
+"$ref": "Reply"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.file"
+]
+}
+}
+},
+"revisions": {
+"methods": {
+"delete": {
+"description": "Permanently deletes a file version. You can only delete revisions for files with binary content in Google Drive, like images or videos. Revisions for other files, like Google Docs or Sheets, and the last remaining file version can't be deleted.",
+"flatPath": "files/{fileId}/revisions/{revisionId}",
+"httpMethod": "DELETE",
+"id": "drive.revisions.delete",
+"parameterOrder": [
+"fileId",
+"revisionId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"revisionId": {
+"description": "The ID of the revision.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/revisions/{revisionId}",
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file"
+]
+},
+"get": {
+"description": "Gets a revision's metadata or content by ID.",
+"flatPath": "files/{fileId}/revisions/{revisionId}",
+"httpMethod": "GET",
+"id": "drive.revisions.get",
+"parameterOrder": [
+"fileId",
+"revisionId"
+],
+"parameters": {
+"acknowledgeAbuse": {
+"default": "false",
+"description": "Whether the user is acknowledging the risk of downloading known malware or other abusive files. This is only applicable when the `alt` parameter is set to `media` and the user is the owner of the file or an organizer of the shared drive in which the file resides.",
+"location": "query",
+"type": "boolean"
+},
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"revisionId": {
+"description": "The ID of the revision.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/revisions/{revisionId}",
+"response": {
+"$ref": "Revision"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+],
+"supportsMediaDownload": true,
+"useMediaDownloadService": true
+},
+"list": {
+"description": "Lists a file's revisions.",
+"flatPath": "files/{fileId}/revisions",
+"httpMethod": "GET",
+"id": "drive.revisions.list",
+"parameterOrder": [
+"fileId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"default": "200",
+"description": "The maximum number of revisions to return per page.",
+"format": "int32",
+"location": "query",
+"maximum": "1000",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "files/{fileId}/revisions",
+"response": {
+"$ref": "RevisionList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file",
+"https://www.googleapis.com/auth/drive.meet.readonly",
+"https://www.googleapis.com/auth/drive.metadata",
+"https://www.googleapis.com/auth/drive.metadata.readonly",
+"https://www.googleapis.com/auth/drive.photos.readonly",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"update": {
+"description": "Updates a revision with patch semantics.",
+"flatPath": "files/{fileId}/revisions/{revisionId}",
+"httpMethod": "PATCH",
+"id": "drive.revisions.update",
+"parameterOrder": [
+"fileId",
+"revisionId"
+],
+"parameters": {
+"fileId": {
+"description": "The ID of the file.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"revisionId": {
+"description": "The ID of the revision.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "files/{fileId}/revisions/{revisionId}",
+"request": {
+"$ref": "Revision"
+},
+"response": {
+"$ref": "Revision"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.appdata",
+"https://www.googleapis.com/auth/drive.file"
+]
+}
+}
+},
+"teamdrives": {
+"methods": {
+"create": {
+"description": "Deprecated: Use `drives.create` instead.",
+"flatPath": "teamdrives",
+"httpMethod": "POST",
+"id": "drive.teamdrives.create",
+"parameterOrder": [
+"requestId"
+],
+"parameters": {
+"requestId": {
+"description": "Required. An ID, such as a random UUID, which uniquely identifies this user's request for idempotent creation of a Team Drive. A repeated request by the same user and with the same request ID will avoid creating duplicates by attempting to create the same Team Drive. If the Team Drive already exists a 409 error will be returned.",
+"location": "query",
+"required": true,
+"type": "string"
+}
+},
+"path": "teamdrives",
+"request": {
+"$ref": "TeamDrive"
+},
+"response": {
+"$ref": "TeamDrive"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+},
+"delete": {
+"description": "Deprecated: Use `drives.delete` instead.",
+"flatPath": "teamdrives/{teamDriveId}",
+"httpMethod": "DELETE",
+"id": "drive.teamdrives.delete",
+"parameterOrder": [
+"teamDriveId"
+],
+"parameters": {
+"teamDriveId": {
+"description": "The ID of the Team Drive",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "teamdrives/{teamDriveId}",
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+},
+"get": {
+"description": "Deprecated: Use `drives.get` instead.",
+"flatPath": "teamdrives/{teamDriveId}",
+"httpMethod": "GET",
+"id": "drive.teamdrives.get",
+"parameterOrder": [
+"teamDriveId"
+],
+"parameters": {
+"teamDriveId": {
+"description": "The ID of the Team Drive",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if they are an administrator of the domain to which the Team Drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "teamdrives/{teamDriveId}",
+"response": {
+"$ref": "TeamDrive"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"list": {
+"description": "Deprecated: Use `drives.list` instead.",
+"flatPath": "teamdrives",
+"httpMethod": "GET",
+"id": "drive.teamdrives.list",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"default": "10",
+"description": "Maximum number of Team Drives to return.",
+"format": "int32",
+"location": "query",
+"maximum": "100",
+"minimum": "1",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token for Team Drives.",
+"location": "query",
+"type": "string"
+},
+"q": {
+"description": "Query string for searching Team Drives.",
+"location": "query",
+"type": "string"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then all Team Drives of the domain in which the requester is an administrator are returned.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "teamdrives",
+"response": {
+"$ref": "TeamDriveList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive",
+"https://www.googleapis.com/auth/drive.readonly"
+]
+},
+"update": {
+"description": "Deprecated: Use `drives.update` instead.",
+"flatPath": "teamdrives/{teamDriveId}",
+"httpMethod": "PATCH",
+"id": "drive.teamdrives.update",
+"parameterOrder": [
+"teamDriveId"
+],
+"parameters": {
+"teamDriveId": {
+"description": "The ID of the Team Drive",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"useDomainAdminAccess": {
+"default": "false",
+"description": "Issue the request as a domain administrator; if set to true, then the requester will be granted access if they are an administrator of the domain to which the Team Drive belongs.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "teamdrives/{teamDriveId}",
+"request": {
+"$ref": "TeamDrive"
+},
+"response": {
+"$ref": "TeamDrive"
+},
+"scopes": [
+"https://www.googleapis.com/auth/drive"
+]
+}
+}
+}
+},
+"revision": "20241206",
+"rootUrl": "https://www.googleapis.com/",
+"schemas": {
+"About": {
+"description": "Information about the user, the user's Drive, and system capabilities.",
+"id": "About",
+"properties": {
+"appInstalled": {
+"description": "Whether the user has installed the requesting app.",
+"type": "boolean"
+},
+"canCreateDrives": {
+"description": "Whether the user can create shared drives.",
+"type": "boolean"
+},
+"canCreateTeamDrives": {
+"deprecated": true,
+"description": "Deprecated: Use `canCreateDrives` instead.",
+"type": "boolean"
+},
+"driveThemes": {
+"description": "A list of themes that are supported for shared drives.",
+"items": {
+"properties": {
+"backgroundImageLink": {
+"description": "A link to this theme's background image.",
+"type": "string"
+},
+"colorRgb": {
+"description": "The color of this theme as an RGB hex string.",
+"type": "string"
+},
+"id": {
+"description": "The ID of the theme.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"type": "array"
+},
+"exportFormats": {
+"additionalProperties": {
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"description": "A map of source MIME type to possible targets for all supported exports.",
+"type": "object"
+},
+"folderColorPalette": {
+"description": "The currently supported folder colors as RGB hex strings.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"importFormats": {
+"additionalProperties": {
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"description": "A map of source MIME type to possible targets for all supported imports.",
+"type": "object"
+},
+"kind": {
+"default": "drive#about",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#about\"`.",
+"type": "string"
+},
+"maxImportSizes": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "A map of maximum import sizes by MIME type, in bytes.",
+"type": "object"
+},
+"maxUploadSize": {
+"description": "The maximum upload size in bytes.",
+"format": "int64",
+"type": "string"
+},
+"storageQuota": {
+"description": "The user's storage quota limits and usage. For users that are part of an organization with pooled storage, information about the limit and usage across all services is for the organization, rather than the individual user. All fields are measured in bytes.",
+"properties": {
+"limit": {
+"description": "The usage limit, if applicable. This will not be present if the user has unlimited storage. For users that are part of an organization with pooled storage, this is the limit for the organization, rather than the individual user.",
+"format": "int64",
+"type": "string"
+},
+"usage": {
+"description": "The total usage across all services. For users that are part of an organization with pooled storage, this is the usage across all services for the organization, rather than the individual user.",
+"format": "int64",
+"type": "string"
+},
+"usageInDrive": {
+"description": "The usage by all files in Google Drive.",
+"format": "int64",
+"type": "string"
+},
+"usageInDriveTrash": {
+"description": "The usage by trashed files in Google Drive.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"teamDriveThemes": {
+"deprecated": true,
+"description": "Deprecated: Use `driveThemes` instead.",
+"items": {
+"properties": {
+"backgroundImageLink": {
+"deprecated": true,
+"description": "Deprecated: Use `driveThemes/backgroundImageLink` instead.",
+"type": "string"
+},
+"colorRgb": {
+"deprecated": true,
+"description": "Deprecated: Use `driveThemes/colorRgb` instead.",
+"type": "string"
+},
+"id": {
+"deprecated": true,
+"description": "Deprecated: Use `driveThemes/id` instead.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"type": "array"
+},
+"user": {
+"$ref": "User",
+"description": "The authenticated user."
+}
+},
+"type": "object"
+},
+"AccessProposal": {
+"description": "The Access Proposal resource for outstanding access proposals on a file",
+"id": "AccessProposal",
+"properties": {
+"createTime": {
+"description": "The creation time",
+"format": "google-datetime",
+"type": "string"
+},
+"fileId": {
+"description": "The file id that the proposal for access is on",
+"type": "string"
+},
+"proposalId": {
+"description": "The id of the access proposal",
+"type": "string"
+},
+"recipientEmailAddress": {
+"description": "The email address of the user that will receive permissions if accepted",
+"type": "string"
+},
+"requestMessage": {
+"description": "The message that the requester added to the proposal",
+"type": "string"
+},
+"requesterEmailAddress": {
+"description": "The email address of the requesting user",
+"type": "string"
+},
+"rolesAndViews": {
+"description": "A wrapper for the role and view of an access proposal.",
+"items": {
+"$ref": "AccessProposalRoleAndView"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AccessProposalRoleAndView": {
+"description": "A wrapper for the role and view of an access proposal.",
+"id": "AccessProposalRoleAndView",
+"properties": {
+"role": {
+"description": "The role that was proposed by the requester New values may be added in the future, but the following are currently possible: * `writer` * `commenter` * `reader`",
+"type": "string"
+},
+"view": {
+"description": "Indicates the view for this access proposal. Only populated for proposals that belong to a view. `published` is the only supported value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"App": {
+"description": "The `apps` resource provides a list of apps that a user has installed, with information about each app's supported MIME types, file extensions, and other details. Some resource methods (such as `apps.get`) require an `appId`. Use the `apps.list` method to retrieve the ID for an installed application.",
+"id": "App",
+"properties": {
+"authorized": {
+"description": "Whether the app is authorized to access data on the user's Drive.",
+"type": "boolean"
+},
+"createInFolderTemplate": {
+"description": "The template URL to create a file with this app in a given folder. The template contains the {folderId} to be replaced by the folder ID house the new file.",
+"type": "string"
+},
+"createUrl": {
+"description": "The URL to create a file with this app.",
+"type": "string"
+},
+"hasDriveWideScope": {
+"description": "Whether the app has Drive-wide scope. An app with Drive-wide scope can access all files in the user's Drive.",
+"type": "boolean"
+},
+"icons": {
+"description": "The various icons for the app.",
+"items": {
+"$ref": "AppIcons"
+},
+"type": "array"
+},
+"id": {
+"description": "The ID of the app.",
+"type": "string"
+},
+"installed": {
+"description": "Whether the app is installed.",
+"type": "boolean"
+},
+"kind": {
+"default": "drive#app",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string \"drive#app\".",
+"type": "string"
+},
+"longDescription": {
+"description": "A long description of the app.",
+"type": "string"
+},
+"name": {
+"description": "The name of the app.",
+"type": "string"
+},
+"objectType": {
+"description": "The type of object this app creates such as a Chart. If empty, the app name should be used instead.",
+"type": "string"
+},
+"openUrlTemplate": {
+"description": "The template URL for opening files with this app. The template contains {ids} or {exportIds} to be replaced by the actual file IDs. For more information, see Open Files for the full documentation.",
+"type": "string"
+},
+"primaryFileExtensions": {
+"description": "The list of primary file extensions.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"primaryMimeTypes": {
+"description": "The list of primary MIME types.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"productId": {
+"description": "The ID of the product listing for this app.",
+"type": "string"
+},
+"productUrl": {
+"description": "A link to the product listing for this app.",
+"type": "string"
+},
+"secondaryFileExtensions": {
+"description": "The list of secondary file extensions.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"secondaryMimeTypes": {
+"description": "The list of secondary MIME types.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"shortDescription": {
+"description": "A short description of the app.",
+"type": "string"
+},
+"supportsCreate": {
+"description": "Whether this app supports creating objects.",
+"type": "boolean"
+},
+"supportsImport": {
+"description": "Whether this app supports importing from Google Docs.",
+"type": "boolean"
+},
+"supportsMultiOpen": {
+"description": "Whether this app supports opening more than one file.",
+"type": "boolean"
+},
+"supportsOfflineCreate": {
+"description": "Whether this app supports creating files when offline.",
+"type": "boolean"
+},
+"useByDefault": {
+"description": "Whether the app is selected as the default handler for the types it supports.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"AppIcons": {
+"id": "AppIcons",
+"properties": {
+"category": {
+"description": "Category of the icon. Allowed values are: * `application` - The icon for the application. * `document` - The icon for a file associated with the app. * `documentShared` - The icon for a shared file associated with the app.",
+"type": "string"
+},
+"iconUrl": {
+"description": "URL for the icon.",
+"type": "string"
+},
+"size": {
+"description": "Size of the icon. Represented as the maximum of the width and height.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"AppList": {
+"description": "A list of third-party applications which the user has installed or given access to Google Drive.",
+"id": "AppList",
+"properties": {
+"defaultAppIds": {
+"description": "The list of app IDs that the user has specified to use by default. The list is in reverse-priority order (lowest to highest).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"items": {
+"description": "The list of apps.",
+"items": {
+"$ref": "App"
+},
+"type": "array"
+},
+"kind": {
+"default": "drive#appList",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string \"drive#appList\".",
+"type": "string"
+},
+"selfLink": {
+"description": "A link back to this list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Change": {
+"description": "A change to a file or shared drive.",
+"id": "Change",
+"properties": {
+"changeType": {
+"description": "The type of the change. Possible values are `file` and `drive`.",
+"type": "string"
+},
+"drive": {
+"$ref": "Drive",
+"description": "The updated state of the shared drive. Present if the changeType is drive, the user is still a member of the shared drive, and the shared drive has not been deleted."
+},
+"driveId": {
+"description": "The ID of the shared drive associated with this change.",
+"type": "string"
+},
+"file": {
+"$ref": "File",
+"description": "The updated state of the file. Present if the type is file and the file has not been removed from this list of changes."
+},
+"fileId": {
+"description": "The ID of the file which has changed.",
+"type": "string"
+},
+"kind": {
+"default": "drive#change",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#change\"`.",
+"type": "string"
+},
+"removed": {
+"description": "Whether the file or shared drive has been removed from this list of changes, for example by deletion or loss of access.",
+"type": "boolean"
+},
+"teamDrive": {
+"$ref": "TeamDrive",
+"deprecated": true,
+"description": "Deprecated: Use `drive` instead."
+},
+"teamDriveId": {
+"deprecated": true,
+"description": "Deprecated: Use `driveId` instead.",
+"type": "string"
+},
+"time": {
+"description": "The time of this change (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"type": {
+"deprecated": true,
+"description": "Deprecated: Use `changeType` instead.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ChangeList": {
+"description": "A list of changes for a user.",
+"id": "ChangeList",
+"properties": {
+"changes": {
+"description": "The list of changes. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.",
+"items": {
+"$ref": "Change"
+},
+"type": "array"
+},
+"kind": {
+"default": "drive#changeList",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#changeList\"`.",
+"type": "string"
+},
+"newStartPageToken": {
+"description": "The starting page token for future changes. This will be present only if the end of the current changes list has been reached. The page token doesn't expire.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "The page token for the next page of changes. This will be absent if the end of the changes list has been reached. The page token doesn't expire.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Channel": {
+"description": "A notification channel used to watch for resource changes.",
+"id": "Channel",
+"properties": {
+"address": {
+"description": "The address where notifications are delivered for this channel.",
+"type": "string"
+},
+"expiration": {
+"description": "Date and time of notification channel expiration, expressed as a Unix timestamp, in milliseconds. Optional.",
+"format": "int64",
+"type": "string"
+},
+"id": {
+"description": "A UUID or similar unique string that identifies this channel.",
+"type": "string"
+},
+"kind": {
+"default": "api#channel",
+"description": "Identifies this as a notification channel used to watch for changes to a resource, which is `api#channel`.",
+"type": "string"
+},
+"params": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Additional parameters controlling delivery channel behavior. Optional.",
+"type": "object"
+},
+"payload": {
+"description": "A Boolean value to indicate whether payload is wanted. Optional.",
+"type": "boolean"
+},
+"resourceId": {
+"description": "An opaque ID that identifies the resource being watched on this channel. Stable across different API versions.",
+"type": "string"
+},
+"resourceUri": {
+"description": "A version-specific identifier for the watched resource.",
+"type": "string"
+},
+"token": {
+"description": "An arbitrary string delivered to the target address with each notification delivered over this channel. Optional.",
+"type": "string"
+},
+"type": {
+"description": "The type of delivery mechanism used for this channel. Valid values are \"web_hook\" or \"webhook\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Comment": {
+"description": "A comment on a file. Some resource methods (such as `comments.update`) require a `commentId`. Use the `comments.list` method to retrieve the ID for a comment in a file.",
+"id": "Comment",
+"properties": {
+"anchor": {
+"description": "A region of the document represented as a JSON string. For details on defining anchor properties, refer to [Manage comments and replies](https://developers.google.com/drive/api/v3/manage-comments).",
+"type": "string"
+},
+"author": {
+"$ref": "User",
+"description": "Output only. The author of the comment. The author's email address and permission ID will not be populated."
+},
+"content": {
+"annotations": {
+"required": [
+"drive.comments.create",
+"drive.comments.update"
+]
+},
+"description": "The plain text content of the comment. This field is used for setting the content, while `htmlContent` should be displayed.",
+"type": "string"
+},
+"createdTime": {
+"description": "The time at which the comment was created (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"deleted": {
+"description": "Output only. Whether the comment has been deleted. A deleted comment has no content.",
+"type": "boolean"
+},
+"htmlContent": {
+"description": "Output only. The content of the comment with HTML formatting.",
+"type": "string"
+},
+"id": {
+"description": "Output only. The ID of the comment.",
+"type": "string"
+},
+"kind": {
+"default": "drive#comment",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string `\"drive#comment\"`.",
+"type": "string"
+},
+"modifiedTime": {
+"description": "The last time the comment or any of its replies was modified (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"quotedFileContent": {
+"description": "The file content to which the comment refers, typically within the anchor region. For a text file, for example, this would be the text at the location of the comment.",
+"properties": {
+"mimeType": {
+"description": "The MIME type of the quoted content.",
+"type": "string"
+},
+"value": {
+"description": "The quoted content itself. This is interpreted as plain text if set through the API.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"replies": {
+"description": "Output only. The full list of replies to the comment in chronological order.",
+"items": {
+"$ref": "Reply"
+},
+"type": "array"
+},
+"resolved": {
+"description": "Output only. Whether the comment has been resolved by one of its replies.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"CommentList": {
+"description": "A list of comments on a file.",
+"id": "CommentList",
+"properties": {
+"comments": {
+"description": "The list of comments. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.",
+"items": {
+"$ref": "Comment"
+},
+"type": "array"
+},
+"kind": {
+"default": "drive#commentList",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#commentList\"`.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "The page token for the next page of comments. This will be absent if the end of the comments list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContentRestriction": {
+"description": "A restriction for accessing the content of the file.",
+"id": "ContentRestriction",
+"properties": {
+"ownerRestricted": {
+"description": "Whether the content restriction can only be modified or removed by a user who owns the file. For files in shared drives, any user with `organizer` capabilities can modify or remove this content restriction.",
+"type": "boolean"
+},
+"readOnly": {
+"description": "Whether the content of the file is read-only. If a file is read-only, a new revision of the file may not be added, comments may not be added or modified, and the title of the file may not be modified.",
+"type": "boolean"
+},
+"reason": {
+"description": "Reason for why the content of the file is restricted. This is only mutable on requests that also set `readOnly=true`.",
+"type": "string"
+},
+"restrictingUser": {
+"$ref": "User",
+"description": "Output only. The user who set the content restriction. Only populated if `readOnly` is true."
+},
+"restrictionTime": {
+"description": "The time at which the content restriction was set (formatted RFC 3339 timestamp). Only populated if readOnly is true.",
+"format": "date-time",
+"type": "string"
+},
+"systemRestricted": {
+"description": "Output only. Whether the content restriction was applied by the system, for example due to an esignature. Users cannot modify or remove system restricted content restrictions.",
+"type": "boolean"
+},
+"type": {
+"description": "Output only. The type of the content restriction. Currently the only possible value is `globalContentRestriction`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Drive": {
+"description": "Representation of a shared drive. Some resource methods (such as `drives.update`) require a `driveId`. Use the `drives.list` method to retrieve the ID for a shared drive.",
+"id": "Drive",
+"properties": {
+"backgroundImageFile": {
+"description": "An image file and cropping parameters from which a background image for this shared drive is set. This is a write only field; it can only be set on `drive.drives.update` requests that don't set `themeId`. When specified, all fields of the `backgroundImageFile` must be set.",
+"properties": {
+"id": {
+"description": "The ID of an image file in Google Drive to use for the background image.",
+"type": "string"
+},
+"width": {
+"description": "The width of the cropped image in the closed range of 0 to 1. This value represents the width of the cropped image divided by the width of the entire image. The height is computed by applying a width to height aspect ratio of 80 to 9. The resulting image must be at least 1280 pixels wide and 144 pixels high.",
+"format": "float",
+"type": "number"
+},
+"xCoordinate": {
+"description": "The X coordinate of the upper left corner of the cropping area in the background image. This is a value in the closed range of 0 to 1. This value represents the horizontal distance from the left side of the entire image to the left side of the cropping area divided by the width of the entire image.",
+"format": "float",
+"type": "number"
+},
+"yCoordinate": {
+"description": "The Y coordinate of the upper left corner of the cropping area in the background image. This is a value in the closed range of 0 to 1. This value represents the vertical distance from the top side of the entire image to the top side of the cropping area divided by the height of the entire image.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"backgroundImageLink": {
+"description": "Output only. A short-lived link to this shared drive's background image.",
+"type": "string"
+},
+"capabilities": {
+"description": "Output only. Capabilities the current user has on this shared drive.",
+"properties": {
+"canAddChildren": {
+"description": "Output only. Whether the current user can add children to folders in this shared drive.",
+"type": "boolean"
+},
+"canChangeCopyRequiresWriterPermissionRestriction": {
+"description": "Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this shared drive.",
+"type": "boolean"
+},
+"canChangeDomainUsersOnlyRestriction": {
+"description": "Output only. Whether the current user can change the `domainUsersOnly` restriction of this shared drive.",
+"type": "boolean"
+},
+"canChangeDriveBackground": {
+"description": "Output only. Whether the current user can change the background of this shared drive.",
+"type": "boolean"
+},
+"canChangeDriveMembersOnlyRestriction": {
+"description": "Output only. Whether the current user can change the `driveMembersOnly` restriction of this shared drive.",
+"type": "boolean"
+},
+"canChangeSharingFoldersRequiresOrganizerPermissionRestriction": {
+"description": "Output only. Whether the current user can change the `sharingFoldersRequiresOrganizerPermission` restriction of this shared drive.",
+"type": "boolean"
+},
+"canComment": {
+"description": "Output only. Whether the current user can comment on files in this shared drive.",
+"type": "boolean"
+},
+"canCopy": {
+"description": "Output only. Whether the current user can copy files in this shared drive.",
+"type": "boolean"
+},
+"canDeleteChildren": {
+"description": "Output only. Whether the current user can delete children from folders in this shared drive.",
+"type": "boolean"
+},
+"canDeleteDrive": {
+"description": "Output only. Whether the current user can delete this shared drive. Attempting to delete the shared drive may still fail if there are untrashed items inside the shared drive.",
+"type": "boolean"
+},
+"canDownload": {
+"description": "Output only. Whether the current user can download files in this shared drive.",
+"type": "boolean"
+},
+"canEdit": {
+"description": "Output only. Whether the current user can edit files in this shared drive",
+"type": "boolean"
+},
+"canListChildren": {
+"description": "Output only. Whether the current user can list the children of folders in this shared drive.",
+"type": "boolean"
+},
+"canManageMembers": {
+"description": "Output only. Whether the current user can add members to this shared drive or remove them or change their role.",
+"type": "boolean"
+},
+"canReadRevisions": {
+"description": "Output only. Whether the current user can read the revisions resource of files in this shared drive.",
+"type": "boolean"
+},
+"canRename": {
+"description": "Output only. Whether the current user can rename files or folders in this shared drive.",
+"type": "boolean"
+},
+"canRenameDrive": {
+"description": "Output only. Whether the current user can rename this shared drive.",
+"type": "boolean"
+},
+"canResetDriveRestrictions": {
+"description": "Output only. Whether the current user can reset the shared drive restrictions to defaults.",
+"type": "boolean"
+},
+"canShare": {
+"description": "Output only. Whether the current user can share files or folders in this shared drive.",
+"type": "boolean"
+},
+"canTrashChildren": {
+"description": "Output only. Whether the current user can trash children from folders in this shared drive.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"colorRgb": {
+"description": "The color of this shared drive as an RGB hex string. It can only be set on a `drive.drives.update` request that does not set `themeId`.",
+"type": "string"
+},
+"createdTime": {
+"description": "The time at which the shared drive was created (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"hidden": {
+"description": "Whether the shared drive is hidden from default view.",
+"type": "boolean"
+},
+"id": {
+"description": "Output only. The ID of this shared drive which is also the ID of the top level folder of this shared drive.",
+"type": "string"
+},
+"kind": {
+"default": "drive#drive",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string `\"drive#drive\"`.",
+"type": "string"
+},
+"name": {
+"description": "The name of this shared drive.",
+"type": "string"
+},
+"orgUnitId": {
+"description": "Output only. The organizational unit of this shared drive. This field is only populated on `drives.list` responses when the `useDomainAdminAccess` parameter is set to `true`.",
+"type": "string"
+},
+"restrictions": {
+"description": "A set of restrictions that apply to this shared drive or items inside this shared drive. Note that restrictions can't be set when creating a shared drive. To add a restriction, first create a shared drive and then use `drives.update` to add restrictions.",
+"properties": {
+"adminManagedRestrictions": {
+"description": "Whether administrative privileges on this shared drive are required to modify restrictions.",
+"type": "boolean"
+},
+"copyRequiresWriterPermission": {
+"description": "Whether the options to copy, print, or download files inside this shared drive, should be disabled for readers and commenters. When this restriction is set to `true`, it will override the similarly named field to `true` for any file inside this shared drive.",
+"type": "boolean"
+},
+"domainUsersOnly": {
+"description": "Whether access to this shared drive and items inside this shared drive is restricted to users of the domain to which this shared drive belongs. This restriction may be overridden by other sharing policies controlled outside of this shared drive.",
+"type": "boolean"
+},
+"driveMembersOnly": {
+"description": "Whether access to items inside this shared drive is restricted to its members.",
+"type": "boolean"
+},
+"sharingFoldersRequiresOrganizerPermission": {
+"description": "If true, only users with the organizer role can share folders. If false, users with either the organizer role or the file organizer role can share folders.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"themeId": {
+"description": "The ID of the theme from which the background image and color will be set. The set of possible `driveThemes` can be retrieved from a `drive.about.get` response. When not specified on a `drive.drives.create` request, a random theme is chosen from which the background image and color are set. This is a write-only field; it can only be set on requests that don't set `colorRgb` or `backgroundImageFile`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DriveList": {
+"description": "A list of shared drives.",
+"id": "DriveList",
+"properties": {
+"drives": {
+"description": "The list of shared drives. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.",
+"items": {
+"$ref": "Drive"
+},
+"type": "array"
+},
+"kind": {
+"default": "drive#driveList",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#driveList\"`.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "The page token for the next page of shared drives. This will be absent if the end of the list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"File": {
+"description": "The metadata for a file. Some resource methods (such as `files.update`) require a `fileId`. Use the `files.list` method to retrieve the ID for a file.",
+"id": "File",
+"properties": {
+"appProperties": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A collection of arbitrary key-value pairs which are private to the requesting app.\nEntries with null values are cleared in update and copy requests. These properties can only be retrieved using an authenticated request. An authenticated request uses an access token obtained with a OAuth 2 client ID. You cannot use an API key to retrieve private properties.",
+"type": "object"
+},
+"capabilities": {
+"description": "Output only. Capabilities the current user has on this file. Each capability corresponds to a fine-grained action that a user may take.",
+"properties": {
+"canAcceptOwnership": {
+"description": "Output only. Whether the current user is the pending owner of the file. Not populated for shared drive files.",
+"type": "boolean"
+},
+"canAddChildren": {
+"description": "Output only. Whether the current user can add children to this folder. This is always false when the item is not a folder.",
+"type": "boolean"
+},
+"canAddFolderFromAnotherDrive": {
+"description": "Output only. Whether the current user can add a folder from another drive (different shared drive or My Drive) to this folder. This is false when the item is not a folder. Only populated for items in shared drives.",
+"type": "boolean"
+},
+"canAddMyDriveParent": {
+"description": "Output only. Whether the current user can add a parent for the item without removing an existing parent in the same request. Not populated for shared drive files.",
+"type": "boolean"
+},
+"canChangeCopyRequiresWriterPermission": {
+"description": "Output only. Whether the current user can change the `copyRequiresWriterPermission` restriction of this file.",
+"type": "boolean"
+},
+"canChangeSecurityUpdateEnabled": {
+"description": "Output only. Whether the current user can change the securityUpdateEnabled field on link share metadata.",
+"type": "boolean"
+},
+"canChangeViewersCanCopyContent": {
+"deprecated": true,
+"description": "Deprecated: Output only.",
+"type": "boolean"
+},
+"canComment": {
+"description": "Output only. Whether the current user can comment on this file.",
+"type": "boolean"
+},
+"canCopy": {
+"description": "Output only. Whether the current user can copy this file. For an item in a shared drive, whether the current user can copy non-folder descendants of this item, or this item itself if it is not a folder.",
+"type": "boolean"
+},
+"canDelete": {
+"description": "Output only. Whether the current user can delete this file.",
+"type": "boolean"
+},
+"canDeleteChildren": {
+"description": "Output only. Whether the current user can delete children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.",
+"type": "boolean"
+},
+"canDownload": {
+"description": "Output only. Whether the current user can download this file.",
+"type": "boolean"
+},
+"canEdit": {
+"description": "Output only. Whether the current user can edit this file. Other factors may limit the type of changes a user can make to a file. For example, see `canChangeCopyRequiresWriterPermission` or `canModifyContent`.",
+"type": "boolean"
+},
+"canListChildren": {
+"description": "Output only. Whether the current user can list the children of this folder. This is always false when the item is not a folder.",
+"type": "boolean"
+},
+"canModifyContent": {
+"description": "Output only. Whether the current user can modify the content of this file.",
+"type": "boolean"
+},
+"canModifyContentRestriction": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use one of `canModifyEditorContentRestriction`, `canModifyOwnerContentRestriction` or `canRemoveContentRestriction`.",
+"type": "boolean"
+},
+"canModifyEditorContentRestriction": {
+"description": "Output only. Whether the current user can add or modify content restrictions on the file which are editor restricted.",
+"type": "boolean"
+},
+"canModifyLabels": {
+"description": "Output only. Whether the current user can modify the labels on the file.",
+"type": "boolean"
+},
+"canModifyOwnerContentRestriction": {
+"description": "Output only. Whether the current user can add or modify content restrictions which are owner restricted.",
+"type": "boolean"
+},
+"canMoveChildrenOutOfDrive": {
+"description": "Output only. Whether the current user can move children of this folder outside of the shared drive. This is false when the item is not a folder. Only populated for items in shared drives.",
+"type": "boolean"
+},
+"canMoveChildrenOutOfTeamDrive": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `canMoveChildrenOutOfDrive` instead.",
+"type": "boolean"
+},
+"canMoveChildrenWithinDrive": {
+"description": "Output only. Whether the current user can move children of this folder within this drive. This is false when the item is not a folder. Note that a request to move the child may still fail depending on the current user's access to the child and to the destination folder.",
+"type": "boolean"
+},
+"canMoveChildrenWithinTeamDrive": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `canMoveChildrenWithinDrive` instead.",
+"type": "boolean"
+},
+"canMoveItemIntoTeamDrive": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.",
+"type": "boolean"
+},
+"canMoveItemOutOfDrive": {
+"description": "Output only. Whether the current user can move this item outside of this drive by changing its parent. Note that a request to change the parent of the item may still fail depending on the new parent that is being added.",
+"type": "boolean"
+},
+"canMoveItemOutOfTeamDrive": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `canMoveItemOutOfDrive` instead.",
+"type": "boolean"
+},
+"canMoveItemWithinDrive": {
+"description": "Output only. Whether the current user can move this item within this drive. Note that a request to change the parent of the item may still fail depending on the new parent that is being added and the parent that is being removed.",
+"type": "boolean"
+},
+"canMoveItemWithinTeamDrive": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `canMoveItemWithinDrive` instead.",
+"type": "boolean"
+},
+"canMoveTeamDriveItem": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `canMoveItemWithinDrive` or `canMoveItemOutOfDrive` instead.",
+"type": "boolean"
+},
+"canReadDrive": {
+"description": "Output only. Whether the current user can read the shared drive to which this file belongs. Only populated for items in shared drives.",
+"type": "boolean"
+},
+"canReadLabels": {
+"description": "Output only. Whether the current user can read the labels on the file.",
+"type": "boolean"
+},
+"canReadRevisions": {
+"description": "Output only. Whether the current user can read the revisions resource of this file. For a shared drive item, whether revisions of non-folder descendants of this item, or this item itself if it is not a folder, can be read.",
+"type": "boolean"
+},
+"canReadTeamDrive": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `canReadDrive` instead.",
+"type": "boolean"
+},
+"canRemoveChildren": {
+"description": "Output only. Whether the current user can remove children from this folder. This is always false when the item is not a folder. For a folder in a shared drive, use `canDeleteChildren` or `canTrashChildren` instead.",
+"type": "boolean"
+},
+"canRemoveContentRestriction": {
+"description": "Output only. Whether there is a content restriction on the file that can be removed by the current user.",
+"type": "boolean"
+},
+"canRemoveMyDriveParent": {
+"description": "Output only. Whether the current user can remove a parent from the item without adding another parent in the same request. Not populated for shared drive files.",
+"type": "boolean"
+},
+"canRename": {
+"description": "Output only. Whether the current user can rename this file.",
+"type": "boolean"
+},
+"canShare": {
+"description": "Output only. Whether the current user can modify the sharing settings for this file.",
+"type": "boolean"
+},
+"canTrash": {
+"description": "Output only. Whether the current user can move this file to trash.",
+"type": "boolean"
+},
+"canTrashChildren": {
+"description": "Output only. Whether the current user can trash children of this folder. This is false when the item is not a folder. Only populated for items in shared drives.",
+"type": "boolean"
+},
+"canUntrash": {
+"description": "Output only. Whether the current user can restore this file from trash.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"contentHints": {
+"description": "Additional information about the content of the file. These fields are never populated in responses.",
+"properties": {
+"indexableText": {
+"description": "Text to be indexed for the file to improve fullText queries. This is limited to 128KB in length and may contain HTML elements.",
+"type": "string"
+},
+"thumbnail": {
+"description": "A thumbnail for the file. This will only be used if Google Drive cannot generate a standard thumbnail.",
+"properties": {
+"image": {
+"description": "The thumbnail data encoded with URL-safe Base64 (RFC 4648 section 5).",
+"format": "byte",
+"type": "string"
+},
+"mimeType": {
+"description": "The MIME type of the thumbnail.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"contentRestrictions": {
+"description": "Restrictions for accessing the content of the file. Only populated if such a restriction exists.",
+"items": {
+"$ref": "ContentRestriction"
+},
+"type": "array"
+},
+"copyRequiresWriterPermission": {
+"description": "Whether the options to copy, print, or download this file, should be disabled for readers and commenters.",
+"type": "boolean"
+},
+"createdTime": {
+"description": "The time at which the file was created (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"description": {
+"description": "A short description of the file.",
+"type": "string"
+},
+"driveId": {
+"description": "Output only. ID of the shared drive the file resides in. Only populated for items in shared drives.",
+"type": "string"
+},
+"explicitlyTrashed": {
+"description": "Output only. Whether the file has been explicitly trashed, as opposed to recursively trashed from a parent folder.",
+"type": "boolean"
+},
+"exportLinks": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. Links for exporting Docs Editors files to specific formats.",
+"readOnly": true,
+"type": "object"
+},
+"fileExtension": {
+"description": "Output only. The final component of `fullFileExtension`. This is only available for files with binary content in Google Drive.",
+"type": "string"
+},
+"folderColorRgb": {
+"description": "The color for a folder or a shortcut to a folder as an RGB hex string. The supported colors are published in the `folderColorPalette` field of the About resource. If an unsupported color is specified, the closest color in the palette is used instead.",
+"type": "string"
+},
+"fullFileExtension": {
+"description": "Output only. The full file extension extracted from the `name` field. May contain multiple concatenated extensions, such as \"tar.gz\". This is only available for files with binary content in Google Drive. This is automatically updated when the `name` field changes, however it is not cleared if the new name does not contain a valid extension.",
+"type": "string"
+},
+"hasAugmentedPermissions": {
+"description": "Output only. Whether there are permissions directly on this file. This field is only populated for items in shared drives.",
+"type": "boolean"
+},
+"hasThumbnail": {
+"description": "Output only. Whether this file has a thumbnail. This does not indicate whether the requesting app has access to the thumbnail. To check access, look for the presence of the thumbnailLink field.",
+"type": "boolean"
+},
+"headRevisionId": {
+"description": "Output only. The ID of the file's head revision. This is currently only available for files with binary content in Google Drive.",
+"type": "string"
+},
+"iconLink": {
+"description": "Output only. A static, unauthenticated link to the file's icon.",
+"type": "string"
+},
+"id": {
+"description": "The ID of the file.",
+"type": "string"
+},
+"imageMediaMetadata": {
+"description": "Output only. Additional metadata about image media, if available.",
+"properties": {
+"aperture": {
+"description": "Output only. The aperture used to create the photo (f-number).",
+"format": "float",
+"type": "number"
+},
+"cameraMake": {
+"description": "Output only. The make of the camera used to create the photo.",
+"type": "string"
+},
+"cameraModel": {
+"description": "Output only. The model of the camera used to create the photo.",
+"type": "string"
+},
+"colorSpace": {
+"description": "Output only. The color space of the photo.",
+"type": "string"
+},
+"exposureBias": {
+"description": "Output only. The exposure bias of the photo (APEX value).",
+"format": "float",
+"type": "number"
+},
+"exposureMode": {
+"description": "Output only. The exposure mode used to create the photo.",
+"type": "string"
+},
+"exposureTime": {
+"description": "Output only. The length of the exposure, in seconds.",
+"format": "float",
+"type": "number"
+},
+"flashUsed": {
+"description": "Output only. Whether a flash was used to create the photo.",
+"type": "boolean"
+},
+"focalLength": {
+"description": "Output only. The focal length used to create the photo, in millimeters.",
+"format": "float",
+"type": "number"
+},
+"height": {
+"description": "Output only. The height of the image in pixels.",
+"format": "int32",
+"type": "integer"
+},
+"isoSpeed": {
+"description": "Output only. The ISO speed used to create the photo.",
+"format": "int32",
+"type": "integer"
+},
+"lens": {
+"description": "Output only. The lens used to create the photo.",
+"type": "string"
+},
+"location": {
+"description": "Output only. Geographic location information stored in the image.",
+"properties": {
+"altitude": {
+"description": "Output only. The altitude stored in the image.",
+"format": "double",
+"type": "number"
+},
+"latitude": {
+"description": "Output only. The latitude stored in the image.",
+"format": "double",
+"type": "number"
+},
+"longitude": {
+"description": "Output only. The longitude stored in the image.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"maxApertureValue": {
+"description": "Output only. The smallest f-number of the lens at the focal length used to create the photo (APEX value).",
+"format": "float",
+"type": "number"
+},
+"meteringMode": {
+"description": "Output only. The metering mode used to create the photo.",
+"type": "string"
+},
+"rotation": {
+"description": "Output only. The number of clockwise 90 degree rotations applied from the image's original orientation.",
+"format": "int32",
+"type": "integer"
+},
+"sensor": {
+"description": "Output only. The type of sensor used to create the photo.",
+"type": "string"
+},
+"subjectDistance": {
+"description": "Output only. The distance to the subject of the photo, in meters.",
+"format": "int32",
+"type": "integer"
+},
+"time": {
+"description": "Output only. The date and time the photo was taken (EXIF DateTime).",
+"type": "string"
+},
+"whiteBalance": {
+"description": "Output only. The white balance mode used to create the photo.",
+"type": "string"
+},
+"width": {
+"description": "Output only. The width of the image in pixels.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"isAppAuthorized": {
+"description": "Output only. Whether the file was created or opened by the requesting app.",
+"type": "boolean"
+},
+"kind": {
+"default": "drive#file",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string `\"drive#file\"`.",
+"type": "string"
+},
+"labelInfo": {
+"description": "Output only. An overview of the labels on the file.",
+"properties": {
+"labels": {
+"description": "Output only. The set of labels on the file as requested by the label IDs in the `includeLabels` parameter. By default, no labels are returned.",
+"items": {
+"$ref": "Label"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"lastModifyingUser": {
+"$ref": "User",
+"description": "Output only. The last user to modify the file. This field is only populated when the last modification was performed by a signed-in user."
+},
+"linkShareMetadata": {
+"description": "Contains details about the link URLs that clients are using to refer to this item.",
+"properties": {
+"securityUpdateEligible": {
+"description": "Output only. Whether the file is eligible for security update.",
+"type": "boolean"
+},
+"securityUpdateEnabled": {
+"description": "Output only. Whether the security update is enabled for this file.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"md5Checksum": {
+"description": "Output only. The MD5 checksum for the content of the file. This is only applicable to files with binary content in Google Drive.",
+"type": "string"
+},
+"mimeType": {
+"description": "The MIME type of the file. Google Drive attempts to automatically detect an appropriate value from uploaded content, if no value is provided. The value cannot be changed unless a new revision is uploaded. If a file is created with a Google Doc MIME type, the uploaded content is imported, if possible. The supported import formats are published in the About resource.",
+"type": "string"
+},
+"modifiedByMe": {
+"description": "Output only. Whether the file has been modified by this user.",
+"type": "boolean"
+},
+"modifiedByMeTime": {
+"description": "The last time the file was modified by the user (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"modifiedTime": {
+"description": "he last time the file was modified by anyone (RFC 3339 date-time). Note that setting modifiedTime will also update modifiedByMeTime for the user.",
+"format": "date-time",
+"type": "string"
+},
+"name": {
+"description": "The name of the file. This is not necessarily unique within a folder. Note that for immutable items such as the top level folders of shared drives, My Drive root folder, and Application Data folder the name is constant.",
+"type": "string"
+},
+"originalFilename": {
+"description": "The original filename of the uploaded content if available, or else the original value of the `name` field. This is only available for files with binary content in Google Drive.",
+"type": "string"
+},
+"ownedByMe": {
+"description": "Output only. Whether the user owns the file. Not populated for items in shared drives.",
+"type": "boolean"
+},
+"owners": {
+"description": "Output only. The owner of this file. Only certain legacy files may have more than one owner. This field isn't populated for items in shared drives.",
+"items": {
+"$ref": "User"
+},
+"type": "array"
+},
+"parents": {
+"description": "The ID of the parent folder containing the file. A file can only have one parent folder; specifying multiple parents isn't supported. If not specified as part of a create request, the file is placed directly in the user's My Drive folder. If not specified as part of a copy request, the file inherits any discoverable parent of the source file. Update requests must use the `addParents` and `removeParents` parameters to modify the parents list.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"permissionIds": {
+"description": "Output only. List of permission IDs for users with access to this file.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"permissions": {
+"description": "Output only. The full list of permissions for the file. This is only available if the requesting user can share the file. Not populated for items in shared drives.",
+"items": {
+"$ref": "Permission"
+},
+"type": "array"
+},
+"properties": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A collection of arbitrary key-value pairs which are visible to all apps.\nEntries with null values are cleared in update and copy requests.",
+"type": "object"
+},
+"quotaBytesUsed": {
+"description": "Output only. The number of storage quota bytes used by the file. This includes the head revision as well as previous revisions with `keepForever` enabled.",
+"format": "int64",
+"type": "string"
+},
+"resourceKey": {
+"description": "Output only. A key needed to access the item via a shared link.",
+"type": "string"
+},
+"sha1Checksum": {
+"description": "Output only. The SHA1 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.",
+"type": "string"
+},
+"sha256Checksum": {
+"description": "Output only. The SHA256 checksum associated with this file, if available. This field is only populated for files with content stored in Google Drive; it is not populated for Docs Editors or shortcut files.",
+"type": "string"
+},
+"shared": {
+"description": "Output only. Whether the file has been shared. Not populated for items in shared drives.",
+"type": "boolean"
+},
+"sharedWithMeTime": {
+"description": "The time at which the file was shared with the user, if applicable (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"sharingUser": {
+"$ref": "User",
+"description": "Output only. The user who shared the file with the requesting user, if applicable."
+},
+"shortcutDetails": {
+"description": "Shortcut file details. Only populated for shortcut files, which have the mimeType field set to `application/vnd.google-apps.shortcut`. Can only be set on `files.create` requests.",
+"properties": {
+"targetId": {
+"description": "The ID of the file that this shortcut points to. Can only be set on `files.create` requests.",
+"type": "string"
+},
+"targetMimeType": {
+"description": "Output only. The MIME type of the file that this shortcut points to. The value of this field is a snapshot of the target's MIME type, captured when the shortcut is created.",
+"type": "string"
+},
+"targetResourceKey": {
+"description": "Output only. The ResourceKey for the target file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"size": {
+"description": "Output only. Size in bytes of blobs and first party editor files. Won't be populated for files that have no size, like shortcuts and folders.",
+"format": "int64",
+"type": "string"
+},
+"spaces": {
+"description": "Output only. The list of spaces which contain the file. The currently supported values are 'drive', 'appDataFolder' and 'photos'.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"starred": {
+"description": "Whether the user has starred the file.",
+"type": "boolean"
+},
+"teamDriveId": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `driveId` instead.",
+"type": "string"
+},
+"thumbnailLink": {
+"description": "Output only. A short-lived link to the file's thumbnail, if available. Typically lasts on the order of hours. Not intended for direct usage on web applications due to [Cross-Origin Resource Sharing (CORS)](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) policies, consider using a proxy server. Only populated when the requesting app can access the file's content. If the file isn't shared publicly, the URL returned in `Files.thumbnailLink` must be fetched using a credentialed request.",
+"type": "string"
+},
+"thumbnailVersion": {
+"description": "Output only. The thumbnail version for use in thumbnail cache invalidation.",
+"format": "int64",
+"type": "string"
+},
+"trashed": {
+"description": "Whether the file has been trashed, either explicitly or from a trashed parent folder. Only the owner may trash a file, and other users cannot see files in the owner's trash.",
+"type": "boolean"
+},
+"trashedTime": {
+"description": "The time that the item was trashed (RFC 3339 date-time). Only populated for items in shared drives.",
+"format": "date-time",
+"type": "string"
+},
+"trashingUser": {
+"$ref": "User",
+"description": "Output only. If the file has been explicitly trashed, the user who trashed it. Only populated for items in shared drives."
+},
+"version": {
+"description": "Output only. A monotonically increasing version number for the file. This reflects every change made to the file on the server, even those not visible to the user.",
+"format": "int64",
+"type": "string"
+},
+"videoMediaMetadata": {
+"description": "Output only. Additional metadata about video media. This may not be available immediately upon upload.",
+"properties": {
+"durationMillis": {
+"description": "Output only. The duration of the video in milliseconds.",
+"format": "int64",
+"type": "string"
+},
+"height": {
+"description": "Output only. The height of the video in pixels.",
+"format": "int32",
+"type": "integer"
+},
+"width": {
+"description": "Output only. The width of the video in pixels.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"viewedByMe": {
+"description": "Output only. Whether the file has been viewed by this user.",
+"type": "boolean"
+},
+"viewedByMeTime": {
+"description": "The last time the file was viewed by the user (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"viewersCanCopyContent": {
+"deprecated": true,
+"description": "Deprecated: Use `copyRequiresWriterPermission` instead.",
+"type": "boolean"
+},
+"webContentLink": {
+"description": "Output only. A link for downloading the content of the file in a browser. This is only available for files with binary content in Google Drive.",
+"type": "string"
+},
+"webViewLink": {
+"description": "Output only. A link for opening the file in a relevant Google editor or viewer in a browser.",
+"type": "string"
+},
+"writersCanShare": {
+"description": "Whether users with only `writer` permission can modify the file's permissions. Not populated for items in shared drives.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"FileList": {
+"description": "A list of files.",
+"id": "FileList",
+"properties": {
+"files": {
+"description": "The list of files. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.",
+"items": {
+"$ref": "File"
+},
+"type": "array"
+},
+"incompleteSearch": {
+"description": "Whether the search process was incomplete. If true, then some search results might be missing, since all documents were not searched. This can occur when searching multiple drives with the 'allDrives' corpora, but all corpora couldn't be searched. When this happens, it's suggested that clients narrow their query by choosing a different corpus such as 'user' or 'drive'.",
+"type": "boolean"
+},
+"kind": {
+"default": "drive#fileList",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#fileList\"`.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "The page token for the next page of files. This will be absent if the end of the files list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GeneratedIds": {
+"description": "A list of generated file IDs which can be provided in create requests.",
+"id": "GeneratedIds",
+"properties": {
+"ids": {
+"description": "The IDs generated for the requesting user in the specified space.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"kind": {
+"default": "drive#generatedIds",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#generatedIds\"`.",
+"type": "string"
+},
+"space": {
+"description": "The type of file that can be created with these IDs.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Label": {
+"description": "Representation of label and label fields.",
+"id": "Label",
+"properties": {
+"fields": {
+"additionalProperties": {
+"$ref": "LabelField"
+},
+"description": "A map of the fields on the label, keyed by the field's ID.",
+"type": "object"
+},
+"id": {
+"description": "The ID of the label.",
+"type": "string"
+},
+"kind": {
+"description": "This is always drive#label",
+"type": "string"
+},
+"revisionId": {
+"description": "The revision ID of the label.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LabelField": {
+"description": "Representation of field, which is a typed key-value pair.",
+"id": "LabelField",
+"properties": {
+"dateString": {
+"description": "Only present if valueType is dateString. RFC 3339 formatted date: YYYY-MM-DD.",
+"items": {
+"format": "date",
+"type": "string"
+},
+"type": "array"
+},
+"id": {
+"description": "The identifier of this label field.",
+"type": "string"
+},
+"integer": {
+"description": "Only present if `valueType` is `integer`.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"kind": {
+"description": "This is always drive#labelField.",
+"type": "string"
+},
+"selection": {
+"description": "Only present if `valueType` is `selection`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"text": {
+"description": "Only present if `valueType` is `text`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"user": {
+"description": "Only present if `valueType` is `user`.",
+"items": {
+"$ref": "User"
+},
+"type": "array"
+},
+"valueType": {
+"description": "The field type. While new values may be supported in the future, the following are currently allowed: * `dateString` * `integer` * `selection` * `text` * `user`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LabelFieldModification": {
+"description": "A modification to a label's field.",
+"id": "LabelFieldModification",
+"properties": {
+"fieldId": {
+"description": "The ID of the field to be modified.",
+"type": "string"
+},
+"kind": {
+"description": "This is always drive#labelFieldModification.",
+"type": "string"
+},
+"setDateValues": {
+"description": "Replaces the value of a dateString Field with these new values. The string must be in the RFC 3339 full-date format: YYYY-MM-DD.",
+"items": {
+"format": "date",
+"type": "string"
+},
+"type": "array"
+},
+"setIntegerValues": {
+"description": "Replaces the value of an `integer` field with these new values.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"setSelectionValues": {
+"description": "Replaces a `selection` field with these new values.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"setTextValues": {
+"description": "Sets the value of a `text` field.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"setUserValues": {
+"description": "Replaces a `user` field with these new values. The values must be valid email addresses.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"unsetValues": {
+"description": "Unsets the values for this field.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"LabelList": {
+"description": "A list of labels applied to a file.",
+"id": "LabelList",
+"properties": {
+"kind": {
+"description": "This is always drive#labelList",
+"type": "string"
+},
+"labels": {
+"description": "The list of labels.",
+"items": {
+"$ref": "Label"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The page token for the next page of labels. This field will be absent if the end of the list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LabelModification": {
+"description": "A modification to a label on a file. A LabelModification can be used to apply a label to a file, update an existing label on a file, or remove a label from a file.",
+"id": "LabelModification",
+"properties": {
+"fieldModifications": {
+"description": "The list of modifications to this label's fields.",
+"items": {
+"$ref": "LabelFieldModification"
+},
+"type": "array"
+},
+"kind": {
+"description": "This is always drive#labelModification.",
+"type": "string"
+},
+"labelId": {
+"annotations": {
+"required": [
+"drive.files.modifyLabels"
+]
+},
+"description": "The ID of the label to modify.",
+"type": "string"
+},
+"removeLabel": {
+"description": "If true, the label will be removed from the file.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ListAccessProposalsResponse": {
+"description": "The response to an Access Proposal list request.",
+"id": "ListAccessProposalsResponse",
+"properties": {
+"accessProposals": {
+"description": "The list of Access Proposals. This field is only populated in v3 and v3beta.",
+"items": {
+"$ref": "AccessProposal"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The continuation token for the next page of results. This will be absent if the end of the results list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ModifyLabelsRequest": {
+"description": "A request to modify the set of labels on a file. This request may contain many modifications that will either all succeed or all fail atomically.",
+"id": "ModifyLabelsRequest",
+"properties": {
+"kind": {
+"description": "This is always drive#modifyLabelsRequest.",
+"type": "string"
+},
+"labelModifications": {
+"description": "The list of modifications to apply to the labels on the file.",
+"items": {
+"$ref": "LabelModification"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ModifyLabelsResponse": {
+"description": "Response to a ModifyLabels request. This contains only those labels which were added or updated by the request.",
+"id": "ModifyLabelsResponse",
+"properties": {
+"kind": {
+"description": "This is always drive#modifyLabelsResponse",
+"type": "string"
+},
+"modifiedLabels": {
+"description": "The list of labels which were added or updated by the request.",
+"items": {
+"$ref": "Label"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Permission": {
+"description": "A permission for a file. A permission grants a user, group, domain, or the world access to a file or a folder hierarchy. By default, permissions requests only return a subset of fields. Permission kind, ID, type, and role are always returned. To retrieve specific fields, see https://developers.google.com/drive/api/guides/fields-parameter. Some resource methods (such as `permissions.update`) require a `permissionId`. Use the `permissions.list` method to retrieve the ID for a file, folder, or shared drive.",
+"id": "Permission",
+"properties": {
+"allowFileDiscovery": {
+"description": "Whether the permission allows the file to be discovered through search. This is only applicable for permissions of type `domain` or `anyone`.",
+"type": "boolean"
+},
+"deleted": {
+"description": "Output only. Whether the account associated with this permission has been deleted. This field only pertains to user and group permissions.",
+"type": "boolean"
+},
+"displayName": {
+"description": "Output only. The \"pretty\" name of the value of the permission. The following is a list of examples for each type of permission: * `user` - User's full name, as defined for their Google account, such as \"Joe Smith.\" * `group` - Name of the Google Group, such as \"The Company Administrators.\" * `domain` - String domain name, such as \"thecompany.com.\" * `anyone` - No `displayName` is present.",
+"type": "string"
+},
+"domain": {
+"description": "The domain to which this permission refers.",
+"type": "string"
+},
+"emailAddress": {
+"description": "The email address of the user or group to which this permission refers.",
+"type": "string"
+},
+"expirationTime": {
+"description": "The time at which this permission will expire (RFC 3339 date-time). Expiration times have the following restrictions: - They can only be set on user and group permissions - The time must be in the future - The time cannot be more than a year in the future",
+"format": "date-time",
+"type": "string"
+},
+"id": {
+"description": "Output only. The ID of this permission. This is a unique identifier for the grantee, and is published in User resources as `permissionId`. IDs should be treated as opaque values.",
+"type": "string"
+},
+"kind": {
+"default": "drive#permission",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string `\"drive#permission\"`.",
+"type": "string"
+},
+"pendingOwner": {
+"description": "Whether the account associated with this permission is a pending owner. Only populated for `user` type permissions for files that are not in a shared drive.",
+"type": "boolean"
+},
+"permissionDetails": {
+"description": "Output only. Details of whether the permissions on this shared drive item are inherited or directly on this item. This is an output-only field which is present only for shared drive items.",
+"items": {
+"properties": {
+"inherited": {
+"description": "Output only. Whether this permission is inherited. This field is always populated. This is an output-only field.",
+"type": "boolean"
+},
+"inheritedFrom": {
+"description": "Output only. The ID of the item from which this permission is inherited. This is an output-only field.",
+"type": "string"
+},
+"permissionType": {
+"description": "Output only. The permission type for this user. While new values may be added in future, the following are currently possible: * `file` * `member`",
+"type": "string"
+},
+"role": {
+"description": "Output only. The primary role for this user. While new values may be added in the future, the following are currently possible: * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"readOnly": true,
+"type": "array"
+},
+"photoLink": {
+"description": "Output only. A link to the user's profile photo, if available.",
+"type": "string"
+},
+"role": {
+"annotations": {
+"required": [
+"drive.permissions.create"
+]
+},
+"description": "The role granted by this permission. While new values may be supported in the future, the following are currently allowed: * `owner` * `organizer` * `fileOrganizer` * `writer` * `commenter` * `reader`",
+"type": "string"
+},
+"teamDrivePermissionDetails": {
+"deprecated": true,
+"description": "Output only. Deprecated: Output only. Use `permissionDetails` instead.",
+"items": {
+"properties": {
+"inherited": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `permissionDetails/inherited` instead.",
+"type": "boolean"
+},
+"inheritedFrom": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `permissionDetails/inheritedFrom` instead.",
+"type": "string"
+},
+"role": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `permissionDetails/role` instead.",
+"type": "string"
+},
+"teamDrivePermissionType": {
+"deprecated": true,
+"description": "Deprecated: Output only. Use `permissionDetails/permissionType` instead.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"readOnly": true,
+"type": "array"
+},
+"type": {
+"annotations": {
+"required": [
+"drive.permissions.create"
+]
+},
+"description": "The type of the grantee. Valid values are: * `user` * `group` * `domain` * `anyone` When creating a permission, if `type` is `user` or `group`, you must provide an `emailAddress` for the user or group. When `type` is `domain`, you must provide a `domain`. There isn't extra information required for an `anyone` type.",
+"type": "string"
+},
+"view": {
+"description": "Indicates the view for this permission. Only populated for permissions that belong to a view. 'published' is the only supported value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PermissionList": {
+"description": "A list of permissions for a file.",
+"id": "PermissionList",
+"properties": {
+"kind": {
+"default": "drive#permissionList",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#permissionList\"`.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "The page token for the next page of permissions. This field will be absent if the end of the permissions list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.",
+"type": "string"
+},
+"permissions": {
+"description": "The list of permissions. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.",
+"items": {
+"$ref": "Permission"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Reply": {
+"description": "A reply to a comment on a file. Some resource methods (such as `replies.update`) require a `replyId`. Use the `replies.list` method to retrieve the ID for a reply.",
+"id": "Reply",
+"properties": {
+"action": {
+"description": "The action the reply performed to the parent comment. Valid values are: * `resolve` * `reopen`",
+"type": "string"
+},
+"author": {
+"$ref": "User",
+"description": "Output only. The author of the reply. The author's email address and permission ID will not be populated."
+},
+"content": {
+"annotations": {
+"required": [
+"drive.replies.update"
+]
+},
+"description": "The plain text content of the reply. This field is used for setting the content, while `htmlContent` should be displayed. This is required on creates if no `action` is specified.",
+"type": "string"
+},
+"createdTime": {
+"description": "The time at which the reply was created (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"deleted": {
+"description": "Output only. Whether the reply has been deleted. A deleted reply has no content.",
+"type": "boolean"
+},
+"htmlContent": {
+"description": "Output only. The content of the reply with HTML formatting.",
+"type": "string"
+},
+"id": {
+"description": "Output only. The ID of the reply.",
+"type": "string"
+},
+"kind": {
+"default": "drive#reply",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string `\"drive#reply\"`.",
+"type": "string"
+},
+"modifiedTime": {
+"description": "The last time the reply was modified (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ReplyList": {
+"description": "A list of replies to a comment on a file.",
+"id": "ReplyList",
+"properties": {
+"kind": {
+"default": "drive#replyList",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#replyList\"`.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "The page token for the next page of replies. This will be absent if the end of the replies list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.",
+"type": "string"
+},
+"replies": {
+"description": "The list of replies. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.",
+"items": {
+"$ref": "Reply"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ResolveAccessProposalRequest": {
+"description": "Request message for resolving an AccessProposal on a file.",
+"id": "ResolveAccessProposalRequest",
+"properties": {
+"action": {
+"description": "Required. The action to take on the AccessProposal.",
+"enum": [
+"ACTION_UNSPECIFIED",
+"ACCEPT",
+"DENY"
+],
+"enumDescriptions": [
+"Unspecified action",
+"The user accepts the proposal. Note: If this action is used, the `role` field must have at least one value.",
+"The user denies the proposal"
+],
+"type": "string"
+},
+"role": {
+"description": "Optional. The roles the approver has allowed, if any. Note: This field is required for the `ACCEPT` action.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sendNotification": {
+"description": "Optional. Whether to send an email to the requester when the AccessProposal is denied or accepted.",
+"type": "boolean"
+},
+"view": {
+"description": "Optional. Indicates the view for this access proposal. This should only be set when the proposal belongs to a view. `published` is the only supported value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Revision": {
+"description": "The metadata for a revision to a file. Some resource methods (such as `revisions.update`) require a `revisionId`. Use the `revisions.list` method to retrieve the ID for a revision.",
+"id": "Revision",
+"properties": {
+"exportLinks": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. Links for exporting Docs Editors files to specific formats.",
+"type": "object"
+},
+"id": {
+"description": "Output only. The ID of the revision.",
+"type": "string"
+},
+"keepForever": {
+"description": "Whether to keep this revision forever, even if it is no longer the head revision. If not set, the revision will be automatically purged 30 days after newer content is uploaded. This can be set on a maximum of 200 revisions for a file. This field is only applicable to files with binary content in Drive.",
+"type": "boolean"
+},
+"kind": {
+"default": "drive#revision",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string `\"drive#revision\"`.",
+"type": "string"
+},
+"lastModifyingUser": {
+"$ref": "User",
+"description": "Output only. The last user to modify this revision. This field is only populated when the last modification was performed by a signed-in user."
+},
+"md5Checksum": {
+"description": "Output only. The MD5 checksum of the revision's content. This is only applicable to files with binary content in Drive.",
+"type": "string"
+},
+"mimeType": {
+"description": "Output only. The MIME type of the revision.",
+"type": "string"
+},
+"modifiedTime": {
+"description": "The last time the revision was modified (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"originalFilename": {
+"description": "Output only. The original filename used to create this revision. This is only applicable to files with binary content in Drive.",
+"type": "string"
+},
+"publishAuto": {
+"description": "Whether subsequent revisions will be automatically republished. This is only applicable to Docs Editors files.",
+"type": "boolean"
+},
+"published": {
+"description": "Whether this revision is published. This is only applicable to Docs Editors files.",
+"type": "boolean"
+},
+"publishedLink": {
+"description": "Output only. A link to the published revision. This is only populated for Google Sites files.",
+"type": "string"
+},
+"publishedOutsideDomain": {
+"description": "Whether this revision is published outside the domain. This is only applicable to Docs Editors files.",
+"type": "boolean"
+},
+"size": {
+"description": "Output only. The size of the revision's content in bytes. This is only applicable to files with binary content in Drive.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RevisionList": {
+"description": "A list of revisions of a file.",
+"id": "RevisionList",
+"properties": {
+"kind": {
+"default": "drive#revisionList",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#revisionList\"`.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "The page token for the next page of revisions. This will be absent if the end of the revisions list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.",
+"type": "string"
+},
+"revisions": {
+"description": "The list of revisions. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.",
+"items": {
+"$ref": "Revision"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"StartPageToken": {
+"id": "StartPageToken",
+"properties": {
+"kind": {
+"default": "drive#startPageToken",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#startPageToken\"`.",
+"type": "string"
+},
+"startPageToken": {
+"description": "The starting page token for listing future changes. The page token doesn't expire.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TeamDrive": {
+"description": "Deprecated: use the drive collection instead.",
+"id": "TeamDrive",
+"properties": {
+"backgroundImageFile": {
+"description": "An image file and cropping parameters from which a background image for this Team Drive is set. This is a write only field; it can only be set on `drive.teamdrives.update` requests that don't set `themeId`. When specified, all fields of the `backgroundImageFile` must be set.",
+"properties": {
+"id": {
+"description": "The ID of an image file in Drive to use for the background image.",
+"type": "string"
+},
+"width": {
+"description": "The width of the cropped image in the closed range of 0 to 1. This value represents the width of the cropped image divided by the width of the entire image. The height is computed by applying a width to height aspect ratio of 80 to 9. The resulting image must be at least 1280 pixels wide and 144 pixels high.",
+"format": "float",
+"type": "number"
+},
+"xCoordinate": {
+"description": "The X coordinate of the upper left corner of the cropping area in the background image. This is a value in the closed range of 0 to 1. This value represents the horizontal distance from the left side of the entire image to the left side of the cropping area divided by the width of the entire image.",
+"format": "float",
+"type": "number"
+},
+"yCoordinate": {
+"description": "The Y coordinate of the upper left corner of the cropping area in the background image. This is a value in the closed range of 0 to 1. This value represents the vertical distance from the top side of the entire image to the top side of the cropping area divided by the height of the entire image.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"backgroundImageLink": {
+"description": "A short-lived link to this Team Drive's background image.",
+"type": "string"
+},
+"capabilities": {
+"description": "Capabilities the current user has on this Team Drive.",
+"properties": {
+"canAddChildren": {
+"description": "Whether the current user can add children to folders in this Team Drive.",
+"type": "boolean"
+},
+"canChangeCopyRequiresWriterPermissionRestriction": {
+"description": "Whether the current user can change the `copyRequiresWriterPermission` restriction of this Team Drive.",
+"type": "boolean"
+},
+"canChangeDomainUsersOnlyRestriction": {
+"description": "Whether the current user can change the `domainUsersOnly` restriction of this Team Drive.",
+"type": "boolean"
+},
+"canChangeSharingFoldersRequiresOrganizerPermissionRestriction": {
+"description": "Whether the current user can change the `sharingFoldersRequiresOrganizerPermission` restriction of this Team Drive.",
+"type": "boolean"
+},
+"canChangeTeamDriveBackground": {
+"description": "Whether the current user can change the background of this Team Drive.",
+"type": "boolean"
+},
+"canChangeTeamMembersOnlyRestriction": {
+"description": "Whether the current user can change the `teamMembersOnly` restriction of this Team Drive.",
+"type": "boolean"
+},
+"canComment": {
+"description": "Whether the current user can comment on files in this Team Drive.",
+"type": "boolean"
+},
+"canCopy": {
+"description": "Whether the current user can copy files in this Team Drive.",
+"type": "boolean"
+},
+"canDeleteChildren": {
+"description": "Whether the current user can delete children from folders in this Team Drive.",
+"type": "boolean"
+},
+"canDeleteTeamDrive": {
+"description": "Whether the current user can delete this Team Drive. Attempting to delete the Team Drive may still fail if there are untrashed items inside the Team Drive.",
+"type": "boolean"
+},
+"canDownload": {
+"description": "Whether the current user can download files in this Team Drive.",
+"type": "boolean"
+},
+"canEdit": {
+"description": "Whether the current user can edit files in this Team Drive",
+"type": "boolean"
+},
+"canListChildren": {
+"description": "Whether the current user can list the children of folders in this Team Drive.",
+"type": "boolean"
+},
+"canManageMembers": {
+"description": "Whether the current user can add members to this Team Drive or remove them or change their role.",
+"type": "boolean"
+},
+"canReadRevisions": {
+"description": "Whether the current user can read the revisions resource of files in this Team Drive.",
+"type": "boolean"
+},
+"canRemoveChildren": {
+"deprecated": true,
+"description": "Deprecated: Use `canDeleteChildren` or `canTrashChildren` instead.",
+"type": "boolean"
+},
+"canRename": {
+"description": "Whether the current user can rename files or folders in this Team Drive.",
+"type": "boolean"
+},
+"canRenameTeamDrive": {
+"description": "Whether the current user can rename this Team Drive.",
+"type": "boolean"
+},
+"canResetTeamDriveRestrictions": {
+"description": "Whether the current user can reset the Team Drive restrictions to defaults.",
+"type": "boolean"
+},
+"canShare": {
+"description": "Whether the current user can share files or folders in this Team Drive.",
+"type": "boolean"
+},
+"canTrashChildren": {
+"description": "Whether the current user can trash children from folders in this Team Drive.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"colorRgb": {
+"description": "The color of this Team Drive as an RGB hex string. It can only be set on a `drive.teamdrives.update` request that does not set `themeId`.",
+"type": "string"
+},
+"createdTime": {
+"description": "The time at which the Team Drive was created (RFC 3339 date-time).",
+"format": "date-time",
+"type": "string"
+},
+"id": {
+"description": "The ID of this Team Drive which is also the ID of the top level folder of this Team Drive.",
+"type": "string"
+},
+"kind": {
+"default": "drive#teamDrive",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#teamDrive\"`.",
+"type": "string"
+},
+"name": {
+"description": "The name of this Team Drive.",
+"type": "string"
+},
+"orgUnitId": {
+"description": "The organizational unit of this shared drive. This field is only populated on `drives.list` responses when the `useDomainAdminAccess` parameter is set to `true`.",
+"type": "string"
+},
+"restrictions": {
+"description": "A set of restrictions that apply to this Team Drive or items inside this Team Drive.",
+"properties": {
+"adminManagedRestrictions": {
+"description": "Whether administrative privileges on this Team Drive are required to modify restrictions.",
+"type": "boolean"
+},
+"copyRequiresWriterPermission": {
+"description": "Whether the options to copy, print, or download files inside this Team Drive, should be disabled for readers and commenters. When this restriction is set to `true`, it will override the similarly named field to `true` for any file inside this Team Drive.",
+"type": "boolean"
+},
+"domainUsersOnly": {
+"description": "Whether access to this Team Drive and items inside this Team Drive is restricted to users of the domain to which this Team Drive belongs. This restriction may be overridden by other sharing policies controlled outside of this Team Drive.",
+"type": "boolean"
+},
+"sharingFoldersRequiresOrganizerPermission": {
+"description": "If true, only users with the organizer role can share folders. If false, users with either the organizer role or the file organizer role can share folders.",
+"type": "boolean"
+},
+"teamMembersOnly": {
+"description": "Whether access to items inside this Team Drive is restricted to members of this Team Drive.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"themeId": {
+"description": "The ID of the theme from which the background image and color will be set. The set of possible `teamDriveThemes` can be retrieved from a `drive.about.get` response. When not specified on a `drive.teamdrives.create` request, a random theme is chosen from which the background image and color are set. This is a write-only field; it can only be set on requests that don't set `colorRgb` or `backgroundImageFile`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TeamDriveList": {
+"description": "A list of Team Drives.",
+"id": "TeamDriveList",
+"properties": {
+"kind": {
+"default": "drive#teamDriveList",
+"description": "Identifies what kind of resource this is. Value: the fixed string `\"drive#teamDriveList\"`.",
+"type": "string"
+},
+"nextPageToken": {
+"description": "The page token for the next page of Team Drives. This will be absent if the end of the Team Drives list has been reached. If the token is rejected for any reason, it should be discarded, and pagination should be restarted from the first page of results. The page token is typically valid for several hours. However, if new items are added or removed, your expected results might differ.",
+"type": "string"
+},
+"teamDrives": {
+"description": "The list of Team Drives. If nextPageToken is populated, then this list may be incomplete and an additional page of results should be fetched.",
+"items": {
+"$ref": "TeamDrive"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"User": {
+"description": "Information about a Drive user.",
+"id": "User",
+"properties": {
+"displayName": {
+"description": "Output only. A plain text displayable name for this user.",
+"type": "string"
+},
+"emailAddress": {
+"description": "Output only. The email address of the user. This may not be present in certain contexts if the user has not made their email address visible to the requester.",
+"type": "string"
+},
+"kind": {
+"default": "drive#user",
+"description": "Output only. Identifies what kind of resource this is. Value: the fixed string `\"drive#user\"`.",
+"type": "string"
+},
+"me": {
+"description": "Output only. Whether this user is the requesting user.",
+"type": "boolean"
+},
+"permissionId": {
+"description": "Output only. The user's ID as visible in Permission resources.",
+"type": "string"
+},
+"photoLink": {
+"description": "Output only. A link to the user's profile photo, if available.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "drive/v3/",
+"title": "Google Drive API",
+"version": "v3"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/eventarc.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/eventarc.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..a8a3f06fa265f09095721fb21855bffa90243368
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/eventarc.v1.json
@@ -0,0 +1,4048 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://eventarc.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Eventarc",
+"description": "Build event-driven applications on Google Cloud Platform.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/eventarc",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "eventarc:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://eventarc.mtls.googleapis.com/",
+"name": "eventarc",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getGoogleChannelConfig": {
+"description": "Get a GoogleChannelConfig",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleChannelConfig",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.getGoogleChannelConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the config to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/googleChannelConfig$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleChannelConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updateGoogleChannelConfig": {
+"description": "Update a single GoogleChannelConfig",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleChannelConfig",
+"httpMethod": "PATCH",
+"id": "eventarc.projects.locations.updateGoogleChannelConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the config. Must be in the format of, `projects/{project}/locations/{location}/googleChannelConfig`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/googleChannelConfig$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The fields to be updated; only fields explicitly provided are updated. If no field mask is provided, all provided fields in the request are updated. To update all fields, provide a field mask of \"*\".",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleChannelConfig"
+},
+"response": {
+"$ref": "GoogleChannelConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"channelConnections": {
+"methods": {
+"create": {
+"description": "Create a new ChannelConnection in a particular project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channelConnections",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.channelConnections.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"channelConnectionId": {
+"description": "Required. The user-provided ID to be assigned to the channel connection.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection in which to add this channel connection.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/channelConnections",
+"request": {
+"$ref": "ChannelConnection"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a single ChannelConnection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channelConnections/{channelConnectionsId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.channelConnections.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the channel connection to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channelConnections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a single ChannelConnection.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channelConnections/{channelConnectionsId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.channelConnections.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the channel connection to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channelConnections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "ChannelConnection"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channelConnections/{channelConnectionsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.channelConnections.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channelConnections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List channel connections.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channelConnections",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.channelConnections.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of channel connections to return on each page. Note: The service may send fewer responses.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token; provide the value from the `next_page_token` field in a previous `ListChannelConnections` call to retrieve the subsequent page. When paginating, all other parameters provided to `ListChannelConnetions` match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection from which to list channel connections.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/channelConnections",
+"response": {
+"$ref": "ListChannelConnectionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channelConnections/{channelConnectionsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.channelConnections.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channelConnections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channelConnections/{channelConnectionsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.channelConnections.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channelConnections/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"channels": {
+"methods": {
+"create": {
+"description": "Create a new channel in a particular project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.channels.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"channelId": {
+"description": "Required. The user-provided ID to be assigned to the channel.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection in which to add this channel.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+parent}/channels",
+"request": {
+"$ref": "Channel"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a single channel.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.channels.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the channel to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a single Channel.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.channels.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the channel to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Channel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.channels.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List channels.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.channels.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"orderBy": {
+"description": "The sorting order of the resources returned. Value should be a comma-separated list of fields. The default sorting order is ascending. To specify descending order for a field, append a `desc` suffix; for example: `name desc, channel_id`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of channels to return on each page. Note: The service may send fewer.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token; provide the value from the `next_page_token` field in a previous `ListChannels` call to retrieve the subsequent page. When paginating, all other parameters provided to `ListChannels` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection to list channels on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/channels",
+"response": {
+"$ref": "ListChannelsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update a single channel.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}",
+"httpMethod": "PATCH",
+"id": "eventarc.projects.locations.channels.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the channel. Must be unique within the location on the project and must be in `projects/{project}/locations/{location}/channels/{channel_id}` format.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The fields to be updated; only fields explicitly provided are updated. If no field mask is provided, all provided fields in the request are updated. To update all fields, provide a field mask of \"*\".",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Channel"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.channels.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/channels/{channelsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.channels.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/channels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"enrollments": {
+"methods": {
+"create": {
+"description": "Create a new Enrollment in a particular project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/enrollments",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.enrollments.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"enrollmentId": {
+"description": "Required. The user-provided ID to be assigned to the Enrollment. It should match the format `^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$`.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection in which to add this enrollment.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+parent}/enrollments",
+"request": {
+"$ref": "Enrollment"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a single Enrollment.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/enrollments/{enrollmentsId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.enrollments.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the Enrollment is not found, the request will succeed but no action will be taken on the server.",
+"location": "query",
+"type": "boolean"
+},
+"etag": {
+"description": "Optional. If provided, the Enrollment will only be deleted if the etag matches the current etag on the resource.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the Enrollment to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/enrollments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a single Enrollment.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/enrollments/{enrollmentsId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.enrollments.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the Enrollment to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/enrollments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Enrollment"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/enrollments/{enrollmentsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.enrollments.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/enrollments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List Enrollments.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/enrollments",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.enrollments.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter field that the list request will filter on. Possible filtersare described in https://google.aip.dev/160.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. The sorting order of the resources returned. Value should be a comma-separated list of fields. The default sorting order is ascending. To specify descending order for a field, append a `desc` suffix; for example: `name desc, update_time`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return on each page. Note: The service may send fewer.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The page token; provide the value from the `next_page_token` field in a previous call to retrieve the subsequent page. When paginating, all other parameters provided must match the previous call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection to list triggers on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/enrollments",
+"response": {
+"$ref": "ListEnrollmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update a single Enrollment.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/enrollments/{enrollmentsId}",
+"httpMethod": "PATCH",
+"id": "eventarc.projects.locations.enrollments.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the Enrollment is not found, a new Enrollment will be created. In this situation, `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. Resource name of the form projects/{project}/locations/{location}/enrollments/{enrollment}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/enrollments/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The fields to be updated; only fields explicitly provided are updated. If no field mask is provided, all provided fields in the request are updated. To update all fields, provide a field mask of \"*\".",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Enrollment"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/enrollments/{enrollmentsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.enrollments.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/enrollments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/enrollments/{enrollmentsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.enrollments.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/enrollments/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"googleApiSources": {
+"methods": {
+"create": {
+"description": "Create a new GoogleApiSource in a particular project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleApiSources",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.googleApiSources.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"googleApiSourceId": {
+"description": "Required. The user-provided ID to be assigned to the GoogleApiSource. It should match the format `^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$`.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection in which to add this google api source.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+parent}/googleApiSources",
+"request": {
+"$ref": "GoogleApiSource"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a single GoogleApiSource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleApiSources/{googleApiSourcesId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.googleApiSources.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the MessageBus is not found, the request will succeed but no action will be taken on the server.",
+"location": "query",
+"type": "boolean"
+},
+"etag": {
+"description": "Optional. If provided, the MessageBus will only be deleted if the etag matches the current etag on the resource.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the GoogleApiSource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/googleApiSources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a single GoogleApiSource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleApiSources/{googleApiSourcesId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.googleApiSources.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the google api source to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/googleApiSources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleApiSource"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleApiSources/{googleApiSourcesId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.googleApiSources.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/googleApiSources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List GoogleApiSources.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleApiSources",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.googleApiSources.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter field that the list request will filter on. Possible filtersare described in https://google.aip.dev/160.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. The sorting order of the resources returned. Value should be a comma-separated list of fields. The default sorting order is ascending. To specify descending order for a field, append a `desc` suffix; for example: `name desc, update_time`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return on each page. Note: The service may send fewer.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The page token; provide the value from the `next_page_token` field in a previous call to retrieve the subsequent page. When paginating, all other parameters provided must match the previous call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection to list GoogleApiSources on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/googleApiSources",
+"response": {
+"$ref": "ListGoogleApiSourcesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update a single GoogleApiSource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleApiSources/{googleApiSourcesId}",
+"httpMethod": "PATCH",
+"id": "eventarc.projects.locations.googleApiSources.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the GoogleApiSource is not found, a new GoogleApiSource will be created. In this situation, `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. Resource name of the form projects/{project}/locations/{location}/googleApiSources/{google_api_source}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/googleApiSources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The fields to be updated; only fields explicitly provided are updated. If no field mask is provided, all provided fields in the request are updated. To update all fields, provide a field mask of \"*\".",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleApiSource"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleApiSources/{googleApiSourcesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.googleApiSources.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/googleApiSources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/googleApiSources/{googleApiSourcesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.googleApiSources.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/googleApiSources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"kafkaSources": {
+"methods": {
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/kafkaSources/{kafkaSourcesId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.kafkaSources.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/kafkaSources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/kafkaSources/{kafkaSourcesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.kafkaSources.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/kafkaSources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/kafkaSources/{kafkaSourcesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.kafkaSources.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/kafkaSources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"messageBuses": {
+"methods": {
+"create": {
+"description": "Create a new MessageBus in a particular project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.messageBuses.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"messageBusId": {
+"description": "Required. The user-provided ID to be assigned to the MessageBus. It should match the format `^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$`.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection in which to add this message bus.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+parent}/messageBuses",
+"request": {
+"$ref": "MessageBus"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a single message bus.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses/{messageBusesId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.messageBuses.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the MessageBus is not found, the request will succeed but no action will be taken on the server.",
+"location": "query",
+"type": "boolean"
+},
+"etag": {
+"description": "Optional. If provided, the MessageBus will only be deleted if the etag matches the current etag on the resource.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the MessageBus to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/messageBuses/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a single MessageBus.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses/{messageBusesId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.messageBuses.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the message bus to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/messageBuses/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "MessageBus"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses/{messageBusesId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.messageBuses.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/messageBuses/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List message buses.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.messageBuses.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter field that the list request will filter on. Possible filtersare described in https://google.aip.dev/160.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. The sorting order of the resources returned. Value should be a comma-separated list of fields. The default sorting order is ascending. To specify descending order for a field, append a `desc` suffix; for example: `name desc, update_time`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return on each page. Note: The service may send fewer.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The page token; provide the value from the `next_page_token` field in a previous call to retrieve the subsequent page. When paginating, all other parameters provided must match the previous call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection to list message buses on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/messageBuses",
+"response": {
+"$ref": "ListMessageBusesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"listEnrollments": {
+"description": "List message bus enrollments.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses/{messageBusesId}:listEnrollments",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.messageBuses.listEnrollments",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of results to return on each page. Note: The service may send fewer.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The page token; provide the value from the `next_page_token` field in a previous call to retrieve the subsequent page. When paginating, all other parameters provided must match the previous call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent message bus to list enrollments on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/messageBuses/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}:listEnrollments",
+"response": {
+"$ref": "ListMessageBusEnrollmentsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update a single message bus.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses/{messageBusesId}",
+"httpMethod": "PATCH",
+"id": "eventarc.projects.locations.messageBuses.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the MessageBus is not found, a new MessageBus will be created. In this situation, `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. Resource name of the form projects/{project}/locations/{location}/messageBuses/{message_bus}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/messageBuses/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The fields to be updated; only fields explicitly provided are updated. If no field mask is provided, all provided fields in the request are updated. To update all fields, provide a field mask of \"*\".",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "MessageBus"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses/{messageBusesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.messageBuses.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/messageBuses/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/messageBuses/{messageBusesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.messageBuses.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/messageBuses/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"request": {
+"$ref": "GoogleLongrunningCancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/operations",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"pipelines": {
+"methods": {
+"create": {
+"description": "Create a new Pipeline in a particular project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pipelines",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.pipelines.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent collection in which to add this pipeline.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pipelineId": {
+"description": "Required. The user-provided ID to be assigned to the Pipeline. It should match the format `^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$`.",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+parent}/pipelines",
+"request": {
+"$ref": "Pipeline"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a single pipeline.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pipelines/{pipelinesId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.pipelines.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the Pipeline is not found, the request will succeed but no action will be taken on the server.",
+"location": "query",
+"type": "boolean"
+},
+"etag": {
+"description": "Optional. If provided, the Pipeline will only be deleted if the etag matches the current etag on the resource.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the Pipeline to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/pipelines/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a single Pipeline.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pipelines/{pipelinesId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.pipelines.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the pipeline to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/pipelines/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Pipeline"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pipelines/{pipelinesId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.pipelines.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/pipelines/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List pipelines.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pipelines",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.pipelines.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter field that the list request will filter on. Possible filters are described in https://google.aip.dev/160.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. The sorting order of the resources returned. Value should be a comma-separated list of fields. The default sorting order is ascending. To specify descending order for a field, append a `desc` suffix; for example: `name desc, update_time`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return on each page. Note: The service may send fewer.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The page token; provide the value from the `next_page_token` field in a previous call to retrieve the subsequent page. When paginating, all other parameters provided must match the previous call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection to list pipelines on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/pipelines",
+"response": {
+"$ref": "ListPipelinesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update a single pipeline.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pipelines/{pipelinesId}",
+"httpMethod": "PATCH",
+"id": "eventarc.projects.locations.pipelines.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the Pipeline is not found, a new Pipeline will be created. In this situation, `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. The resource name of the Pipeline. Must be unique within the location of the project and must be in `projects/{project}/locations/{location}/pipelines/{pipeline}` format.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/pipelines/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The fields to be updated; only fields explicitly provided are updated. If no field mask is provided, all provided fields in the request are updated. To update all fields, provide a field mask of \"*\".",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Pipeline"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pipelines/{pipelinesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.pipelines.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/pipelines/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/pipelines/{pipelinesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.pipelines.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/pipelines/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"providers": {
+"methods": {
+"get": {
+"description": "Get a single Provider.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers/{providersId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.providers.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the provider to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/providers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Provider"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List providers.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/providers",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.providers.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The filter field that the list request will filter on.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "The sorting order of the resources returned. Value should be a comma-separated list of fields. The default sorting oder is ascending. To specify descending order for a field, append a `desc` suffix; for example: `name desc, _id`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of providers to return on each page.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token; provide the value from the `next_page_token` field in a previous `ListProviders` call to retrieve the subsequent page. When paginating, all other parameters provided to `ListProviders` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent of the provider to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/providers",
+"response": {
+"$ref": "ListProvidersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"triggers": {
+"methods": {
+"create": {
+"description": "Create a new trigger in a particular project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/triggers",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.triggers.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent collection in which to add this trigger.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"triggerId": {
+"description": "Required. The user-provided ID to be assigned to the trigger.",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+parent}/triggers",
+"request": {
+"$ref": "Trigger"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a single trigger.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.triggers.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "If set to true, and the trigger is not found, the request will succeed but no action will be taken on the server.",
+"location": "query",
+"type": "boolean"
+},
+"etag": {
+"description": "If provided, the trigger will only be deleted if the etag matches the current etag on the resource.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the trigger to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a single trigger.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.triggers.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the trigger to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Trigger"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.triggers.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List triggers.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/triggers",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.triggers.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filter field. Used to filter the Triggers to be listed. Possible filters are described in https://google.aip.dev/160. For example, using \"?filter=destination:gke\" would list only Triggers with a gke destination.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "The sorting order of the resources returned. Value should be a comma-separated list of fields. The default sorting order is ascending. To specify descending order for a field, append a `desc` suffix; for example: `name desc, trigger_id`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of triggers to return on each page. Note: The service may send fewer.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token; provide the value from the `next_page_token` field in a previous `ListTriggers` call to retrieve the subsequent page. When paginating, all other parameters provided to `ListTriggers` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection to list triggers on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/triggers",
+"response": {
+"$ref": "ListTriggersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update a single trigger.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}",
+"httpMethod": "PATCH",
+"id": "eventarc.projects.locations.triggers.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "If set to true, and the trigger is not found, a new trigger will be created. In this situation, `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The resource name of the trigger. Must be unique within the location of the project and must be in `projects/{project}/locations/{location}/triggers/{trigger}` format.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The fields to be updated; only fields explicitly provided are updated. If no field mask is provided, all provided fields in the request are updated. To update all fields, provide a field mask of \"*\".",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Optional. If set, validate the request and preview the review, but do not post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Trigger"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.triggers.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.triggers.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20250103",
+"rootUrl": "https://eventarc.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Channel": {
+"description": "A representation of the Channel resource. A Channel is a resource on which event providers publish their events. The published events are delivered through the transport associated with the channel. Note that a channel is associated with exactly one event provider.",
+"id": "Channel",
+"properties": {
+"activationToken": {
+"description": "Output only. The activation token for the channel. The token must be used by the provider to register the channel for publishing.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The creation time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"cryptoKeyName": {
+"description": "Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt their event data. It must match the pattern `projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels.",
+"type": "object"
+},
+"name": {
+"description": "Required. The resource name of the channel. Must be unique within the location on the project and must be in `projects/{project}/locations/{location}/channels/{channel_id}` format.",
+"type": "string"
+},
+"provider": {
+"description": "The name of the event provider (e.g. Eventarc SaaS partner) associated with the channel. This provider will be granted permissions to publish events to the channel. Format: `projects/{project}/locations/{location}/providers/{provider_id}`.",
+"type": "string"
+},
+"pubsubTopic": {
+"description": "Output only. The name of the Pub/Sub topic created and managed by Eventarc system as a transport for the event delivery. Format: `projects/{project}/topics/{topic_id}`.",
+"readOnly": true,
+"type": "string"
+},
+"satisfiesPzs": {
+"description": "Output only. Whether or not this Channel satisfies the requirements of physical zone separation",
+"readOnly": true,
+"type": "boolean"
+},
+"state": {
+"description": "Output only. The state of a Channel.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"ACTIVE",
+"INACTIVE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The PENDING state indicates that a Channel has been created successfully and there is a new activation token available for the subscriber to use to convey the Channel to the provider in order to create a Connection.",
+"The ACTIVE state indicates that a Channel has been successfully connected with the event provider. An ACTIVE Channel is ready to receive and route events from the event provider.",
+"The INACTIVE state indicates that the Channel cannot receive events permanently. There are two possible cases this state can happen: 1. The SaaS provider disconnected from this Channel. 2. The Channel activation token has expired but the SaaS provider wasn't connected. To re-establish a Connection with a provider, the subscriber should create a new Channel and give it to the provider."
+],
+"readOnly": true,
+"type": "string"
+},
+"uid": {
+"description": "Output only. Server assigned unique identifier for the channel. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last-modified time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ChannelConnection": {
+"description": "A representation of the ChannelConnection resource. A ChannelConnection is a resource which event providers create during the activation process to establish a connection between the provider and the subscriber channel.",
+"id": "ChannelConnection",
+"properties": {
+"activationToken": {
+"description": "Input only. Activation token for the channel. The token will be used during the creation of ChannelConnection to bind the channel with the provider project. This field will not be stored in the provider resource.",
+"type": "string"
+},
+"channel": {
+"description": "Required. The name of the connected subscriber Channel. This is a weak reference to avoid cross project and cross accounts references. This must be in `projects/{project}/location/{location}/channels/{channel_id}` format.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The creation time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels.",
+"type": "object"
+},
+"name": {
+"description": "Required. The name of the connection.",
+"type": "string"
+},
+"uid": {
+"description": "Output only. Server assigned ID of the resource. The server guarantees uniqueness and immutability until deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last-modified time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudRun": {
+"description": "Represents a Cloud Run destination.",
+"id": "CloudRun",
+"properties": {
+"path": {
+"description": "Optional. The relative path on the Cloud Run service the events should be sent to. The value must conform to the definition of a URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\".",
+"type": "string"
+},
+"region": {
+"description": "Required. The region the Cloud Run service is deployed in.",
+"type": "string"
+},
+"service": {
+"description": "Required. The name of the Cloud Run service being addressed. See https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services. Only services located in the same project as the trigger object can be addressed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Destination": {
+"description": "Represents a target of an invocation over HTTP.",
+"id": "Destination",
+"properties": {
+"cloudFunction": {
+"description": "The Cloud Function resource name. Cloud Functions V1 and V2 are supported. Format: `projects/{project}/locations/{location}/functions/{function}` This is a read-only field. Creating Cloud Functions V1/V2 triggers is only supported via the Cloud Functions product. An error will be returned if the user sets this value.",
+"type": "string"
+},
+"cloudRun": {
+"$ref": "CloudRun",
+"description": "Cloud Run fully-managed resource that receives the events. The resource should be in the same project as the trigger."
+},
+"gke": {
+"$ref": "GKE",
+"description": "A GKE service capable of receiving events. The service should be running in the same project as the trigger."
+},
+"httpEndpoint": {
+"$ref": "HttpEndpoint",
+"description": "An HTTP endpoint destination described by an URI."
+},
+"networkConfig": {
+"$ref": "NetworkConfig",
+"description": "Optional. Network config is used to configure how Eventarc resolves and connect to a destination. This should only be used with HttpEndpoint destination type."
+},
+"workflow": {
+"description": "The resource name of the Workflow whose Executions are triggered by the events. The Workflow resource should be deployed in the same project as the trigger. Format: `projects/{project}/locations/{location}/workflows/{workflow}`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Enrollment": {
+"description": "An enrollment represents a subscription for messages on a particular message bus. It defines a matching criteria for messages on the bus and the subscriber endpoint where matched messages should be delivered.",
+"id": "Enrollment",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource annotations.",
+"type": "object"
+},
+"celMatch": {
+"description": "Required. A CEL expression identifying which messages this enrollment applies to.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The creation time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"destination": {
+"description": "Required. Destination is the Pipeline that the Enrollment is delivering to. It must point to the full resource name of a Pipeline. Format: \"projects/{PROJECT_ID}/locations/{region}/pipelines/{PIPELINE_ID)\"",
+"type": "string"
+},
+"displayName": {
+"description": "Optional. Resource display name.",
+"type": "string"
+},
+"etag": {
+"description": "Output only. This checksum is computed by the server based on the value of other fields, and might be sent only on update and delete requests to ensure that the client has an up-to-date value before proceeding.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels.",
+"type": "object"
+},
+"messageBus": {
+"description": "Required. Resource name of the message bus identifying the source of the messages. It matches the form projects/{project}/locations/{location}/messageBuses/{messageBus}.",
+"type": "string"
+},
+"name": {
+"description": "Identifier. Resource name of the form projects/{project}/locations/{location}/enrollments/{enrollment}",
+"type": "string"
+},
+"uid": {
+"description": "Output only. Server assigned unique identifier for the channel. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last-modified time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventFilter": {
+"description": "Filters events based on exact matches on the CloudEvents attributes.",
+"id": "EventFilter",
+"properties": {
+"attribute": {
+"description": "Required. The name of a CloudEvents attribute. Currently, only a subset of attributes are supported for filtering. You can [retrieve a specific provider's supported event types](/eventarc/docs/list-providers#describe-provider). All triggers MUST provide a filter for the 'type' attribute.",
+"type": "string"
+},
+"operator": {
+"description": "Optional. The operator used for matching the events with the value of the filter. If not specified, only events that have an exact key-value pair specified in the filter are matched. The allowed values are `path_pattern` and `match-path-pattern`. `path_pattern` is only allowed for GCFv1 triggers.",
+"type": "string"
+},
+"value": {
+"description": "Required. The value for the attribute.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EventType": {
+"description": "A representation of the event type resource.",
+"id": "EventType",
+"properties": {
+"description": {
+"description": "Output only. Human friendly description of what the event type is about. For example \"Bucket created in Cloud Storage\".",
+"readOnly": true,
+"type": "string"
+},
+"eventSchemaUri": {
+"description": "Output only. URI for the event schema. For example \"https://github.com/googleapis/google-cloudevents/blob/master/proto/google/events/cloud/storage/v1/events.proto\"",
+"readOnly": true,
+"type": "string"
+},
+"filteringAttributes": {
+"description": "Output only. Filtering attributes for the event type.",
+"items": {
+"$ref": "FilteringAttribute"
+},
+"readOnly": true,
+"type": "array"
+},
+"type": {
+"description": "Output only. The full name of the event type (for example, \"google.cloud.storage.object.v1.finalized\"). In the form of {provider-specific-prefix}.{resource}.{version}.{verb}. Types MUST be versioned and event schemas are guaranteed to remain backward compatible within one version. Note that event type versions and API versions do not need to match.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FilteringAttribute": {
+"description": "A representation of the FilteringAttribute resource. Filtering attributes are per event type.",
+"id": "FilteringAttribute",
+"properties": {
+"attribute": {
+"description": "Output only. Attribute used for filtering the event type.",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Output only. Description of the purpose of the attribute.",
+"readOnly": true,
+"type": "string"
+},
+"pathPatternSupported": {
+"description": "Output only. If true, the attribute accepts matching expressions in the Eventarc PathPattern format.",
+"readOnly": true,
+"type": "boolean"
+},
+"required": {
+"description": "Output only. If true, the triggers for this provider should always specify a filter on these attributes. Trigger creation will fail otherwise.",
+"readOnly": true,
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GKE": {
+"description": "Represents a GKE destination.",
+"id": "GKE",
+"properties": {
+"cluster": {
+"description": "Required. The name of the cluster the GKE service is running in. The cluster must be running in the same project as the trigger being created.",
+"type": "string"
+},
+"location": {
+"description": "Required. The name of the Google Compute Engine in which the cluster resides, which can either be compute zone (for example, us-central1-a) for the zonal clusters or region (for example, us-central1) for regional clusters.",
+"type": "string"
+},
+"namespace": {
+"description": "Required. The namespace the GKE service is running in.",
+"type": "string"
+},
+"path": {
+"description": "Optional. The relative path on the GKE service the events should be sent to. The value must conform to the definition of a URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\".",
+"type": "string"
+},
+"service": {
+"description": "Required. Name of the GKE service.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiSource": {
+"description": "A GoogleApiSource represents a subscription of 1P events from a MessageBus.",
+"id": "GoogleApiSource",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource annotations.",
+"type": "object"
+},
+"createTime": {
+"description": "Output only. The creation time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"cryptoKeyName": {
+"description": "Optional. Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt their event data. It must match the pattern `projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
+"type": "string"
+},
+"destination": {
+"description": "Required. Destination is the message bus that the GoogleApiSource is delivering to. It must be point to the full resource name of a MessageBus. Format: \"projects/{PROJECT_ID}/locations/{region}/messagesBuses/{MESSAGE_BUS_ID)",
+"type": "string"
+},
+"displayName": {
+"description": "Optional. Resource display name.",
+"type": "string"
+},
+"etag": {
+"description": "Output only. This checksum is computed by the server based on the value of other fields, and might be sent only on update and delete requests to ensure that the client has an up-to-date value before proceeding.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels.",
+"type": "object"
+},
+"loggingConfig": {
+"$ref": "LoggingConfig",
+"description": "Optional. Config to control Platform logging for the GoogleApiSource."
+},
+"name": {
+"description": "Identifier. Resource name of the form projects/{project}/locations/{location}/googleApiSources/{google_api_source}",
+"type": "string"
+},
+"uid": {
+"description": "Output only. Server assigned unique identifier for the channel. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last-modified time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleChannelConfig": {
+"description": "A GoogleChannelConfig is a resource that stores the custom settings respected by Eventarc first-party triggers in the matching region. Once configured, first-party event data will be protected using the specified custom managed encryption key instead of Google-managed encryption keys.",
+"id": "GoogleChannelConfig",
+"properties": {
+"cryptoKeyName": {
+"description": "Optional. Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt their event data. It must match the pattern `projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
+"type": "string"
+},
+"name": {
+"description": "Required. The resource name of the config. Must be in the format of, `projects/{project}/locations/{location}/googleChannelConfig`.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last-modified time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineDestination": {
+"description": "Represents a target of an invocation over HTTP.",
+"id": "GoogleCloudEventarcV1PipelineDestination",
+"properties": {
+"authenticationConfig": {
+"$ref": "GoogleCloudEventarcV1PipelineDestinationAuthenticationConfig",
+"description": "Optional. An authentication config used to authenticate message requests, such that destinations can verify the source. For example, this can be used with private GCP destinations that require GCP credentials to access like Cloud Run. This field is optional and should be set only by users interested in authenticated push"
+},
+"httpEndpoint": {
+"$ref": "GoogleCloudEventarcV1PipelineDestinationHttpEndpoint",
+"description": "Optional. An HTTP endpoint destination described by an URI. If a DNS FQDN is provided as the endpoint, Pipeline will create a peering zone to the consumer VPC and forward DNS requests to the VPC specified by network config to resolve the service endpoint. See: https://cloud.google.com/dns/docs/zones/zones-overview#peering_zones"
+},
+"messageBus": {
+"description": "Optional. The resource name of the Message Bus to which events should be published. The Message Bus resource should exist in the same project as the Pipeline. Format: `projects/{project}/locations/{location}/messageBuses/{message_bus}`",
+"type": "string"
+},
+"networkConfig": {
+"$ref": "GoogleCloudEventarcV1PipelineDestinationNetworkConfig",
+"description": "Optional. Network config is used to configure how Pipeline resolves and connects to a destination."
+},
+"outputPayloadFormat": {
+"$ref": "GoogleCloudEventarcV1PipelineMessagePayloadFormat",
+"description": "Optional. The message format before it is delivered to the destination. If not set, the message will be delivered in the format it was originally delivered to the Pipeline. This field can only be set if Pipeline.input_payload_format is also set."
+},
+"topic": {
+"description": "Optional. The resource name of the Pub/Sub topic to which events should be published. Format: `projects/{project}/locations/{location}/topics/{topic}`",
+"type": "string"
+},
+"workflow": {
+"description": "Optional. The resource name of the Workflow whose Executions are triggered by the events. The Workflow resource should be deployed in the same project as the Pipeline. Format: `projects/{project}/locations/{location}/workflows/{workflow}`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineDestinationAuthenticationConfig": {
+"description": "Represents a config used to authenticate message requests.",
+"id": "GoogleCloudEventarcV1PipelineDestinationAuthenticationConfig",
+"properties": {
+"googleOidc": {
+"$ref": "GoogleCloudEventarcV1PipelineDestinationAuthenticationConfigOidcToken",
+"description": "Optional. This authenticate method will apply Google OIDC tokens signed by a GCP service account to the requests."
+},
+"oauthToken": {
+"$ref": "GoogleCloudEventarcV1PipelineDestinationAuthenticationConfigOAuthToken",
+"description": "Optional. If specified, an [OAuth token](https://developers.google.com/identity/protocols/OAuth2) will be generated and attached as an `Authorization` header in the HTTP request. This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com."
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineDestinationAuthenticationConfigOAuthToken": {
+"description": "Contains information needed for generating an [OAuth token](https://developers.google.com/identity/protocols/OAuth2). This type of authorization should generally only be used when calling Google APIs hosted on *.googleapis.com.",
+"id": "GoogleCloudEventarcV1PipelineDestinationAuthenticationConfigOAuthToken",
+"properties": {
+"scope": {
+"description": "Optional. OAuth scope to be used for generating OAuth access token. If not specified, \"https://www.googleapis.com/auth/cloud-platform\" will be used.",
+"type": "string"
+},
+"serviceAccount": {
+"description": "Required. Service account email used to generate the [OAuth token](https://developers.google.com/identity/protocols/OAuth2). The principal who calls this API must have iam.serviceAccounts.actAs permission in the service account. See https://cloud.google.com/iam/docs/understanding-service-accounts for more information. Eventarc service agents must have roles/roles/iam.serviceAccountTokenCreator role to allow Pipeline to create OAuth2 tokens for authenticated requests.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineDestinationAuthenticationConfigOidcToken": {
+"description": "Represents a config used to authenticate with a Google OIDC token using a GCP service account. Use this authentication method to invoke your Cloud Run and Cloud Functions destinations or HTTP endpoints that support Google OIDC.",
+"id": "GoogleCloudEventarcV1PipelineDestinationAuthenticationConfigOidcToken",
+"properties": {
+"audience": {
+"description": "Optional. Audience to be used to generate the OIDC Token. The audience claim identifies the recipient that the JWT is intended for. If unspecified, the destination URI will be used.",
+"type": "string"
+},
+"serviceAccount": {
+"description": "Required. Service account email used to generate the OIDC Token. The principal who calls this API must have iam.serviceAccounts.actAs permission in the service account. See https://cloud.google.com/iam/docs/understanding-service-accounts for more information. Eventarc service agents must have roles/roles/iam.serviceAccountTokenCreator role to allow the Pipeline to create OpenID tokens for authenticated requests.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineDestinationHttpEndpoint": {
+"description": "Represents a HTTP endpoint destination.",
+"id": "GoogleCloudEventarcV1PipelineDestinationHttpEndpoint",
+"properties": {
+"messageBindingTemplate": {
+"description": "Optional. The CEL expression used to modify how the destination-bound HTTP request is constructed. If a binding expression is not specified here, the message is treated as a CloudEvent and is mapped to the HTTP request according to the CloudEvent HTTP Protocol Binding Binary Content Mode (https://github.com/cloudevents/spec/blob/main/cloudevents/bindings/http-protocol-binding.md#31-binary-content-mode). In this representation, all fields except the `data` and `datacontenttype` field on the message are mapped to HTTP request headers with a prefix of `ce-`. To construct the HTTP request payload and the value of the content-type HTTP header, the payload format is defined as follows: 1) Use the output_payload_format_type on the Pipeline.Destination if it is set, else: 2) Use the input_payload_format_type on the Pipeline if it is set, else: 3) Treat the payload as opaque binary data. The `data` field of the message is converted to the payload format or left as-is for case 3) and then attached as the payload of the HTTP request. The `content-type` header on the HTTP request is set to the payload format type or left empty for case 3). However, if a mediation has updated the `datacontenttype` field on the message so that it is not the same as the payload format type but it is still a prefix of the payload format type, then the `content-type` header on the HTTP request is set to this `datacontenttype` value. For example, if the `datacontenttype` is \"application/json\" and the payload format type is \"application/json; charset=utf-8\", then the `content-type` header on the HTTP request is set to \"application/json; charset=utf-8\". If a non-empty binding expression is specified then this expression is used to modify the default CloudEvent HTTP Protocol Binding Binary Content representation. The result of the CEL expression must be a map of key/value pairs which is used as follows: - If a map named `headers` exists on the result of the expression, then its key/value pairs are directly mapped to the HTTP request headers. The headers values are constructed from the corresponding value type's canonical representation. If the `headers` field doesn't exist then the resulting HTTP request will be the headers of the CloudEvent HTTP Binding Binary Content Mode representation of the final message. Note: If the specified binding expression, has updated the `datacontenttype` field on the message so that it is not the same as the payload format type but it is still a prefix of the payload format type, then the `content-type` header in the `headers` map is set to this `datacontenttype` value. - If a field named `body` exists on the result of the expression then its value is directly mapped to the body of the request. If the value of the `body` field is of type bytes or string then it is used for the HTTP request body as-is, with no conversion. If the body field is of any other type then it is converted to a JSON string. If the body field does not exist then the resulting payload of the HTTP request will be data value of the CloudEvent HTTP Binding Binary Content Mode representation of the final message as described earlier. - Any other fields in the resulting expression will be ignored. The CEL expression may access the incoming CloudEvent message in its definition, as follows: - The `data` field of the incoming CloudEvent message can be accessed using the `message.data` value. Subfields of `message.data` may also be accessed if an input_payload_format has been specified on the Pipeline. - Each attribute of the incoming CloudEvent message can be accessed using the `message.` value, where is replaced with the name of the attribute. - Existing headers can be accessed in the CEL expression using the `headers` variable. The `headers` variable defines a map of key/value pairs corresponding to the HTTP headers of the CloudEvent HTTP Binding Binary Content Mode representation of the final message as described earlier. For example, the following CEL expression can be used to construct an HTTP request by adding an additional header to the HTTP headers of the CloudEvent HTTP Binding Binary Content Mode representation of the final message and by overwriting the body of the request: ``` { \"headers\": headers.merge({\"new-header-key\": \"new-header-value\"}), \"body\": \"new-body\" } ``` - The default binding for the message payload can be accessed using the `body` variable. It conatins a string representation of the message payload in the format specified by the `output_payload_format` field. If the `input_payload_format` field is not set, the `body` variable contains the same message payload bytes that were published. Additionally, the following CEL extension functions are provided for use in this CEL expression: - toBase64Url: map.toBase64Url() -> string - Converts a CelValue to a base64url encoded string - toJsonString: map.toJsonString() -> string - Converts a CelValue to a JSON string - merge: map1.merge(map2) -> map3 - Merges the passed CEL map with the existing CEL map the function is applied to. - If the same key exists in both maps, if the key's value is type map both maps are merged else the value from the passed map is used. - denormalize: map.denormalize() -> map - Denormalizes a CEL map such that every value of type map or key in the map is expanded to return a single level map. - The resulting keys are \".\" separated indices of the map keys. - For example: { \"a\": 1, \"b\": { \"c\": 2, \"d\": 3 } \"e\": [4, 5] } .denormalize() -> { \"a\": 1, \"b.c\": 2, \"b.d\": 3, \"e.0\": 4, \"e.1\": 5 } - setField: map.setField(key, value) -> message - Sets the field of the message with the given key to the given value. - If the field is not present it will be added. - If the field is present it will be overwritten. - The key can be a dot separated path to set a field in a nested message. - Key must be of type string. - Value may be any valid type. - removeFields: map.removeFields([key1, key2, ...]) -> message - Removes the fields of the map with the given keys. - The keys can be a dot separated path to remove a field in a nested message. - If a key is not found it will be ignored. - Keys must be of type string. - toMap: [map1, map2, ...].toMap() -> map - Converts a CEL list of CEL maps to a single CEL map - toCloudEventJsonWithPayloadFormat: message.toCloudEventJsonWithPayloadFormat() -> map - Converts a message to the corresponding structure of JSON format for CloudEvents. - It converts `data` to destination payload format specified in `output_payload_format`. If `output_payload_format` is not set, the data will remain unchanged. - It also sets the corresponding datacontenttype of the CloudEvent, as indicated by `output_payload_format`. If no `output_payload_format` is set it will use the value of the \"datacontenttype\" attribute on the CloudEvent if present, else remove \"datacontenttype\" attribute. - This function expects that the content of the message will adhere to the standard CloudEvent format. If it doesn't then this function will fail. - The result is a CEL map that corresponds to the JSON representation of the CloudEvent. To convert that data to a JSON string it can be chained with the toJsonString function. The Pipeline expects that the message it receives adheres to the standard CloudEvent format. If it doesn't then the outgoing message request may fail with a persistent error.",
+"type": "string"
+},
+"uri": {
+"description": "Required. The URI of the HTTP enpdoint. The value must be a RFC2396 URI string. Examples: `https://svc.us-central1.p.local:8080/route`. Only the HTTPS protocol is supported.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineDestinationNetworkConfig": {
+"description": "Represents a network config to be used for destination resolution and connectivity.",
+"id": "GoogleCloudEventarcV1PipelineDestinationNetworkConfig",
+"properties": {
+"networkAttachment": {
+"description": "Required. Name of the NetworkAttachment that allows access to the consumer VPC. Format: `projects/{PROJECT_ID}/regions/{REGION}/networkAttachments/{NETWORK_ATTACHMENT_NAME}`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineMediation": {
+"description": "Mediation defines different ways to modify the Pipeline.",
+"id": "GoogleCloudEventarcV1PipelineMediation",
+"properties": {
+"transformation": {
+"$ref": "GoogleCloudEventarcV1PipelineMediationTransformation",
+"description": "Optional. How the Pipeline is to transform messages"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineMediationTransformation": {
+"description": "Transformation defines the way to transform an incoming message.",
+"id": "GoogleCloudEventarcV1PipelineMediationTransformation",
+"properties": {
+"transformationTemplate": {
+"description": "Optional. The CEL expression template to apply to transform messages. The following CEL extension functions are provided for use in this CEL expression: - merge: map1.merge(map2) -> map3 - Merges the passed CEL map with the existing CEL map the function is applied to. - If the same key exists in both maps, if the key's value is type map both maps are merged else the value from the passed map is used. - denormalize: map.denormalize() -> map - Denormalizes a CEL map such that every value of type map or key in the map is expanded to return a single level map. - The resulting keys are \".\" separated indices of the map keys. - For example: { \"a\": 1, \"b\": { \"c\": 2, \"d\": 3 } \"e\": [4, 5] } .denormalize() -> { \"a\": 1, \"b.c\": 2, \"b.d\": 3, \"e.0\": 4, \"e.1\": 5 } - setField: map.setField(key, value) -> message - Sets the field of the message with the given key to the given value. - If the field is not present it will be added. - If the field is present it will be overwritten. - The key can be a dot separated path to set a field in a nested message. - Key must be of type string. - Value may be any valid type. - removeFields: map.removeFields([key1, key2, ...]) -> message - Removes the fields of the map with the given keys. - The keys can be a dot separated path to remove a field in a nested message. - If a key is not found it will be ignored. - Keys must be of type string. - toMap: [map1, map2, ...].toMap() -> map - Converts a CEL list of CEL maps to a single CEL map - toDestinationPayloadFormat(): message.data.toDestinationPayloadFormat() -> string or bytes - Converts the message data to the destination payload format specified in Pipeline.Destination.output_payload_format - This function is meant to be applied to the message.data field. - If the destination payload format is not set, the function will return the message data unchanged. - toCloudEventJsonWithPayloadFormat: message.toCloudEventJsonWithPayloadFormat() -> map - Converts a message to the corresponding structure of JSON format for CloudEvents - This function applies toDestinationPayloadFormat() to the message data. It also sets the corresponding datacontenttype of the CloudEvent, as indicated by Pipeline.Destination.output_payload_format. If no output_payload_format is set it will use the existing datacontenttype on the CloudEvent if present, else leave datacontenttype absent. - This function expects that the content of the message will adhere to the standard CloudEvent format. If it doesn't then this function will fail. - The result is a CEL map that corresponds to the JSON representation of the CloudEvent. To convert that data to a JSON string it can be chained with the toJsonString function.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineMessagePayloadFormat": {
+"description": "Represents the format of message data.",
+"id": "GoogleCloudEventarcV1PipelineMessagePayloadFormat",
+"properties": {
+"avro": {
+"$ref": "GoogleCloudEventarcV1PipelineMessagePayloadFormatAvroFormat",
+"description": "Optional. Avro format."
+},
+"json": {
+"$ref": "GoogleCloudEventarcV1PipelineMessagePayloadFormatJsonFormat",
+"description": "Optional. JSON format."
+},
+"protobuf": {
+"$ref": "GoogleCloudEventarcV1PipelineMessagePayloadFormatProtobufFormat",
+"description": "Optional. Protobuf format."
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineMessagePayloadFormatAvroFormat": {
+"description": "The format of an AVRO message payload.",
+"id": "GoogleCloudEventarcV1PipelineMessagePayloadFormatAvroFormat",
+"properties": {
+"schemaDefinition": {
+"description": "Optional. The entire schema definition is stored in this field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineMessagePayloadFormatJsonFormat": {
+"description": "The format of a JSON message payload.",
+"id": "GoogleCloudEventarcV1PipelineMessagePayloadFormatJsonFormat",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineMessagePayloadFormatProtobufFormat": {
+"description": "The format of a Protobuf message payload.",
+"id": "GoogleCloudEventarcV1PipelineMessagePayloadFormatProtobufFormat",
+"properties": {
+"schemaDefinition": {
+"description": "Optional. The entire schema definition is stored in this field.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudEventarcV1PipelineRetryPolicy": {
+"description": "The retry policy configuration for the Pipeline. The pipeline exponentially backs off in case the destination is non responsive or returns a retryable error code. The default semantics are as follows: The backoff starts with a 5 second delay and doubles the delay after each failed attempt (10 seconds, 20 seconds, 40 seconds, etc.). The delay is capped at 60 seconds by default. Please note that if you set the min_retry_delay and max_retry_delay fields to the same value this will make the duration between retries constant.",
+"id": "GoogleCloudEventarcV1PipelineRetryPolicy",
+"properties": {
+"maxAttempts": {
+"description": "Optional. The maximum number of delivery attempts for any message. The value must be between 1 and 100. The default value for this field is 5.",
+"format": "int32",
+"type": "integer"
+},
+"maxRetryDelay": {
+"description": "Optional. The maximum amount of seconds to wait between retry attempts. The value must be between 1 and 600. The default value for this field is 60.",
+"format": "google-duration",
+"type": "string"
+},
+"minRetryDelay": {
+"description": "Optional. The minimum amount of seconds to wait between retry attempts. The value must be between 1 and 600. The default value for this field is 5.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningCancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "GoogleLongrunningCancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleLongrunningListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "GoogleLongrunningListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "GoogleLongrunningOperation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningOperation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunningOperation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpEndpoint": {
+"description": "Represents a HTTP endpoint destination.",
+"id": "HttpEndpoint",
+"properties": {
+"uri": {
+"description": "Required. The URI of the HTTP enpdoint. The value must be a RFC2396 URI string. Examples: `http://10.10.10.8:80/route`, `http://svc.us-central1.p.local:8080/`. Only HTTP and HTTPS protocols are supported. The host can be either a static IP addressable from the VPC specified by the network config, or an internal DNS hostname of the service resolvable via Cloud DNS.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListChannelConnectionsResponse": {
+"description": "The response message for the `ListChannelConnections` method.",
+"id": "ListChannelConnectionsResponse",
+"properties": {
+"channelConnections": {
+"description": "The requested channel connections, up to the number specified in `page_size`.",
+"items": {
+"$ref": "ChannelConnection"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A page token that can be sent to `ListChannelConnections` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListChannelsResponse": {
+"description": "The response message for the `ListChannels` method.",
+"id": "ListChannelsResponse",
+"properties": {
+"channels": {
+"description": "The requested channels, up to the number specified in `page_size`.",
+"items": {
+"$ref": "Channel"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A page token that can be sent to `ListChannels` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListEnrollmentsResponse": {
+"description": "The response message for the `ListEnrollments` method.",
+"id": "ListEnrollmentsResponse",
+"properties": {
+"enrollments": {
+"description": "The requested Enrollments, up to the number specified in `page_size`.",
+"items": {
+"$ref": "Enrollment"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A page token that can be sent to `ListEnrollments` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListGoogleApiSourcesResponse": {
+"description": "The response message for the `ListGoogleApiSources` method.",
+"id": "ListGoogleApiSourcesResponse",
+"properties": {
+"googleApiSources": {
+"description": "The requested GoogleApiSources, up to the number specified in `page_size`.",
+"items": {
+"$ref": "GoogleApiSource"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A page token that can be sent to `ListMessageBusEnrollments` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMessageBusEnrollmentsResponse": {
+"description": "The response message for the `ListMessageBusEnrollments` method.`",
+"id": "ListMessageBusEnrollmentsResponse",
+"properties": {
+"enrollments": {
+"description": "The requested enrollments, up to the number specified in `page_size`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A page token that can be sent to `ListMessageBusEnrollments` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListMessageBusesResponse": {
+"description": "The response message for the `ListMessageBuses` method.",
+"id": "ListMessageBusesResponse",
+"properties": {
+"messageBuses": {
+"description": "The requested message buses, up to the number specified in `page_size`.",
+"items": {
+"$ref": "MessageBus"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A page token that can be sent to `ListMessageBuses` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListPipelinesResponse": {
+"description": "The response message for the ListPipelines method.",
+"id": "ListPipelinesResponse",
+"properties": {
+"nextPageToken": {
+"description": "A page token that can be sent to `ListPipelines` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"pipelines": {
+"description": "The requested pipelines, up to the number specified in `page_size`.",
+"items": {
+"$ref": "Pipeline"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListProvidersResponse": {
+"description": "The response message for the `ListProviders` method.",
+"id": "ListProvidersResponse",
+"properties": {
+"nextPageToken": {
+"description": "A page token that can be sent to `ListProviders` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"providers": {
+"description": "The requested providers, up to the number specified in `page_size`.",
+"items": {
+"$ref": "Provider"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTriggersResponse": {
+"description": "The response message for the `ListTriggers` method.",
+"id": "ListTriggersResponse",
+"properties": {
+"nextPageToken": {
+"description": "A page token that can be sent to `ListTriggers` to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"triggers": {
+"description": "The requested triggers, up to the number specified in `page_size`.",
+"items": {
+"$ref": "Trigger"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LoggingConfig": {
+"description": "The configuration for Platform Telemetry logging for Eventarc Advanced resources.",
+"id": "LoggingConfig",
+"properties": {
+"logSeverity": {
+"description": "Optional. The minimum severity of logs that will be sent to Stackdriver/Platform Telemetry. Logs at severitiy \u2265 this value will be sent, unless it is NONE.",
+"enum": [
+"LOG_SEVERITY_UNSPECIFIED",
+"NONE",
+"DEBUG",
+"INFO",
+"NOTICE",
+"WARNING",
+"ERROR",
+"CRITICAL",
+"ALERT",
+"EMERGENCY"
+],
+"enumDescriptions": [
+"Log severity is not specified. This value is treated the same as NONE, but is used to distinguish between no update and update to NONE in update_masks.",
+"Default value at resource creation, presence of this value must be treated as no logging/disable logging.",
+"Debug or trace level logging.",
+"Routine information, such as ongoing status or performance.",
+"Normal but significant events, such as start up, shut down, or a configuration change.",
+"Warning events might cause problems.",
+"Error events are likely to cause problems.",
+"Critical events cause more severe problems or outages.",
+"A person must take action immediately.",
+"One or more systems are unusable."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"MessageBus": {
+"description": "MessageBus for the messages flowing through the system. The admin has visibility and control over the messages being published and consumed and can restrict publishers and subscribers to only a subset of data available in the system by defining authorization policies.",
+"id": "MessageBus",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource annotations.",
+"type": "object"
+},
+"createTime": {
+"description": "Output only. The creation time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"cryptoKeyName": {
+"description": "Optional. Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt their event data. It must match the pattern `projects/*/locations/*/keyRings/*/cryptoKeys/*`.",
+"type": "string"
+},
+"displayName": {
+"description": "Optional. Resource display name.",
+"type": "string"
+},
+"etag": {
+"description": "Output only. This checksum is computed by the server based on the value of other fields, and might be sent only on update and delete requests to ensure that the client has an up-to-date value before proceeding.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Resource labels.",
+"type": "object"
+},
+"loggingConfig": {
+"$ref": "LoggingConfig",
+"description": "Optional. Config to control Platform logging for the Message Bus. This log configuration is applied to the Message Bus itself, and all the Enrollments attached to it."
+},
+"name": {
+"description": "Identifier. Resource name of the form projects/{project}/locations/{location}/messageBuses/{message_bus}",
+"type": "string"
+},
+"uid": {
+"description": "Output only. Server assigned unique identifier for the channel. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last-modified time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"NetworkConfig": {
+"description": "Network Configuration that can be inherited by other protos.",
+"id": "NetworkConfig",
+"properties": {
+"networkAttachment": {
+"description": "Required. Name of the NetworkAttachment that allows access to the customer's VPC. Format: `projects/{PROJECT_ID}/regions/{REGION}/networkAttachments/{NETWORK_ATTACHMENT_NAME}`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Pipeline": {
+"description": "A representation of the Pipeline resource.",
+"id": "Pipeline",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. User-defined annotations. See https://google.aip.dev/128#annotations.",
+"type": "object"
+},
+"createTime": {
+"description": "Output only. The creation time. A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"cryptoKeyName": {
+"description": "Optional. Resource name of a KMS crypto key (managed by the user) used to encrypt/decrypt the event data. If not set, an internal Google-owned key will be used to encrypt messages. It must match the pattern \"projects/{project}/locations/{location}/keyRings/{keyring}/cryptoKeys/{key}\".",
+"type": "string"
+},
+"destinations": {
+"description": "Required. List of destinations to which messages will be forwarded. Currently, exactly one destination is supported per Pipeline.",
+"items": {
+"$ref": "GoogleCloudEventarcV1PipelineDestination"
+},
+"type": "array"
+},
+"displayName": {
+"description": "Optional. Display name of resource.",
+"type": "string"
+},
+"etag": {
+"description": "Output only. This checksum is computed by the server based on the value of other fields, and might be sent only on create requests to ensure that the client has an up-to-date value before proceeding.",
+"type": "string"
+},
+"inputPayloadFormat": {
+"$ref": "GoogleCloudEventarcV1PipelineMessagePayloadFormat",
+"description": "Optional. The payload format expected for the messages received by the Pipeline. If input_payload_format is set then any messages not matching this format will be treated as persistent errors. If input_payload_format is not set, then the message data will be treated as an opaque binary and no output format can be set on the Pipeline through the Pipeline.Destination.output_payload_format field. Any Mediations on the Pipeline that involve access to the data field will fail as persistent errors."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. User labels attached to the Pipeline that can be used to group resources. An object containing a list of \"key\": value pairs. Example: { \"name\": \"wrench\", \"mass\": \"1.3kg\", \"count\": \"3\" }.",
+"type": "object"
+},
+"loggingConfig": {
+"$ref": "LoggingConfig",
+"description": "Optional. Config to control Platform Logging for Pipelines."
+},
+"mediations": {
+"description": "Optional. List of mediation operations to be performed on the message. Currently, only one Transformation operation is allowed in each Pipeline.",
+"items": {
+"$ref": "GoogleCloudEventarcV1PipelineMediation"
+},
+"type": "array"
+},
+"name": {
+"description": "Identifier. The resource name of the Pipeline. Must be unique within the location of the project and must be in `projects/{project}/locations/{location}/pipelines/{pipeline}` format.",
+"type": "string"
+},
+"retryPolicy": {
+"$ref": "GoogleCloudEventarcV1PipelineRetryPolicy",
+"description": "Optional. The retry policy to use in the pipeline."
+},
+"uid": {
+"description": "Output only. Server-assigned unique identifier for the Pipeline. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last-modified time. A timestamp in RFC3339 UTC \"Zulu\" format, with nanosecond resolution and up to nine fractional digits. Examples: \"2014-10-02T15:01:23Z\" and \"2014-10-02T15:01:23.045123456Z\".",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Provider": {
+"description": "A representation of the Provider resource.",
+"id": "Provider",
+"properties": {
+"displayName": {
+"description": "Output only. Human friendly name for the Provider. For example \"Cloud Storage\".",
+"readOnly": true,
+"type": "string"
+},
+"eventTypes": {
+"description": "Output only. Event types for this provider.",
+"items": {
+"$ref": "EventType"
+},
+"readOnly": true,
+"type": "array"
+},
+"name": {
+"description": "Output only. In `projects/{project}/locations/{location}/providers/{provider_id}` format.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Pubsub": {
+"description": "Represents a Pub/Sub transport.",
+"id": "Pubsub",
+"properties": {
+"subscription": {
+"description": "Output only. The name of the Pub/Sub subscription created and managed by Eventarc as a transport for the event delivery. Format: `projects/{PROJECT_ID}/subscriptions/{SUBSCRIPTION_NAME}`.",
+"readOnly": true,
+"type": "string"
+},
+"topic": {
+"description": "Optional. The name of the Pub/Sub topic created and managed by Eventarc as a transport for the event delivery. Format: `projects/{PROJECT_ID}/topics/{TOPIC_NAME}`. You can set an existing topic for triggers of the type `google.cloud.pubsub.topic.v1.messagePublished`. The topic you provide here is not deleted by Eventarc at trigger deletion.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StateCondition": {
+"description": "A condition that is part of the trigger state computation.",
+"id": "StateCondition",
+"properties": {
+"code": {
+"description": "The canonical code of the condition.",
+"enum": [
+"OK",
+"CANCELLED",
+"UNKNOWN",
+"INVALID_ARGUMENT",
+"DEADLINE_EXCEEDED",
+"NOT_FOUND",
+"ALREADY_EXISTS",
+"PERMISSION_DENIED",
+"UNAUTHENTICATED",
+"RESOURCE_EXHAUSTED",
+"FAILED_PRECONDITION",
+"ABORTED",
+"OUT_OF_RANGE",
+"UNIMPLEMENTED",
+"INTERNAL",
+"UNAVAILABLE",
+"DATA_LOSS"
+],
+"enumDescriptions": [
+"Not an error; returned on success. HTTP Mapping: 200 OK",
+"The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request",
+"Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error",
+"The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request",
+"The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout",
+"Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found",
+"The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict",
+"The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden",
+"The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized",
+"Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests",
+"The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an \"rmdir\" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request",
+"The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict",
+"The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request",
+"The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented",
+"Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error",
+"The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable",
+"Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error"
+],
+"type": "string"
+},
+"message": {
+"description": "Human-readable message.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Transport": {
+"description": "Represents the transport intermediaries created for the trigger to deliver events.",
+"id": "Transport",
+"properties": {
+"pubsub": {
+"$ref": "Pubsub",
+"description": "The Pub/Sub topic and subscription used by Eventarc as a transport intermediary."
+}
+},
+"type": "object"
+},
+"Trigger": {
+"description": "A representation of the trigger resource.",
+"id": "Trigger",
+"properties": {
+"channel": {
+"description": "Optional. The name of the channel associated with the trigger in `projects/{project}/locations/{location}/channels/{channel}` format. You must provide a channel to receive events from Eventarc SaaS partners.",
+"type": "string"
+},
+"conditions": {
+"additionalProperties": {
+"$ref": "StateCondition"
+},
+"description": "Output only. The reason(s) why a trigger is in FAILED state.",
+"readOnly": true,
+"type": "object"
+},
+"createTime": {
+"description": "Output only. The creation time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"destination": {
+"$ref": "Destination",
+"description": "Required. Destination specifies where the events should be sent to."
+},
+"etag": {
+"description": "Output only. This checksum is computed by the server based on the value of other fields, and might be sent only on create requests to ensure that the client has an up-to-date value before proceeding.",
+"readOnly": true,
+"type": "string"
+},
+"eventDataContentType": {
+"description": "Optional. EventDataContentType specifies the type of payload in MIME format that is expected from the CloudEvent data field. This is set to `application/json` if the value is not defined.",
+"type": "string"
+},
+"eventFilters": {
+"description": "Required. Unordered list. The list of filters that applies to event attributes. Only events that match all the provided filters are sent to the destination.",
+"items": {
+"$ref": "EventFilter"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. User labels attached to the triggers that can be used to group resources.",
+"type": "object"
+},
+"name": {
+"description": "Required. The resource name of the trigger. Must be unique within the location of the project and must be in `projects/{project}/locations/{location}/triggers/{trigger}` format.",
+"type": "string"
+},
+"satisfiesPzs": {
+"description": "Output only. Whether or not this Trigger satisfies the requirements of physical zone separation",
+"readOnly": true,
+"type": "boolean"
+},
+"serviceAccount": {
+"description": "Optional. The IAM service account email associated with the trigger. The service account represents the identity of the trigger. The `iam.serviceAccounts.actAs` permission must be granted on the service account to allow a principal to impersonate the service account. For more information, see the [Roles and permissions](/eventarc/docs/all-roles-permissions) page specific to the trigger destination.",
+"type": "string"
+},
+"transport": {
+"$ref": "Transport",
+"description": "Optional. To deliver messages, Eventarc might use other Google Cloud products as a transport intermediary. This field contains a reference to that transport intermediary. This information can be used for debugging purposes."
+},
+"uid": {
+"description": "Output only. Server-assigned unique identifier for the trigger. The value is a UUID4 string and guaranteed to remain unchanged until the resource is deleted.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last-modified time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Eventarc API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/eventarc.v1beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/eventarc.v1beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..aeb4662698c1b400829611d6b2d5813133a385b2
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/eventarc.v1beta1.json
@@ -0,0 +1,1103 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://eventarc.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Eventarc",
+"description": "Build event-driven applications on Google Cloud Platform.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/eventarc",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "eventarc:v1beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://eventarc.mtls.googleapis.com/",
+"name": "eventarc",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1beta1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"triggers": {
+"methods": {
+"create": {
+"description": "Create a new trigger in a particular project and location.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/triggers",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.triggers.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent collection in which to add this trigger.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"triggerId": {
+"description": "Required. The user-provided ID to be assigned to the trigger.",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Required. If set, validate the request and preview the review, but do not actually post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta1/{+parent}/triggers",
+"request": {
+"$ref": "Trigger"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete a single trigger.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}",
+"httpMethod": "DELETE",
+"id": "eventarc.projects.locations.triggers.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "If set to true, and the trigger is not found, the request will succeed but no action will be taken on the server.",
+"location": "query",
+"type": "boolean"
+},
+"etag": {
+"description": "If provided, the trigger will only be deleted if the etag matches the current etag on the resource.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The name of the trigger to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "Required. If set, validate the request and preview the review, but do not actually post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Get a single trigger.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.triggers.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the trigger to get.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Trigger"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.triggers.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List triggers.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/triggers",
+"httpMethod": "GET",
+"id": "eventarc.projects.locations.triggers.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"orderBy": {
+"description": "The sorting order of the resources returned. Value should be a comma separated list of fields. The default sorting oder is ascending. To specify descending order for a field, append a ` desc` suffix; for example: `name desc, trigger_id`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of triggers to return on each page. Note: The service may send fewer.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token; provide the value from the `next_page_token` field in a previous `ListTriggers` call to retrieve the subsequent page. When paginating, all other parameters provided to `ListTriggers` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent collection to list triggers on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/triggers",
+"response": {
+"$ref": "ListTriggersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update a single trigger.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}",
+"httpMethod": "PATCH",
+"id": "eventarc.projects.locations.triggers.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "If set to true, and the trigger is not found, a new trigger will be created. In this situation, `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The resource name of the trigger. Must be unique within the location on the project and must in `projects/{project}/locations/{location}/triggers/{trigger}` format.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The fields to be updated; only fields explicitly provided will be updated. If no field mask is provided, all provided fields in the request will be updated. To update all fields, provide a field mask of \"*\".",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+},
+"validateOnly": {
+"description": "Required. If set, validate the request and preview the review, but do not actually post it.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Trigger"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.triggers.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/triggers/{triggersId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "eventarc.projects.locations.triggers.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/triggers/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20240417",
+"rootUrl": "https://eventarc.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"CloudRunService": {
+"description": "Represents a Cloud Run service destination.",
+"id": "CloudRunService",
+"properties": {
+"path": {
+"description": "Optional. The relative path on the Cloud Run service the events should be sent to. The value must conform to the definition of URI path segment (section 3.3 of RFC2396). Examples: \"/route\", \"route\", \"route/subroute\".",
+"type": "string"
+},
+"region": {
+"description": "Required. The region the Cloud Run service is deployed in.",
+"type": "string"
+},
+"service": {
+"description": "Required. The name of the Cloud run service being addressed. See https://cloud.google.com/run/docs/reference/rest/v1/namespaces.services. Only services located in the same project of the trigger object can be addressed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Destination": {
+"description": "Represents a target of an invocation over HTTP.",
+"id": "Destination",
+"properties": {
+"cloudRunService": {
+"$ref": "CloudRunService",
+"description": "Cloud Run fully-managed service that receives the events. The service should be running in the same project as the trigger."
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTriggersResponse": {
+"description": "The response message for the ListTriggers method.",
+"id": "ListTriggersResponse",
+"properties": {
+"nextPageToken": {
+"description": "A page token that can be sent to ListTriggers to request the next page. If this is empty, then there are no more pages.",
+"type": "string"
+},
+"triggers": {
+"description": "The requested triggers, up to the number specified in `page_size`.",
+"items": {
+"$ref": "Trigger"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Unreachable resources, if any.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MatchingCriteria": {
+"description": "Matches events based on exact matches on the CloudEvents attributes.",
+"id": "MatchingCriteria",
+"properties": {
+"attribute": {
+"description": "Required. The name of a CloudEvents attribute. Currently, only a subset of attributes can be specified. All triggers MUST provide a matching criteria for the 'type' attribute.",
+"type": "string"
+},
+"value": {
+"description": "Required. The value for the attribute.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Pubsub": {
+"description": "Represents a Pub/Sub transport.",
+"id": "Pubsub",
+"properties": {
+"subscription": {
+"description": "Output only. The name of the Pub/Sub subscription created and managed by Eventarc system as a transport for the event delivery. Format: `projects/{PROJECT_ID}/subscriptions/{SUBSCRIPTION_NAME}`.",
+"readOnly": true,
+"type": "string"
+},
+"topic": {
+"description": "Optional. The name of the Pub/Sub topic created and managed by Eventarc system as a transport for the event delivery. Format: `projects/{PROJECT_ID}/topics/{TOPIC_NAME}`. You may set an existing topic for triggers of the type `google.cloud.pubsub.topic.v1.messagePublished` only. The topic you provide here will not be deleted by Eventarc at trigger deletion.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Transport": {
+"description": "Represents the transport intermediaries created for the trigger in order to deliver events.",
+"id": "Transport",
+"properties": {
+"pubsub": {
+"$ref": "Pubsub",
+"description": "The Pub/Sub topic and subscription used by Eventarc as delivery intermediary."
+}
+},
+"type": "object"
+},
+"Trigger": {
+"description": "A representation of the trigger resource.",
+"id": "Trigger",
+"properties": {
+"createTime": {
+"description": "Output only. The creation time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"destination": {
+"$ref": "Destination",
+"description": "Required. Destination specifies where the events should be sent to."
+},
+"etag": {
+"description": "Output only. This checksum is computed by the server based on the value of other fields, and may be sent only on create requests to ensure the client has an up-to-date value before proceeding.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. User labels attached to the triggers that can be used to group resources.",
+"type": "object"
+},
+"matchingCriteria": {
+"description": "Required. Unordered list. The criteria by which events are filtered. Only events that match with this criteria will be sent to the destination.",
+"items": {
+"$ref": "MatchingCriteria"
+},
+"type": "array"
+},
+"name": {
+"description": "Required. The resource name of the trigger. Must be unique within the location on the project and must in `projects/{project}/locations/{location}/triggers/{trigger}` format.",
+"type": "string"
+},
+"serviceAccount": {
+"description": "Optional. The IAM service account email associated with the trigger. The service account represents the identity of the trigger. The principal who calls this API must have `iam.serviceAccounts.actAs` permission in the service account. See https://cloud.google.com/iam/docs/understanding-service-accounts?hl=en#sa_common for more information. For Cloud Run destinations, this service account is used to generate identity tokens when invoking the service. See https://cloud.google.com/run/docs/triggering/pubsub-push#create-service-account for information on how to invoke authenticated Cloud Run services. In order to create Audit Log triggers, the service account should also have 'eventarc.events.receiveAuditLogV1Written' permission.",
+"type": "string"
+},
+"transport": {
+"$ref": "Transport",
+"description": "Output only. In order to deliver messages, Eventarc may use other Google Cloud products as transport intermediary. This field contains a reference to that transport intermediary. This information can be used for debugging purposes.",
+"readOnly": true
+},
+"updateTime": {
+"description": "Output only. The last-modified time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Eventarc API",
+"version": "v1beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/genomics.v1alpha2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/genomics.v1alpha2.json
new file mode 100644
index 0000000000000000000000000000000000000000..ebadf4939a5e34317e40be5eb2ee13c4de9c6411
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/genomics.v1alpha2.json
@@ -0,0 +1,1293 @@
+{
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/cloud-platform": {
+ "description": "See, edit, configure, and delete your Google Cloud Platform data"
+ },
+ "https://www.googleapis.com/auth/compute": {
+ "description": "View and manage your Google Compute Engine resources"
+ },
+ "https://www.googleapis.com/auth/genomics": {
+ "description": "View and manage Genomics data"
+ }
+ }
+ }
+ },
+ "basePath": "",
+ "baseUrl": "https://genomics.googleapis.com/",
+ "batchPath": "batch",
+ "description": "Uploads, processes, queries, and searches Genomics data in the cloud.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://cloud.google.com/genomics",
+ "fullyEncodeReservedExpansion": true,
+ "icons": {
+ "x16": "http://www.google.com/images/icons/product/search-16.gif",
+ "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "id": "genomics:v1alpha2",
+ "kind": "discovery#restDescription",
+ "mtlsRootUrl": "https://genomics.mtls.googleapis.com/",
+ "name": "genomics",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "$.xgafv": {
+ "description": "V1 error format.",
+ "enum": [
+ "1",
+ "2"
+ ],
+ "enumDescriptions": [
+ "v1 error format",
+ "v2 error format"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "access_token": {
+ "description": "OAuth access token.",
+ "location": "query",
+ "type": "string"
+ },
+ "alt": {
+ "default": "json",
+ "description": "Data format for response.",
+ "enum": [
+ "json",
+ "media",
+ "proto"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json",
+ "Media download with context-dependent Content-Type",
+ "Responses with Content-Type of application/x-protobuf"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "callback": {
+ "description": "JSONP",
+ "location": "query",
+ "type": "string"
+ },
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
+ "type": "string"
+ },
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
+ "type": "string"
+ },
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
+ "type": "string"
+ },
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+ "location": "query",
+ "type": "string"
+ },
+ "uploadType": {
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ },
+ "upload_protocol": {
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "protocol": "rest",
+ "resources": {
+ "operations": {
+ "methods": {
+ "cancel": {
+ "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission: * `genomics.operations.cancel`",
+ "flatPath": "v1alpha2/operations/{operationsId}:cancel",
+ "httpMethod": "POST",
+ "id": "genomics.operations.cancel",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "name": {
+ "description": "The name of the operation resource to be cancelled.",
+ "location": "path",
+ "pattern": "^operations/.*$",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "v1alpha2/{+name}:cancel",
+ "request": {
+ "$ref": "CancelOperationRequest"
+ },
+ "response": {
+ "$ref": "Empty"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ },
+ "get": {
+ "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission: * `genomics.operations.get`",
+ "flatPath": "v1alpha2/operations/{operationsId}",
+ "httpMethod": "GET",
+ "id": "genomics.operations.get",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "name": {
+ "description": "The name of the operation resource.",
+ "location": "path",
+ "pattern": "^operations/.*$",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "v1alpha2/{+name}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ },
+ "list": {
+ "description": "Lists operations that match the specified filter in the request. Authorization requires the following [Google IAM](https://cloud.google.com/iam) permission: * `genomics.operations.list`",
+ "flatPath": "v1alpha2/operations",
+ "httpMethod": "GET",
+ "id": "genomics.operations.list",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "A string for filtering Operations. In v2alpha1, the following filter fields are supported: * createTime: The time this job was created * events: The set of event (names) that have occurred while running the pipeline. The : operator can be used to determine if a particular event has occurred. * error: If the pipeline is running, this value is NULL. Once the pipeline finishes, the value is the standard Google error code. * labels.key or labels.\"key with space\" where key is a label key. * done: If the pipeline is running, this value is false. Once the pipeline finishes, the value is true. In v1 and v1alpha2, the following filter fields are supported: * projectId: Required. Corresponds to OperationMetadata.projectId. * createTime: The time this job was created, in seconds from the [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `>=` and/or `<=` operators. * status: Can be `RUNNING`, `SUCCESS`, `FAILURE`, or `CANCELED`. Only one status may be specified. * labels.key where key is a label key. Examples: * `projectId = my-project AND createTime >= 1432140000` * `projectId = my-project AND createTime >= 1432140000 AND createTime <= 1432150000 AND status = RUNNING` * `projectId = my-project AND labels.color = *` * `projectId = my-project AND labels.color = red`",
+ "location": "query",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name of the operation's parent resource.",
+ "location": "path",
+ "pattern": "^operations$",
+ "required": true,
+ "type": "string"
+ },
+ "pageSize": {
+ "description": "The maximum number of results to return. The maximum value is 256.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "pageToken": {
+ "description": "The standard list page token.",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "v1alpha2/{+name}",
+ "response": {
+ "$ref": "ListOperationsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ }
+ }
+ },
+ "pipelines": {
+ "methods": {
+ "create": {
+ "description": "Creates a pipeline that can be run later. Create takes a Pipeline that has all fields other than `pipelineId` populated, and then returns the same pipeline with `pipelineId` populated. This id can be used to run the pipeline. Caller must have WRITE permission to the project.",
+ "flatPath": "v1alpha2/pipelines",
+ "httpMethod": "POST",
+ "id": "genomics.pipelines.create",
+ "parameterOrder": [],
+ "parameters": {},
+ "path": "v1alpha2/pipelines",
+ "request": {
+ "$ref": "Pipeline"
+ },
+ "response": {
+ "$ref": "Pipeline"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ },
+ "delete": {
+ "description": "Deletes a pipeline based on ID. Caller must have WRITE permission to the project.",
+ "flatPath": "v1alpha2/pipelines/{pipelineId}",
+ "httpMethod": "DELETE",
+ "id": "genomics.pipelines.delete",
+ "parameterOrder": [
+ "pipelineId"
+ ],
+ "parameters": {
+ "pipelineId": {
+ "description": "Caller must have WRITE access to the project in which this pipeline is defined.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "v1alpha2/pipelines/{pipelineId}",
+ "response": {
+ "$ref": "Empty"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ },
+ "get": {
+ "description": "Retrieves a pipeline based on ID. Caller must have READ permission to the project.",
+ "flatPath": "v1alpha2/pipelines/{pipelineId}",
+ "httpMethod": "GET",
+ "id": "genomics.pipelines.get",
+ "parameterOrder": [
+ "pipelineId"
+ ],
+ "parameters": {
+ "pipelineId": {
+ "description": "Caller must have READ access to the project in which this pipeline is defined.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "v1alpha2/pipelines/{pipelineId}",
+ "response": {
+ "$ref": "Pipeline"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ },
+ "getControllerConfig": {
+ "description": "Gets controller configuration information. Should only be called by VMs created by the Pipelines Service and not by end users.",
+ "flatPath": "v1alpha2/pipelines:getControllerConfig",
+ "httpMethod": "GET",
+ "id": "genomics.pipelines.getControllerConfig",
+ "parameterOrder": [],
+ "parameters": {
+ "operationId": {
+ "description": "The operation to retrieve controller configuration for.",
+ "location": "query",
+ "type": "string"
+ },
+ "validationToken": {
+ "format": "uint64",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "v1alpha2/pipelines:getControllerConfig",
+ "response": {
+ "$ref": "ControllerConfig"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ },
+ "list": {
+ "description": "Lists pipelines. Caller must have READ permission to the project.",
+ "flatPath": "v1alpha2/pipelines",
+ "httpMethod": "GET",
+ "id": "genomics.pipelines.list",
+ "parameterOrder": [],
+ "parameters": {
+ "namePrefix": {
+ "description": "Pipelines with names that match this prefix should be returned. If unspecified, all pipelines in the project, up to `pageSize`, will be returned.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageSize": {
+ "description": "Number of pipelines to return at once. Defaults to 256, and max is 2048.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "pageToken": {
+ "description": "Token to use to indicate where to start getting results. If unspecified, returns the first page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "projectId": {
+ "description": "Required. The name of the project to search for pipelines. Caller must have READ access to this project.",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "v1alpha2/pipelines",
+ "response": {
+ "$ref": "ListPipelinesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ },
+ "run": {
+ "description": "Runs a pipeline. If `pipelineId` is specified in the request, then run a saved pipeline. If `ephemeralPipeline` is specified, then run that pipeline once without saving a copy. The caller must have READ permission to the project where the pipeline is stored and WRITE permission to the project where the pipeline will be run, as VMs will be created and storage will be used. If a pipeline operation is still running after 6 days, it will be canceled.",
+ "flatPath": "v1alpha2/pipelines:run",
+ "httpMethod": "POST",
+ "id": "genomics.pipelines.run",
+ "parameterOrder": [],
+ "parameters": {},
+ "path": "v1alpha2/pipelines:run",
+ "request": {
+ "$ref": "RunPipelineRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ },
+ "setOperationStatus": {
+ "description": "Sets status of a given operation. Any new timestamps (as determined by description) are appended to TimestampEvents. Should only be called by VMs created by the Pipelines Service and not by end users.",
+ "flatPath": "v1alpha2/pipelines:setOperationStatus",
+ "httpMethod": "PUT",
+ "id": "genomics.pipelines.setOperationStatus",
+ "parameterOrder": [],
+ "parameters": {},
+ "path": "v1alpha2/pipelines:setOperationStatus",
+ "request": {
+ "$ref": "SetOperationStatusRequest"
+ },
+ "response": {
+ "$ref": "Empty"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/genomics"
+ ]
+ }
+ }
+ }
+ },
+ "revision": "20210503",
+ "rootUrl": "https://genomics.googleapis.com/",
+ "schemas": {
+ "CancelOperationRequest": {
+ "description": "The request message for Operations.CancelOperation.",
+ "id": "CancelOperationRequest",
+ "properties": {},
+ "type": "object"
+ },
+ "ComputeEngine": {
+ "description": "Describes a Compute Engine resource that is being managed by a running pipeline.",
+ "id": "ComputeEngine",
+ "properties": {
+ "diskNames": {
+ "description": "The names of the disks that were created for this pipeline.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "instanceName": {
+ "description": "The instance on which the operation is running.",
+ "type": "string"
+ },
+ "machineType": {
+ "description": "The machine type of the instance.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The availability zone in which the instance resides.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ContainerKilledEvent": {
+ "description": "An event generated when a container is forcibly terminated by the worker. Currently, this only occurs when the container outlives the timeout specified by the user.",
+ "id": "ContainerKilledEvent",
+ "properties": {
+ "actionId": {
+ "description": "The numeric ID of the action that started the container.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "ContainerStartedEvent": {
+ "description": "An event generated when a container starts.",
+ "id": "ContainerStartedEvent",
+ "properties": {
+ "actionId": {
+ "description": "The numeric ID of the action that started this container.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "ipAddress": {
+ "description": "The public IP address that can be used to connect to the container. This field is only populated when at least one port mapping is present. If the instance was created with a private address, this field will be empty even if port mappings exist.",
+ "type": "string"
+ },
+ "portMappings": {
+ "additionalProperties": {
+ "format": "int32",
+ "type": "integer"
+ },
+ "description": "The container-to-host port mappings installed for this container. This set will contain any ports exposed using the `PUBLISH_EXPOSED_PORTS` flag as well as any specified in the `Action` definition.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ContainerStoppedEvent": {
+ "description": "An event generated when a container exits.",
+ "id": "ContainerStoppedEvent",
+ "properties": {
+ "actionId": {
+ "description": "The numeric ID of the action that started this container.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "exitStatus": {
+ "description": "The exit status of the container.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "stderr": {
+ "description": "The tail end of any content written to standard error by the container. If the content emits large amounts of debugging noise or contains sensitive information, you can prevent the content from being printed by setting the `DISABLE_STANDARD_ERROR_CAPTURE` flag. Note that only a small amount of the end of the stream is captured here. The entire stream is stored in the `/google/logs` directory mounted into each action, and can be copied off the machine as described elsewhere.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ControllerConfig": {
+ "description": "Stores the information that the controller will fetch from the server in order to run. Should only be used by VMs created by the Pipelines Service and not by end users.",
+ "id": "ControllerConfig",
+ "properties": {
+ "cmd": {
+ "type": "string"
+ },
+ "disks": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "gcsLogPath": {
+ "type": "string"
+ },
+ "gcsSinks": {
+ "additionalProperties": {
+ "$ref": "RepeatedString"
+ },
+ "type": "object"
+ },
+ "gcsSources": {
+ "additionalProperties": {
+ "$ref": "RepeatedString"
+ },
+ "type": "object"
+ },
+ "image": {
+ "type": "string"
+ },
+ "machineType": {
+ "type": "string"
+ },
+ "vars": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DelayedEvent": {
+ "description": "An event generated whenever a resource limitation or transient error delays execution of a pipeline that was otherwise ready to run.",
+ "id": "DelayedEvent",
+ "properties": {
+ "cause": {
+ "description": "A textual description of the cause of the delay. The string can change without notice because it is often generated by another service (such as Compute Engine).",
+ "type": "string"
+ },
+ "metrics": {
+ "description": "If the delay was caused by a resource shortage, this field lists the Compute Engine metrics that are preventing this operation from running (for example, `CPUS` or `INSTANCES`). If the particular metric is not known, a single `UNKNOWN` metric will be present.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Disk": {
+ "description": "A Google Compute Engine disk resource specification.",
+ "id": "Disk",
+ "properties": {
+ "autoDelete": {
+ "description": "Deprecated. Disks created by the Pipelines API will be deleted at the end of the pipeline run, regardless of what this field is set to.",
+ "type": "boolean"
+ },
+ "mountPoint": {
+ "description": "Required at create time and cannot be overridden at run time. Specifies the path in the docker container where files on this disk should be located. For example, if `mountPoint` is `/mnt/disk`, and the parameter has `localPath` `inputs/file.txt`, the docker container can access the data at `/mnt/disk/inputs/file.txt`.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Required. The name of the disk that can be used in the pipeline parameters. Must be 1 - 63 characters. The name \"boot\" is reserved for system use.",
+ "type": "string"
+ },
+ "readOnly": {
+ "description": "Specifies how a sourced-base persistent disk will be mounted. See https://cloud.google.com/compute/docs/disks/persistent-disks#use_multi_instances for more details. Can only be set at create time.",
+ "type": "boolean"
+ },
+ "sizeGb": {
+ "description": "The size of the disk. Defaults to 500 (GB). This field is not applicable for local SSD.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "source": {
+ "description": "The full or partial URL of the persistent disk to attach. See https://cloud.google.com/compute/docs/reference/latest/instances#resource and https://cloud.google.com/compute/docs/disks/persistent-disks#snapshots for more details.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Required. The type of the disk to create.",
+ "enum": [
+ "TYPE_UNSPECIFIED",
+ "PERSISTENT_HDD",
+ "PERSISTENT_SSD",
+ "LOCAL_SSD"
+ ],
+ "enumDescriptions": [
+ "Default disk type. Use one of the other options below.",
+ "Specifies a Google Compute Engine persistent hard disk. See https://cloud.google.com/compute/docs/disks/#pdspecs for details.",
+ "Specifies a Google Compute Engine persistent solid-state disk. See https://cloud.google.com/compute/docs/disks/#pdspecs for details.",
+ "Specifies a Google Compute Engine local SSD. See https://cloud.google.com/compute/docs/disks/local-ssd for details."
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DockerExecutor": {
+ "description": "The Docker execuctor specification.",
+ "id": "DockerExecutor",
+ "properties": {
+ "cmd": {
+ "description": "Required. The command or newline delimited script to run. The command string will be executed within a bash shell. If the command exits with a non-zero exit code, output parameter de-localization will be skipped and the pipeline operation's `error` field will be populated. Maximum command string length is 16384.",
+ "type": "string"
+ },
+ "imageName": {
+ "description": "Required. Image name from either Docker Hub or Google Container Registry. Users that run pipelines must have READ access to the image.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Empty": {
+ "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.",
+ "id": "Empty",
+ "properties": {},
+ "type": "object"
+ },
+ "Event": {
+ "description": "Carries information about events that occur during pipeline execution.",
+ "id": "Event",
+ "properties": {
+ "description": {
+ "description": "A human-readable description of the event. Note that these strings can change at any time without notice. Any application logic must use the information in the `details` field.",
+ "type": "string"
+ },
+ "details": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "description": "Machine-readable details about the event.",
+ "type": "object"
+ },
+ "timestamp": {
+ "description": "The time at which the event occurred.",
+ "format": "google-datetime",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "FailedEvent": {
+ "description": "An event generated when the execution of a pipeline has failed. Note that other events can continue to occur after this event.",
+ "id": "FailedEvent",
+ "properties": {
+ "cause": {
+ "description": "The human-readable description of the cause of the failure.",
+ "type": "string"
+ },
+ "code": {
+ "description": "The Google standard error code that best describes this failure.",
+ "enum": [
+ "OK",
+ "CANCELLED",
+ "UNKNOWN",
+ "INVALID_ARGUMENT",
+ "DEADLINE_EXCEEDED",
+ "NOT_FOUND",
+ "ALREADY_EXISTS",
+ "PERMISSION_DENIED",
+ "UNAUTHENTICATED",
+ "RESOURCE_EXHAUSTED",
+ "FAILED_PRECONDITION",
+ "ABORTED",
+ "OUT_OF_RANGE",
+ "UNIMPLEMENTED",
+ "INTERNAL",
+ "UNAVAILABLE",
+ "DATA_LOSS"
+ ],
+ "enumDescriptions": [
+ "Not an error; returned on success HTTP Mapping: 200 OK",
+ "The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request",
+ "Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error",
+ "The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request",
+ "The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout",
+ "Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found",
+ "The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict",
+ "The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden",
+ "The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized",
+ "Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests",
+ "The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an \"rmdir\" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request",
+ "The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict",
+ "The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request",
+ "The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented",
+ "Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error",
+ "The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable",
+ "Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ListOperationsResponse": {
+ "description": "The response message for Operations.ListOperations.",
+ "id": "ListOperationsResponse",
+ "properties": {
+ "nextPageToken": {
+ "description": "The standard List next-page token.",
+ "type": "string"
+ },
+ "operations": {
+ "description": "A list of operations that matches the specified filter in the request.",
+ "items": {
+ "$ref": "Operation"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ListPipelinesResponse": {
+ "description": "The response of ListPipelines. Contains at most `pageSize` pipelines. If it contains `pageSize` pipelines, and more pipelines exist, then `nextPageToken` will be populated and should be used as the `pageToken` argument to a subsequent ListPipelines request.",
+ "id": "ListPipelinesResponse",
+ "properties": {
+ "nextPageToken": {
+ "description": "The token to use to get the next page of results.",
+ "type": "string"
+ },
+ "pipelines": {
+ "description": "The matched pipelines.",
+ "items": {
+ "$ref": "Pipeline"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "LocalCopy": {
+ "description": "LocalCopy defines how a remote file should be copied to and from the VM.",
+ "id": "LocalCopy",
+ "properties": {
+ "disk": {
+ "description": "Required. The name of the disk where this parameter is located. Can be the name of one of the disks specified in the Resources field, or \"boot\", which represents the Docker instance's boot disk and has a mount point of `/`.",
+ "type": "string"
+ },
+ "path": {
+ "description": "Required. The path within the user's docker container where this input should be localized to and from, relative to the specified disk's mount point. For example: file.txt,",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LoggingOptions": {
+ "description": "The logging options for the pipeline run.",
+ "id": "LoggingOptions",
+ "properties": {
+ "gcsPath": {
+ "description": "The location in Google Cloud Storage to which the pipeline logs will be copied. Can be specified as a fully qualified directory path, in which case logs will be output with a unique identifier as the filename in that directory, or as a fully specified path, which must end in `.log`, in which case that path will be used, and the user must ensure that logs are not overwritten. Stdout and stderr logs from the run are also generated and output as `-stdout.log` and `-stderr.log`.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Operation": {
+ "description": "This resource represents a long-running operation that is the result of a network API call.",
+ "id": "Operation",
+ "properties": {
+ "done": {
+ "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+ "type": "boolean"
+ },
+ "error": {
+ "$ref": "Status",
+ "description": "The error result of the operation in case of failure or cancellation."
+ },
+ "metadata": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "description": "An OperationMetadata or Metadata object. This will always be returned with the Operation.",
+ "type": "object"
+ },
+ "name": {
+ "description": "The server-assigned name, which is only unique within the same service that originally returns it. For example: `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`",
+ "type": "string"
+ },
+ "response": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "description": "An Empty object.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "OperationEvent": {
+ "description": "An event that occurred during an Operation.",
+ "id": "OperationEvent",
+ "properties": {
+ "description": {
+ "description": "Required description of event.",
+ "type": "string"
+ },
+ "endTime": {
+ "description": "Optional time of when event finished. An event can have a start time and no finish time. If an event has a finish time, there must be a start time.",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "startTime": {
+ "description": "Optional time of when event started.",
+ "format": "google-datetime",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "OperationMetadata": {
+ "description": "Metadata describing an Operation.",
+ "id": "OperationMetadata",
+ "properties": {
+ "clientId": {
+ "description": "This field is deprecated. Use `labels` instead. Optionally provided by the caller when submitting the request that creates the operation.",
+ "type": "string"
+ },
+ "createTime": {
+ "description": "The time at which the job was submitted to the Genomics service.",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "endTime": {
+ "description": "The time at which the job stopped running.",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "events": {
+ "description": "Optional event messages that were generated during the job's execution. This also contains any warnings that were generated during import or export.",
+ "items": {
+ "$ref": "OperationEvent"
+ },
+ "type": "array"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Optionally provided by the caller when submitting the request that creates the operation.",
+ "type": "object"
+ },
+ "projectId": {
+ "description": "The Google Cloud Project in which the job is scoped.",
+ "type": "string"
+ },
+ "request": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "description": "The original request that started the operation. Note that this will be in current version of the API. If the operation was started with v1beta2 API and a GetOperation is performed on v1 API, a v1 request will be returned.",
+ "type": "object"
+ },
+ "runtimeMetadata": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "description": "Runtime metadata on this Operation.",
+ "type": "object"
+ },
+ "startTime": {
+ "description": "The time at which the job began to run.",
+ "format": "google-datetime",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Pipeline": {
+ "description": "The pipeline object. Represents a transformation from a set of input parameters to a set of output parameters. The transformation is defined as a docker image and command to run within that image. Each pipeline is run on a Google Compute Engine VM. A pipeline can be created with the `create` method and then later run with the `run` method, or a pipeline can be defined and run all at once with the `run` method.",
+ "id": "Pipeline",
+ "properties": {
+ "description": {
+ "description": "User-specified description.",
+ "type": "string"
+ },
+ "docker": {
+ "$ref": "DockerExecutor",
+ "description": "Specifies the docker run information."
+ },
+ "inputParameters": {
+ "description": "Input parameters of the pipeline.",
+ "items": {
+ "$ref": "PipelineParameter"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "Required. A user specified pipeline name that does not have to be unique. This name can be used for filtering Pipelines in ListPipelines.",
+ "type": "string"
+ },
+ "outputParameters": {
+ "description": "Output parameters of the pipeline.",
+ "items": {
+ "$ref": "PipelineParameter"
+ },
+ "type": "array"
+ },
+ "pipelineId": {
+ "description": "Unique pipeline id that is generated by the service when CreatePipeline is called. Cannot be specified in the Pipeline used in the CreatePipelineRequest, and will be populated in the response to CreatePipeline and all subsequent Get and List calls. Indicates that the service has registered this pipeline.",
+ "type": "string"
+ },
+ "projectId": {
+ "description": "Required. The project in which to create the pipeline. The caller must have WRITE access.",
+ "type": "string"
+ },
+ "resources": {
+ "$ref": "PipelineResources",
+ "description": "Required. Specifies resource requirements for the pipeline run. Required fields: * minimumCpuCores * minimumRamGb"
+ }
+ },
+ "type": "object"
+ },
+ "PipelineParameter": {
+ "description": "Parameters facilitate setting and delivering data into the pipeline's execution environment. They are defined at create time, with optional defaults, and can be overridden at run time. If `localCopy` is unset, then the parameter specifies a string that is passed as-is into the pipeline, as the value of the environment variable with the given name. A default value can be optionally specified at create time. The default can be overridden at run time using the inputs map. If no default is given, a value must be supplied at runtime. If `localCopy` is defined, then the parameter specifies a data source or sink, both in Google Cloud Storage and on the Docker container where the pipeline computation is run. The service account associated with the Pipeline (by default the project's Compute Engine service account) must have access to the Google Cloud Storage paths. At run time, the Google Cloud Storage paths can be overridden if a default was provided at create time, or must be set otherwise. The pipeline runner should add a key/value pair to either the inputs or outputs map. The indicated data copies will be carried out before/after pipeline execution, just as if the corresponding arguments were provided to `gsutil cp`. For example: Given the following `PipelineParameter`, specified in the `inputParameters` list: ``` {name: \"input_file\", localCopy: {path: \"file.txt\", disk: \"pd1\"}} ``` where `disk` is defined in the `PipelineResources` object as: ``` {name: \"pd1\", mountPoint: \"/mnt/disk/\"} ``` We create a disk named `pd1`, mount it on the host VM, and map `/mnt/pd1` to `/mnt/disk` in the docker container. At runtime, an entry for `input_file` would be required in the inputs map, such as: ``` inputs[\"input_file\"] = \"gs://my-bucket/bar.txt\" ``` This would generate the following gsutil call: ``` gsutil cp gs://my-bucket/bar.txt /mnt/pd1/file.txt ``` The file `/mnt/pd1/file.txt` maps to `/mnt/disk/file.txt` in the Docker container. Acceptable paths are: Google Cloud storage pathLocal path file file glob directory For outputs, the direction of the copy is reversed: ``` gsutil cp /mnt/disk/file.txt gs://my-bucket/bar.txt ``` Acceptable paths are: Local pathGoogle Cloud Storage path file file file directory - directory must already exist glob directory - directory will be created if it doesn't exist One restriction due to docker limitations, is that for outputs that are found on the boot disk, the local path cannot be a glob and must be a file.",
+ "id": "PipelineParameter",
+ "properties": {
+ "defaultValue": {
+ "description": "The default value for this parameter. Can be overridden at runtime. If `localCopy` is present, then this must be a Google Cloud Storage path beginning with `gs://`.",
+ "type": "string"
+ },
+ "description": {
+ "description": "Human-readable description.",
+ "type": "string"
+ },
+ "localCopy": {
+ "$ref": "LocalCopy",
+ "description": "If present, this parameter is marked for copying to and from the VM. `LocalCopy` indicates where on the VM the file should be. The value given to this parameter (either at runtime or using `defaultValue`) must be the remote path where the file should be."
+ },
+ "name": {
+ "description": "Required. Name of the parameter - the pipeline runner uses this string as the key to the input and output maps in RunPipeline.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "PipelineResources": {
+ "description": "The system resources for the pipeline run.",
+ "id": "PipelineResources",
+ "properties": {
+ "acceleratorCount": {
+ "description": "Optional. The number of accelerators of the specified type to attach. By specifying this parameter, you will download and install the following third-party software onto your managed Compute Engine instances: NVIDIA\u00ae Tesla\u00ae drivers and NVIDIA\u00ae CUDA toolkit.",
+ "format": "int64",
+ "type": "string"
+ },
+ "acceleratorType": {
+ "description": "Optional. The Compute Engine defined accelerator type. By specifying this parameter, you will download and install the following third-party software onto your managed Compute Engine instances: NVIDIA\u00ae Tesla\u00ae drivers and NVIDIA\u00ae CUDA toolkit. Please see https://cloud.google.com/compute/docs/gpus/ for a list of available accelerator types.",
+ "type": "string"
+ },
+ "bootDiskSizeGb": {
+ "description": "The size of the boot disk. Defaults to 10 (GB).",
+ "format": "int32",
+ "type": "integer"
+ },
+ "disks": {
+ "description": "Disks to attach.",
+ "items": {
+ "$ref": "Disk"
+ },
+ "type": "array"
+ },
+ "minimumCpuCores": {
+ "description": "The minimum number of cores to use. Defaults to 1.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "minimumRamGb": {
+ "description": "The minimum amount of RAM to use. Defaults to 3.75 (GB)",
+ "format": "double",
+ "type": "number"
+ },
+ "noAddress": {
+ "description": "Whether to assign an external IP to the instance. This is an experimental feature that may go away. Defaults to false. Corresponds to `--no_address` flag for [gcloud compute instances create] (https://cloud.google.com/sdk/gcloud/reference/compute/instances/create). In order to use this, must be true for both create time and run time. Cannot be true at run time if false at create time. If you need to ssh into a private IP VM for debugging, you can ssh to a public VM and then ssh into the private VM's Internal IP. If noAddress is set, this pipeline run may only load docker images from Google Container Registry and not Docker Hub. Before using this, you must [configure access to Google services from internal IPs](https://cloud.google.com/compute/docs/configure-private-google-access#configuring_access_to_google_services_from_internal_ips).",
+ "type": "boolean"
+ },
+ "preemptible": {
+ "description": "Whether to use preemptible VMs. Defaults to `false`. In order to use this, must be true for both create time and run time. Cannot be true at run time if false at create time.",
+ "type": "boolean"
+ },
+ "zones": {
+ "description": "List of Google Compute Engine availability zones to which resource creation will restricted. If empty, any zone may be chosen.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "PullStartedEvent": {
+ "description": "An event generated when the worker starts pulling an image.",
+ "id": "PullStartedEvent",
+ "properties": {
+ "imageUri": {
+ "description": "The URI of the image that was pulled.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "PullStoppedEvent": {
+ "description": "An event generated when the worker stops pulling an image.",
+ "id": "PullStoppedEvent",
+ "properties": {
+ "imageUri": {
+ "description": "The URI of the image that was pulled.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RepeatedString": {
+ "id": "RepeatedString",
+ "properties": {
+ "values": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RunPipelineArgs": {
+ "description": "The pipeline run arguments.",
+ "id": "RunPipelineArgs",
+ "properties": {
+ "clientId": {
+ "description": "This field is deprecated. Use `labels` instead. Client-specified pipeline operation identifier.",
+ "type": "string"
+ },
+ "inputs": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Pipeline input arguments; keys are defined in the pipeline documentation. All input parameters that do not have default values must be specified. If parameters with defaults are specified here, the defaults will be overridden.",
+ "type": "object"
+ },
+ "keepVmAliveOnFailureDuration": {
+ "description": "How long to keep the VM up after a failure (for example docker command failed, copying input or output files failed, etc). While the VM is up, one can ssh into the VM to debug. Default is 0; maximum allowed value is 1 day.",
+ "format": "google-duration",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this pipeline run. Labels will also be applied to compute resources (VM, disks) created by this pipeline run. When listing operations, operations can filtered by labels. Label keys may not be empty; label values may be empty. Non-empty labels must be 1-63 characters long, and comply with [RFC1035] (https://www.ietf.org/rfc/rfc1035.txt). Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "type": "object"
+ },
+ "logging": {
+ "$ref": "LoggingOptions",
+ "description": "Required. Logging options. Used by the service to communicate results to the user."
+ },
+ "outputs": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Pipeline output arguments; keys are defined in the pipeline documentation. All output parameters of without default values must be specified. If parameters with defaults are specified here, the defaults will be overridden.",
+ "type": "object"
+ },
+ "projectId": {
+ "description": "Required. The project in which to run the pipeline. The caller must have WRITER access to all Google Cloud services and resources (e.g. Google Compute Engine) will be used.",
+ "type": "string"
+ },
+ "resources": {
+ "$ref": "PipelineResources",
+ "description": "Specifies resource requirements/overrides for the pipeline run."
+ },
+ "serviceAccount": {
+ "$ref": "ServiceAccount",
+ "description": "The Google Cloud Service Account that will be used to access data and services. By default, the compute service account associated with `projectId` is used."
+ }
+ },
+ "type": "object"
+ },
+ "RunPipelineRequest": {
+ "description": "The request to run a pipeline. If `pipelineId` is specified, it refers to a saved pipeline created with CreatePipeline and set as the `pipelineId` of the returned Pipeline object. If `ephemeralPipeline` is specified, that pipeline is run once with the given args and not saved. It is an error to specify both `pipelineId` and `ephemeralPipeline`. `pipelineArgs` must be specified.",
+ "id": "RunPipelineRequest",
+ "properties": {
+ "ephemeralPipeline": {
+ "$ref": "Pipeline",
+ "description": "A new pipeline object to run once and then delete."
+ },
+ "pipelineArgs": {
+ "$ref": "RunPipelineArgs",
+ "description": "The arguments to use when running this pipeline."
+ },
+ "pipelineId": {
+ "description": "The already created pipeline to run.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RunPipelineResponse": {
+ "description": "The response to the RunPipeline method, returned in the operation's result field on success.",
+ "id": "RunPipelineResponse",
+ "properties": {},
+ "type": "object"
+ },
+ "RuntimeMetadata": {
+ "description": "Runtime metadata that will be populated in the runtimeMetadata field of the Operation associated with a RunPipeline execution.",
+ "id": "RuntimeMetadata",
+ "properties": {
+ "computeEngine": {
+ "$ref": "ComputeEngine",
+ "description": "Execution information specific to Google Compute Engine."
+ }
+ },
+ "type": "object"
+ },
+ "ServiceAccount": {
+ "description": "A Google Cloud Service Account.",
+ "id": "ServiceAccount",
+ "properties": {
+ "email": {
+ "description": "Email address of the service account. Defaults to `default`, which uses the compute service account associated with the project.",
+ "type": "string"
+ },
+ "scopes": {
+ "description": "List of scopes to be enabled for this service account on the VM. The following scopes are automatically included: * https://www.googleapis.com/auth/compute * https://www.googleapis.com/auth/devstorage.full_control * https://www.googleapis.com/auth/genomics * https://www.googleapis.com/auth/logging.write * https://www.googleapis.com/auth/monitoring.write",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SetOperationStatusRequest": {
+ "description": "Request to set operation status. Should only be used by VMs created by the Pipelines Service and not by end users.",
+ "id": "SetOperationStatusRequest",
+ "properties": {
+ "errorCode": {
+ "enum": [
+ "OK",
+ "CANCELLED",
+ "UNKNOWN",
+ "INVALID_ARGUMENT",
+ "DEADLINE_EXCEEDED",
+ "NOT_FOUND",
+ "ALREADY_EXISTS",
+ "PERMISSION_DENIED",
+ "UNAUTHENTICATED",
+ "RESOURCE_EXHAUSTED",
+ "FAILED_PRECONDITION",
+ "ABORTED",
+ "OUT_OF_RANGE",
+ "UNIMPLEMENTED",
+ "INTERNAL",
+ "UNAVAILABLE",
+ "DATA_LOSS"
+ ],
+ "enumDescriptions": [
+ "Not an error; returned on success HTTP Mapping: 200 OK",
+ "The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request",
+ "Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error",
+ "The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request",
+ "The deadline expired before the operation could complete. For operations that change the state of the system, this error may be returned even if the operation has completed successfully. For example, a successful response from a server could have been delayed long enough for the deadline to expire. HTTP Mapping: 504 Gateway Timeout",
+ "Some requested entity (e.g., file or directory) was not found. Note to server developers: if a request is denied for an entire class of users, such as gradual feature rollout or undocumented allowlist, `NOT_FOUND` may be used. If a request is denied for some users within a class of users, such as user-based access control, `PERMISSION_DENIED` must be used. HTTP Mapping: 404 Not Found",
+ "The entity that a client attempted to create (e.g., file or directory) already exists. HTTP Mapping: 409 Conflict",
+ "The caller does not have permission to execute the specified operation. `PERMISSION_DENIED` must not be used for rejections caused by exhausting some resource (use `RESOURCE_EXHAUSTED` instead for those errors). `PERMISSION_DENIED` must not be used if the caller can not be identified (use `UNAUTHENTICATED` instead for those errors). This error code does not imply the request is valid or the requested entity exists or satisfies other pre-conditions. HTTP Mapping: 403 Forbidden",
+ "The request does not have valid authentication credentials for the operation. HTTP Mapping: 401 Unauthorized",
+ "Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space. HTTP Mapping: 429 Too Many Requests",
+ "The operation was rejected because the system is not in a state required for the operation's execution. For example, the directory to be deleted is non-empty, an rmdir operation is applied to a non-directory, etc. Service implementors can use the following guidelines to decide between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`: (a) Use `UNAVAILABLE` if the client can retry just the failing call. (b) Use `ABORTED` if the client should retry at a higher level. For example, when a client-specified test-and-set fails, indicating the client should restart a read-modify-write sequence. (c) Use `FAILED_PRECONDITION` if the client should not retry until the system state has been explicitly fixed. For example, if an \"rmdir\" fails because the directory is non-empty, `FAILED_PRECONDITION` should be returned since the client should not retry unless the files are deleted from the directory. HTTP Mapping: 400 Bad Request",
+ "The operation was aborted, typically due to a concurrency issue such as a sequencer check failure or transaction abort. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 409 Conflict",
+ "The operation was attempted past the valid range. E.g., seeking or reading past end-of-file. Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed if the system state changes. For example, a 32-bit file system will generate `INVALID_ARGUMENT` if asked to read at an offset that is not in the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read from an offset past the current file size. There is a fair bit of overlap between `FAILED_PRECONDITION` and `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error) when it applies so that callers who are iterating through a space can easily look for an `OUT_OF_RANGE` error to detect when they are done. HTTP Mapping: 400 Bad Request",
+ "The operation is not implemented or is not supported/enabled in this service. HTTP Mapping: 501 Not Implemented",
+ "Internal errors. This means that some invariants expected by the underlying system have been broken. This error code is reserved for serious errors. HTTP Mapping: 500 Internal Server Error",
+ "The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations. See the guidelines above for deciding between `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`. HTTP Mapping: 503 Service Unavailable",
+ "Unrecoverable data loss or corruption. HTTP Mapping: 500 Internal Server Error"
+ ],
+ "type": "string"
+ },
+ "errorMessage": {
+ "type": "string"
+ },
+ "operationId": {
+ "type": "string"
+ },
+ "timestampEvents": {
+ "items": {
+ "$ref": "TimestampEvent"
+ },
+ "type": "array"
+ },
+ "validationToken": {
+ "format": "uint64",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Status": {
+ "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+ "id": "Status",
+ "properties": {
+ "code": {
+ "description": "The status code, which should be an enum value of google.rpc.Code.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "details": {
+ "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+ "items": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TimestampEvent": {
+ "description": "Stores the list of events and times they occured for major events in job execution.",
+ "id": "TimestampEvent",
+ "properties": {
+ "description": {
+ "description": "String indicating the type of event",
+ "type": "string"
+ },
+ "timestamp": {
+ "description": "The time this event occured.",
+ "format": "google-datetime",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UnexpectedExitStatusEvent": {
+ "description": "An event generated when the execution of a container results in a non-zero exit status that was not otherwise ignored. Execution will continue, but only actions that are flagged as `ALWAYS_RUN` will be executed. Other actions will be skipped.",
+ "id": "UnexpectedExitStatusEvent",
+ "properties": {
+ "actionId": {
+ "description": "The numeric ID of the action that started the container.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "exitStatus": {
+ "description": "The exit status of the container.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "WorkerAssignedEvent": {
+ "description": "An event generated after a worker VM has been assigned to run the pipeline.",
+ "id": "WorkerAssignedEvent",
+ "properties": {
+ "instance": {
+ "description": "The worker's instance name.",
+ "type": "string"
+ },
+ "machineType": {
+ "description": "The machine type that was assigned for the worker.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The zone the worker is running in.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "WorkerReleasedEvent": {
+ "description": "An event generated when the worker VM that was assigned to the pipeline has been released (deleted).",
+ "id": "WorkerReleasedEvent",
+ "properties": {
+ "instance": {
+ "description": "The worker's instance name.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The zone the worker was running in.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "servicePath": "",
+ "title": "Genomics API",
+ "version": "v1alpha2"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/gkehub.v2beta.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/gkehub.v2beta.json
new file mode 100644
index 0000000000000000000000000000000000000000..c1cfd256c002cffc5ef6f8602bafaaf5eb65eaa7
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/gkehub.v2beta.json
@@ -0,0 +1,3295 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://gkehub.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "GKE Hub",
+"description": "",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/anthos/multicluster-management/connect/registering-a-cluster",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "gkehub:v2beta",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://gkehub.mtls.googleapis.com/",
+"name": "gkehub",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "gkehub.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v2beta/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "gkehub.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"memberships": {
+"resources": {
+"features": {
+"methods": {
+"create": {
+"description": "Creates membershipFeature under a given parent.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features",
+"httpMethod": "POST",
+"id": "gkehub.projects.locations.memberships.features.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"featureId": {
+"description": "Required. The ID of the membership_feature to create.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of parent where the MembershipFeature will be created. Specified in the format `projects/*/locations/*/memberships/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Idempotent request UUID.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta/{+parent}/features",
+"request": {
+"$ref": "MembershipFeature"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Removes a membershipFeature.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features/{featuresId}",
+"httpMethod": "DELETE",
+"id": "gkehub.projects.locations.memberships.features.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the membershipFeature to be deleted. Specified in the format `projects/*/locations/*/memberships/*/features/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+/features/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Idempotent request UUID.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "========= MembershipFeature Services ========= Gets details of a membershipFeature.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features/{featuresId}",
+"httpMethod": "GET",
+"id": "gkehub.projects.locations.memberships.features.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The MembershipFeature resource name in the format `projects/*/locations/*/memberships/*/features/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+/features/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta/{+name}",
+"response": {
+"$ref": "MembershipFeature"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists MembershipFeatures in a given project and location.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features",
+"httpMethod": "GET",
+"id": "gkehub.projects.locations.memberships.features.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Lists MembershipFeatures that match the filter expression, following the syntax outlined in https://google.aip.dev/160. Examples: - Feature with the name \"helloworld\" in project \"foo-proj\" and membership \"member-bar\": name = \"projects/foo-proj/locations/global/memberships/member-bar/features/helloworld\" - Features that have a label called `foo`: labels.foo:* - Features that have a label called `foo` whose value is `bar`: labels.foo = bar",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "One or more fields to compare and use to sort the output. See https://google.aip.dev/132#ordering.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "When requesting a 'page' of resources, `page_size` specifies number of resources to return. If unspecified or set to 0, all resources will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token returned by previous call to `ListFeatures` which specifies the position in the list from where to continue listing the resources.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent where the MembershipFeature will be listed. In the format: `projects/*/locations/*/memberships/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta/{+parent}/features",
+"response": {
+"$ref": "ListMembershipFeaturesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates an existing MembershipFeature.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/memberships/{membershipsId}/features/{featuresId}",
+"httpMethod": "PATCH",
+"id": "gkehub.projects.locations.memberships.features.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"allowMissing": {
+"description": "Optional. If set to true, and the MembershipFeature is not found, a new MembershipFeature will be created. In this situation, `update_mask` is ignored.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. The resource name of the membershipFeature, in the format: `projects/{project}/locations/{location}/memberships/{membership}/features/{feature}`. Note that `membershipFeatures` is shortened to `features` in the resource name. (see http://go/aip/122#collection-identifiers)",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/memberships/[^/]+/features/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Idempotent request UUID.",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Mask of fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta/{+name}",
+"request": {
+"$ref": "MembershipFeature"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "gkehub.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "gkehub.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2beta/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v2beta/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "gkehub.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2beta/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20250103",
+"rootUrl": "https://gkehub.googleapis.com/",
+"schemas": {
+"AppDevExperienceState": {
+"description": "State for App Dev Exp Feature.",
+"id": "AppDevExperienceState",
+"properties": {
+"networkingInstallSucceeded": {
+"$ref": "AppDevExperienceStatus",
+"description": "Status of subcomponent that detects configured Service Mesh resources."
+}
+},
+"type": "object"
+},
+"AppDevExperienceStatus": {
+"description": "Status specifies state for the subcomponent.",
+"id": "AppDevExperienceStatus",
+"properties": {
+"code": {
+"description": "Code specifies AppDevExperienceFeature's subcomponent ready state.",
+"enum": [
+"CODE_UNSPECIFIED",
+"OK",
+"FAILED",
+"UNKNOWN"
+],
+"enumDescriptions": [
+"Not set.",
+"AppDevExperienceFeature's specified subcomponent is ready.",
+"AppDevExperienceFeature's specified subcomponent ready state is false. This means AppDevExperienceFeature has encountered an issue that blocks all, or a portion, of its normal operation. See the `description` for more details.",
+"AppDevExperienceFeature's specified subcomponent has a pending or unknown state."
+],
+"type": "string"
+},
+"description": {
+"description": "Description is populated if Code is Failed, explaining why it has failed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"CloudBuildSpec": {
+"description": "**Cloud Build**: Configurations for each Cloud Build enabled cluster.",
+"id": "CloudBuildSpec",
+"properties": {
+"securityPolicy": {
+"description": "Whether it is allowed to run the privileged builds on the cluster or not.",
+"enum": [
+"SECURITY_POLICY_UNSPECIFIED",
+"NON_PRIVILEGED",
+"PRIVILEGED"
+],
+"enumDescriptions": [
+"Unspecified policy",
+"Privileged build pods are disallowed",
+"Privileged build pods are allowed"
+],
+"type": "string"
+},
+"version": {
+"description": "Version of the cloud build software on the cluster.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClusterUpgradeGKEUpgrade": {
+"description": "GKEUpgrade represents a GKE provided upgrade, e.g., control plane upgrade.",
+"id": "ClusterUpgradeGKEUpgrade",
+"properties": {
+"name": {
+"description": "Name of the upgrade, e.g., \"k8s_control_plane\".",
+"type": "string"
+},
+"version": {
+"description": "Version of the upgrade, e.g., \"1.22.1-gke.100\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClusterUpgradeIgnoredMembership": {
+"description": "IgnoredMembership represents a membership ignored by the feature. A membership can be ignored because it was manually upgraded to a newer version than RC default.",
+"id": "ClusterUpgradeIgnoredMembership",
+"properties": {
+"ignoredTime": {
+"description": "Time when the membership was first set to ignored.",
+"format": "google-datetime",
+"type": "string"
+},
+"reason": {
+"description": "Reason why the membership is ignored.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClusterUpgradeMembershipGKEUpgradeState": {
+"description": "MembershipGKEUpgradeState is a GKEUpgrade and its state per-membership.",
+"id": "ClusterUpgradeMembershipGKEUpgradeState",
+"properties": {
+"status": {
+"$ref": "ClusterUpgradeUpgradeStatus",
+"description": "Status of the upgrade."
+},
+"upgrade": {
+"$ref": "ClusterUpgradeGKEUpgrade",
+"description": "Which upgrade to track the state."
+}
+},
+"type": "object"
+},
+"ClusterUpgradeState": {
+"description": "Per-membership state for this feature.",
+"id": "ClusterUpgradeState",
+"properties": {
+"ignored": {
+"$ref": "ClusterUpgradeIgnoredMembership",
+"description": "Whether this membership is ignored by the feature. For example, manually upgraded clusters can be ignored if they are newer than the default versions of its release channel."
+},
+"upgrades": {
+"description": "Actual upgrade state against desired.",
+"items": {
+"$ref": "ClusterUpgradeMembershipGKEUpgradeState"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ClusterUpgradeUpgradeStatus": {
+"description": "UpgradeStatus provides status information for each upgrade.",
+"id": "ClusterUpgradeUpgradeStatus",
+"properties": {
+"code": {
+"description": "Status code of the upgrade.",
+"enum": [
+"CODE_UNSPECIFIED",
+"INELIGIBLE",
+"PENDING",
+"IN_PROGRESS",
+"SOAKING",
+"FORCED_SOAKING",
+"COMPLETE"
+],
+"enumDescriptions": [
+"Required by https://linter.aip.dev/126/unspecified.",
+"The upgrade is ineligible. At the scope level, this means the upgrade is ineligible for all the clusters in the scope.",
+"The upgrade is pending. At the scope level, this means the upgrade is pending for all the clusters in the scope.",
+"The upgrade is in progress. At the scope level, this means the upgrade is in progress for at least one cluster in the scope.",
+"The upgrade has finished and is soaking until the soaking time is up. At the scope level, this means at least one cluster is in soaking while the rest are either soaking or complete.",
+"A cluster will be forced to enter soaking if an upgrade doesn't finish within a certain limit, despite it's actual status.",
+"The upgrade has passed all post conditions (soaking). At the scope level, this means all eligible clusters are in COMPLETE status."
+],
+"type": "string"
+},
+"reason": {
+"description": "Reason for this status.",
+"type": "string"
+},
+"updateTime": {
+"description": "Last timestamp the status was updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementBinauthzConfig": {
+"description": "Configuration for Binauthz.",
+"id": "ConfigManagementBinauthzConfig",
+"properties": {
+"enabled": {
+"description": "Whether binauthz is enabled in this cluster.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ConfigManagementBinauthzState": {
+"description": "State for Binauthz.",
+"id": "ConfigManagementBinauthzState",
+"properties": {
+"version": {
+"$ref": "ConfigManagementBinauthzVersion",
+"description": "The version of binauthz that is installed."
+},
+"webhook": {
+"description": "The state of the binauthz webhook.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementBinauthzVersion": {
+"description": "The version of binauthz.",
+"id": "ConfigManagementBinauthzVersion",
+"properties": {
+"webhookVersion": {
+"description": "The version of the binauthz webhook.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementConfigSync": {
+"description": "Configuration for Config Sync",
+"id": "ConfigManagementConfigSync",
+"properties": {
+"allowVerticalScale": {
+"deprecated": true,
+"description": "Optional. Set to true to allow the vertical scaling. Defaults to false which disallows vertical scaling. This field is deprecated.",
+"type": "boolean"
+},
+"enabled": {
+"description": "Optional. Enables the installation of ConfigSync. If set to true, ConfigSync resources will be created and the other ConfigSync fields will be applied if exist. If set to false, all other ConfigSync fields will be ignored, ConfigSync resources will be deleted. If omitted, ConfigSync resources will be managed depends on the presence of the git or oci field.",
+"type": "boolean"
+},
+"git": {
+"$ref": "ConfigManagementGitConfig",
+"description": "Optional. Git repo configuration for the cluster."
+},
+"metricsGcpServiceAccountEmail": {
+"deprecated": true,
+"description": "Optional. The Email of the Google Cloud Service Account (GSA) used for exporting Config Sync metrics to Cloud Monitoring and Cloud Monarch when Workload Identity is enabled. The GSA should have the Monitoring Metric Writer (roles/monitoring.metricWriter) IAM role. The Kubernetes ServiceAccount `default` in the namespace `config-management-monitoring` should be bound to the GSA. Deprecated: If Workload Identity Federation for GKE is enabled, Google Cloud Service Account is no longer needed for exporting Config Sync metrics: https://cloud.google.com/kubernetes-engine/enterprise/config-sync/docs/how-to/monitor-config-sync-cloud-monitoring#custom-monitoring.",
+"type": "string"
+},
+"oci": {
+"$ref": "ConfigManagementOciConfig",
+"description": "Optional. OCI repo configuration for the cluster."
+},
+"preventDrift": {
+"description": "Optional. Set to true to enable the Config Sync admission webhook to prevent drifts. If set to `false`, disables the Config Sync admission webhook and does not prevent drifts.",
+"type": "boolean"
+},
+"sourceFormat": {
+"description": "Optional. Specifies whether the Config Sync Repo is in \"hierarchical\" or \"unstructured\" mode.",
+"type": "string"
+},
+"stopSyncing": {
+"description": "Optional. Set to true to stop syncing configs for a single cluster. Default to false.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ConfigManagementConfigSyncDeploymentState": {
+"description": "The state of ConfigSync's deployment on a cluster.",
+"id": "ConfigManagementConfigSyncDeploymentState",
+"properties": {
+"admissionWebhook": {
+"description": "Deployment state of admission-webhook.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"gitSync": {
+"description": "Deployment state of the git-sync pod.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"importer": {
+"description": "Deployment state of the importer pod.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"monitor": {
+"description": "Deployment state of the monitor pod.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"otelCollector": {
+"description": "Deployment state of otel-collector",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"reconcilerManager": {
+"description": "Deployment state of reconciler-manager pod.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"resourceGroupControllerManager": {
+"description": "Deployment state of resource-group-controller-manager",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"rootReconciler": {
+"description": "Deployment state of root-reconciler.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"syncer": {
+"description": "Deployment state of the syncer pod.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementConfigSyncError": {
+"description": "Errors pertaining to the installation of Config Sync",
+"id": "ConfigManagementConfigSyncError",
+"properties": {
+"errorMessage": {
+"description": "A string representing the user facing error message",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementConfigSyncState": {
+"description": "State information for ConfigSync.",
+"id": "ConfigManagementConfigSyncState",
+"properties": {
+"clusterLevelStopSyncingState": {
+"description": "Output only. Whether syncing resources to the cluster is stopped at the cluster level.",
+"enum": [
+"STOP_SYNCING_STATE_UNSPECIFIED",
+"NOT_STOPPED",
+"PENDING",
+"STOPPED"
+],
+"enumDescriptions": [
+"State cannot be determined",
+"Syncing resources to the cluster is not stopped at the cluster level.",
+"Some reconcilers stop syncing resources to the cluster, while others are still syncing.",
+"Syncing resources to the cluster is stopped at the cluster level."
+],
+"readOnly": true,
+"type": "string"
+},
+"crCount": {
+"description": "Output only. The number of RootSync and RepoSync CRs in the cluster.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"deploymentState": {
+"$ref": "ConfigManagementConfigSyncDeploymentState",
+"description": "Output only. Information about the deployment of ConfigSync, including the version. of the various Pods deployed",
+"readOnly": true
+},
+"errors": {
+"description": "Output only. Errors pertaining to the installation of Config Sync.",
+"items": {
+"$ref": "ConfigManagementConfigSyncError"
+},
+"readOnly": true,
+"type": "array"
+},
+"reposyncCrd": {
+"description": "Output only. The state of the Reposync CRD",
+"enum": [
+"CRD_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"TERMINATING",
+"INSTALLING"
+],
+"enumDescriptions": [
+"CRD's state cannot be determined",
+"CRD is not installed",
+"CRD is installed",
+"CRD is terminating (i.e., it has been deleted and is cleaning up)",
+"CRD is installing"
+],
+"readOnly": true,
+"type": "string"
+},
+"rootsyncCrd": {
+"description": "Output only. The state of the RootSync CRD",
+"enum": [
+"CRD_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"TERMINATING",
+"INSTALLING"
+],
+"enumDescriptions": [
+"CRD's state cannot be determined",
+"CRD is not installed",
+"CRD is installed",
+"CRD is terminating (i.e., it has been deleted and is cleaning up)",
+"CRD is installing"
+],
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of CS This field summarizes the other fields in this message.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CONFIG_SYNC_NOT_INSTALLED",
+"CONFIG_SYNC_INSTALLED",
+"CONFIG_SYNC_ERROR",
+"CONFIG_SYNC_PENDING"
+],
+"enumDescriptions": [
+"CS's state cannot be determined.",
+"CS is not installed.",
+"The expected CS version is installed successfully.",
+"CS encounters errors.",
+"CS is installing or terminating."
+],
+"readOnly": true,
+"type": "string"
+},
+"syncState": {
+"$ref": "ConfigManagementSyncState",
+"description": "Output only. The state of ConfigSync's process to sync configs to a cluster.",
+"readOnly": true
+},
+"version": {
+"$ref": "ConfigManagementConfigSyncVersion",
+"description": "Output only. The version of ConfigSync deployed.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"ConfigManagementConfigSyncVersion": {
+"description": "Specific versioning information pertaining to ConfigSync's Pods.",
+"id": "ConfigManagementConfigSyncVersion",
+"properties": {
+"admissionWebhook": {
+"description": "Version of the deployed admission-webhook pod.",
+"type": "string"
+},
+"gitSync": {
+"description": "Version of the deployed git-sync pod.",
+"type": "string"
+},
+"importer": {
+"description": "Version of the deployed importer pod.",
+"type": "string"
+},
+"monitor": {
+"description": "Version of the deployed monitor pod.",
+"type": "string"
+},
+"otelCollector": {
+"description": "Version of the deployed otel-collector pod",
+"type": "string"
+},
+"reconcilerManager": {
+"description": "Version of the deployed reconciler-manager pod.",
+"type": "string"
+},
+"resourceGroupControllerManager": {
+"description": "Version of the deployed resource-group-controller-manager pod",
+"type": "string"
+},
+"rootReconciler": {
+"description": "Version of the deployed reconciler container in root-reconciler pod.",
+"type": "string"
+},
+"syncer": {
+"description": "Version of the deployed syncer pod.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementErrorResource": {
+"description": "Model for a config file in the git repo with an associated Sync error.",
+"id": "ConfigManagementErrorResource",
+"properties": {
+"resourceGvk": {
+"$ref": "ConfigManagementGroupVersionKind",
+"description": "Group/version/kind of the resource that is causing an error"
+},
+"resourceName": {
+"description": "Metadata name of the resource that is causing an error",
+"type": "string"
+},
+"resourceNamespace": {
+"description": "Namespace of the resource that is causing an error",
+"type": "string"
+},
+"sourcePath": {
+"description": "Path in the git repo of the erroneous config",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementGatekeeperDeploymentState": {
+"description": "State of Policy Controller installation.",
+"id": "ConfigManagementGatekeeperDeploymentState",
+"properties": {
+"gatekeeperAudit": {
+"description": "Status of gatekeeper-audit deployment.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"gatekeeperControllerManagerState": {
+"description": "Status of gatekeeper-controller-manager pod.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"gatekeeperMutation": {
+"description": "Status of the pod serving the mutation webhook.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementGitConfig": {
+"description": "Git repo configuration for a single cluster.",
+"id": "ConfigManagementGitConfig",
+"properties": {
+"gcpServiceAccountEmail": {
+"description": "Optional. The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount.",
+"type": "string"
+},
+"httpsProxy": {
+"description": "Optional. URL for the HTTPS proxy to be used when communicating with the Git repo.",
+"type": "string"
+},
+"policyDir": {
+"description": "Optional. The path within the Git repository that represents the top level of the repo to sync. Default: the root directory of the repository.",
+"type": "string"
+},
+"secretType": {
+"description": "Required. Type of secret configured for access to the Git repo. Must be one of ssh, cookiefile, gcenode, token, gcpserviceaccount or none. The validation of this is case-sensitive. Required.",
+"type": "string"
+},
+"syncBranch": {
+"description": "Optional. The branch of the repository to sync from. Default: master.",
+"type": "string"
+},
+"syncRepo": {
+"description": "Optional. The URL of the Git repository to use as the source of truth.",
+"type": "string"
+},
+"syncRev": {
+"description": "Optional. Git revision (tag or hash) to check out. Default HEAD.",
+"type": "string"
+},
+"syncWaitSecs": {
+"description": "Optional. Period in seconds between consecutive syncs. Default: 15.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementGroupVersionKind": {
+"description": "A Kubernetes object's GVK.",
+"id": "ConfigManagementGroupVersionKind",
+"properties": {
+"group": {
+"description": "Kubernetes Group",
+"type": "string"
+},
+"kind": {
+"description": "Kubernetes Kind",
+"type": "string"
+},
+"version": {
+"description": "Kubernetes Version",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementHierarchyControllerConfig": {
+"description": "Configuration for Hierarchy Controller.",
+"id": "ConfigManagementHierarchyControllerConfig",
+"properties": {
+"enableHierarchicalResourceQuota": {
+"description": "Whether hierarchical resource quota is enabled in this cluster.",
+"type": "boolean"
+},
+"enablePodTreeLabels": {
+"description": "Whether pod tree labels are enabled in this cluster.",
+"type": "boolean"
+},
+"enabled": {
+"description": "Whether Hierarchy Controller is enabled in this cluster.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ConfigManagementHierarchyControllerDeploymentState": {
+"description": "Deployment state for Hierarchy Controller",
+"id": "ConfigManagementHierarchyControllerDeploymentState",
+"properties": {
+"extension": {
+"description": "The deployment state for Hierarchy Controller extension (e.g. v0.7.0-hc.1).",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"hnc": {
+"description": "The deployment state for open source HNC (e.g. v0.7.0-hc.0).",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementHierarchyControllerState": {
+"description": "State for Hierarchy Controller.",
+"id": "ConfigManagementHierarchyControllerState",
+"properties": {
+"state": {
+"$ref": "ConfigManagementHierarchyControllerDeploymentState",
+"description": "The deployment state for Hierarchy Controller."
+},
+"version": {
+"$ref": "ConfigManagementHierarchyControllerVersion",
+"description": "The version for Hierarchy Controller."
+}
+},
+"type": "object"
+},
+"ConfigManagementHierarchyControllerVersion": {
+"description": "Version for Hierarchy Controller.",
+"id": "ConfigManagementHierarchyControllerVersion",
+"properties": {
+"extension": {
+"description": "Version for Hierarchy Controller extension.",
+"type": "string"
+},
+"hnc": {
+"description": "Version for open source HNC.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementInstallError": {
+"description": "Errors pertaining to the installation of ACM.",
+"id": "ConfigManagementInstallError",
+"properties": {
+"errorMessage": {
+"description": "A string representing the user facing error message.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementOciConfig": {
+"description": "OCI repo configuration for a single cluster.",
+"id": "ConfigManagementOciConfig",
+"properties": {
+"gcpServiceAccountEmail": {
+"description": "Optional. The Google Cloud Service Account Email used for auth when secret_type is gcpServiceAccount.",
+"type": "string"
+},
+"policyDir": {
+"description": "Optional. The absolute path of the directory that contains the local resources. Default: the root directory of the image.",
+"type": "string"
+},
+"secretType": {
+"description": "Optional. Type of secret configured for access to the Git repo.",
+"type": "string"
+},
+"syncRepo": {
+"description": "Optional. The OCI image repository URL for the package to sync from. e.g. `LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/PACKAGE_NAME`.",
+"type": "string"
+},
+"syncWaitSecs": {
+"description": "Optional. Period in seconds between consecutive syncs. Default: 15.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementOperatorState": {
+"description": "State information for an ACM's Operator.",
+"id": "ConfigManagementOperatorState",
+"properties": {
+"deploymentState": {
+"description": "The state of the Operator's deployment.",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLED",
+"ERROR",
+"PENDING"
+],
+"enumDescriptions": [
+"Deployment's state cannot be determined.",
+"Deployment is not installed.",
+"Deployment is installed.",
+"Deployment was attempted to be installed, but has errors.",
+"Deployment is installing or terminating"
+],
+"type": "string"
+},
+"errors": {
+"description": "Install errors.",
+"items": {
+"$ref": "ConfigManagementInstallError"
+},
+"type": "array"
+},
+"version": {
+"description": "The semenatic version number of the operator.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementPolicyController": {
+"description": "Configuration for Policy Controller",
+"id": "ConfigManagementPolicyController",
+"properties": {
+"auditIntervalSeconds": {
+"description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.",
+"format": "int64",
+"type": "string"
+},
+"enabled": {
+"description": "Enables the installation of Policy Controller. If false, the rest of PolicyController fields take no effect.",
+"type": "boolean"
+},
+"exemptableNamespaces": {
+"description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logDeniesEnabled": {
+"description": "Logs all denies and dry run failures.",
+"type": "boolean"
+},
+"monitoring": {
+"$ref": "ConfigManagementPolicyControllerMonitoring",
+"description": "Monitoring specifies the configuration of monitoring."
+},
+"mutationEnabled": {
+"description": "Enable or disable mutation in policy controller. If true, mutation CRDs, webhook and controller deployment will be deployed to the cluster.",
+"type": "boolean"
+},
+"referentialRulesEnabled": {
+"description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.",
+"type": "boolean"
+},
+"templateLibraryInstalled": {
+"description": "Installs the default template library along with Policy Controller.",
+"type": "boolean"
+},
+"updateTime": {
+"description": "Output only. Last time this membership spec was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementPolicyControllerMigration": {
+"description": "State for the migration of PolicyController from ACM -> PoCo Hub.",
+"id": "ConfigManagementPolicyControllerMigration",
+"properties": {
+"copyTime": {
+"description": "Last time this membership spec was copied to PoCo feature.",
+"format": "google-datetime",
+"type": "string"
+},
+"stage": {
+"description": "Stage of the migration.",
+"enum": [
+"STAGE_UNSPECIFIED",
+"ACM_MANAGED",
+"POCO_MANAGED"
+],
+"enumDescriptions": [
+"Unknown state of migration.",
+"ACM Hub/Operator manages policycontroller. No migration yet completed.",
+"All migrations steps complete; Poco Hub now manages policycontroller."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementPolicyControllerMonitoring": {
+"description": "PolicyControllerMonitoring specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
+"id": "ConfigManagementPolicyControllerMonitoring",
+"properties": {
+"backends": {
+"description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export.",
+"items": {
+"enum": [
+"MONITORING_BACKEND_UNSPECIFIED",
+"PROMETHEUS",
+"CLOUD_MONITORING"
+],
+"enumDescriptions": [
+"Backend cannot be determined",
+"Prometheus backend for monitoring",
+"Stackdriver/Cloud Monitoring backend for monitoring"
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ConfigManagementPolicyControllerState": {
+"description": "State for PolicyControllerState.",
+"id": "ConfigManagementPolicyControllerState",
+"properties": {
+"deploymentState": {
+"$ref": "ConfigManagementGatekeeperDeploymentState",
+"description": "The state about the policy controller installation."
+},
+"migration": {
+"$ref": "ConfigManagementPolicyControllerMigration",
+"description": "Record state of ACM -> PoCo Hub migration for this feature."
+},
+"version": {
+"$ref": "ConfigManagementPolicyControllerVersion",
+"description": "The version of Gatekeeper Policy Controller deployed."
+}
+},
+"type": "object"
+},
+"ConfigManagementPolicyControllerVersion": {
+"description": "The build version of Gatekeeper Policy Controller is using.",
+"id": "ConfigManagementPolicyControllerVersion",
+"properties": {
+"version": {
+"description": "The gatekeeper image tag that is composed of ACM version, git tag, build number.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementSpec": {
+"description": "**Anthos Config Management**: Configuration for a single cluster. Intended to parallel the ConfigManagement CR.",
+"id": "ConfigManagementSpec",
+"properties": {
+"binauthz": {
+"$ref": "ConfigManagementBinauthzConfig",
+"deprecated": true,
+"description": "Optional. Binauthz conifguration for the cluster. Deprecated: This field will be ignored and should not be set."
+},
+"cluster": {
+"description": "Optional. The user-specified cluster name used by Config Sync cluster-name-selector annotation or ClusterSelector, for applying configs to only a subset of clusters. Omit this field if the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector. Set this field if a name different from the cluster's fleet membership name is used by Config Sync cluster-name-selector annotation or ClusterSelector.",
+"type": "string"
+},
+"configSync": {
+"$ref": "ConfigManagementConfigSync",
+"description": "Optional. Config Sync configuration for the cluster."
+},
+"hierarchyController": {
+"$ref": "ConfigManagementHierarchyControllerConfig",
+"deprecated": true,
+"description": "Optional. Hierarchy Controller configuration for the cluster. Deprecated: Configuring Hierarchy Controller through the configmanagement feature is no longer recommended. Use https://github.com/kubernetes-sigs/hierarchical-namespaces instead."
+},
+"management": {
+"description": "Optional. Enables automatic Feature management.",
+"enum": [
+"MANAGEMENT_UNSPECIFIED",
+"MANAGEMENT_AUTOMATIC",
+"MANAGEMENT_MANUAL"
+],
+"enumDescriptions": [
+"Unspecified",
+"Google will manage the Feature for the cluster.",
+"User will manually manage the Feature for the cluster."
+],
+"type": "string"
+},
+"policyController": {
+"$ref": "ConfigManagementPolicyController",
+"deprecated": true,
+"description": "Optional. Policy Controller configuration for the cluster. Deprecated: Configuring Policy Controller through the configmanagement feature is no longer recommended. Use the policycontroller feature instead."
+},
+"version": {
+"description": "Optional. Version of ACM installed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConfigManagementState": {
+"description": "**Anthos Config Management**: State for a single cluster.",
+"id": "ConfigManagementState",
+"properties": {
+"binauthzState": {
+"$ref": "ConfigManagementBinauthzState",
+"description": "Output only. Binauthz status.",
+"readOnly": true
+},
+"clusterName": {
+"description": "Output only. This field is set to the `cluster_name` field of the Membership Spec if it is not empty. Otherwise, it is set to the cluster's fleet membership name.",
+"readOnly": true,
+"type": "string"
+},
+"configSyncState": {
+"$ref": "ConfigManagementConfigSyncState",
+"description": "Output only. Current sync status.",
+"readOnly": true
+},
+"hierarchyControllerState": {
+"$ref": "ConfigManagementHierarchyControllerState",
+"description": "Output only. Hierarchy Controller status.",
+"readOnly": true
+},
+"membershipSpec": {
+"$ref": "ConfigManagementSpec",
+"description": "Output only. Membership configuration in the cluster. This represents the actual state in the cluster, while the MembershipSpec in the FeatureSpec represents the intended state.",
+"readOnly": true
+},
+"operatorState": {
+"$ref": "ConfigManagementOperatorState",
+"description": "Output only. Current install status of ACM's Operator.",
+"readOnly": true
+},
+"policyControllerState": {
+"$ref": "ConfigManagementPolicyControllerState",
+"description": "Output only. PolicyController status.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"ConfigManagementSyncError": {
+"description": "An ACM created error representing a problem syncing configurations.",
+"id": "ConfigManagementSyncError",
+"properties": {
+"code": {
+"description": "An ACM defined error code",
+"type": "string"
+},
+"errorMessage": {
+"description": "A description of the error",
+"type": "string"
+},
+"errorResources": {
+"description": "A list of config(s) associated with the error, if any",
+"items": {
+"$ref": "ConfigManagementErrorResource"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ConfigManagementSyncState": {
+"description": "State indicating an ACM's progress syncing configurations to a cluster.",
+"id": "ConfigManagementSyncState",
+"properties": {
+"code": {
+"description": "Sync status code.",
+"enum": [
+"SYNC_CODE_UNSPECIFIED",
+"SYNCED",
+"PENDING",
+"ERROR",
+"NOT_CONFIGURED",
+"NOT_INSTALLED",
+"UNAUTHORIZED",
+"UNREACHABLE"
+],
+"enumDescriptions": [
+"Config Sync cannot determine a sync code",
+"Config Sync successfully synced the git Repo with the cluster",
+"Config Sync is in the progress of syncing a new change",
+"Indicates an error configuring Config Sync, and user action is required",
+"Config Sync has been installed but not configured",
+"Config Sync has not been installed",
+"Error authorizing with the cluster",
+"Cluster could not be reached"
+],
+"type": "string"
+},
+"errors": {
+"description": "A list of errors resulting from problematic configs. This list will be truncated after 100 errors, although it is unlikely for that many errors to simultaneously exist.",
+"items": {
+"$ref": "ConfigManagementSyncError"
+},
+"type": "array"
+},
+"importToken": {
+"description": "Token indicating the state of the importer.",
+"type": "string"
+},
+"lastSync": {
+"deprecated": true,
+"description": "Deprecated: use last_sync_time instead. Timestamp of when ACM last successfully synced the repo. The time format is specified in https://golang.org/pkg/time/#Time.String",
+"type": "string"
+},
+"lastSyncTime": {
+"description": "Timestamp type of when ACM last successfully synced the repo.",
+"format": "google-datetime",
+"type": "string"
+},
+"sourceToken": {
+"description": "Token indicating the state of the repo.",
+"type": "string"
+},
+"syncToken": {
+"description": "Token indicating the state of the syncer.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"FeatureSpec": {
+"description": "FeatureSpec contains user input per-feature spec information.",
+"id": "FeatureSpec",
+"properties": {
+"cloudbuild": {
+"$ref": "CloudBuildSpec",
+"description": "Cloudbuild-specific FeatureSpec."
+},
+"configmanagement": {
+"$ref": "ConfigManagementSpec",
+"description": "Config Management FeatureSpec."
+},
+"identityservice": {
+"$ref": "IdentityServiceSpec",
+"description": "IdentityService FeatureSpec."
+},
+"origin": {
+"$ref": "Origin",
+"description": "Whether this per-Feature spec was inherited from a fleet-level default. This field can be updated by users by either overriding a Feature config (updated to USER implicitly) or setting to FLEET explicitly."
+},
+"policycontroller": {
+"$ref": "PolicyControllerSpec",
+"description": "Policycontroller-specific FeatureSpec."
+},
+"servicemesh": {
+"$ref": "ServiceMeshSpec",
+"description": "ServiceMesh Feature Spec."
+},
+"workloadcertificate": {
+"$ref": "WorkloadCertificateSpec",
+"description": "Workloadcertificate-specific FeatureSpec."
+}
+},
+"type": "object"
+},
+"FeatureState": {
+"description": "FeatureState contains high-level state information and per-feature state information for this MembershipFeature.",
+"id": "FeatureState",
+"properties": {
+"appdevexperience": {
+"$ref": "AppDevExperienceState",
+"description": "Appdevexperience specific state."
+},
+"clusterupgrade": {
+"$ref": "ClusterUpgradeState",
+"description": "Cluster upgrade state."
+},
+"configmanagement": {
+"$ref": "ConfigManagementState",
+"description": "Config Management state"
+},
+"identityservice": {
+"$ref": "IdentityServiceState",
+"description": "Identity service state"
+},
+"metering": {
+"$ref": "MeteringState",
+"description": "Metering state"
+},
+"policycontroller": {
+"$ref": "PolicyControllerState",
+"description": "Policy Controller state"
+},
+"servicemesh": {
+"$ref": "ServiceMeshState",
+"description": "Service mesh state"
+},
+"state": {
+"$ref": "State",
+"description": "The high-level state of this MembershipFeature."
+}
+},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceAuthMethod": {
+"description": "Configuration of an auth method for a member/cluster. Only one authentication method (e.g., OIDC and LDAP) can be set per AuthMethod.",
+"id": "IdentityServiceAuthMethod",
+"properties": {
+"azureadConfig": {
+"$ref": "IdentityServiceAzureADConfig",
+"description": "AzureAD specific Configuration."
+},
+"googleConfig": {
+"$ref": "IdentityServiceGoogleConfig",
+"description": "GoogleConfig specific configuration"
+},
+"ldapConfig": {
+"$ref": "IdentityServiceLdapConfig",
+"description": "LDAP specific configuration."
+},
+"name": {
+"description": "Identifier for auth config.",
+"type": "string"
+},
+"oidcConfig": {
+"$ref": "IdentityServiceOidcConfig",
+"description": "OIDC specific configuration."
+},
+"proxy": {
+"description": "Proxy server address to use for auth method.",
+"type": "string"
+},
+"samlConfig": {
+"$ref": "IdentityServiceSamlConfig",
+"description": "SAML specific configuration."
+}
+},
+"type": "object"
+},
+"IdentityServiceAzureADConfig": {
+"description": "Configuration for the AzureAD Auth flow.",
+"id": "IdentityServiceAzureADConfig",
+"properties": {
+"clientId": {
+"description": "ID for the registered client application that makes authentication requests to the Azure AD identity provider.",
+"type": "string"
+},
+"clientSecret": {
+"description": "Input only. Unencrypted AzureAD client secret will be passed to the GKE Hub CLH.",
+"type": "string"
+},
+"encryptedClientSecret": {
+"description": "Output only. Encrypted AzureAD client secret.",
+"format": "byte",
+"readOnly": true,
+"type": "string"
+},
+"groupFormat": {
+"description": "Optional. Format of the AzureAD groups that the client wants for auth.",
+"type": "string"
+},
+"kubectlRedirectUri": {
+"description": "The redirect URL that kubectl uses for authorization.",
+"type": "string"
+},
+"tenant": {
+"description": "Kind of Azure AD account to be authenticated. Supported values are or for accounts belonging to a specific tenant.",
+"type": "string"
+},
+"userClaim": {
+"description": "Optional. Claim in the AzureAD ID Token that holds the user details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceDiagnosticInterface": {
+"description": "Configuration options for the AIS diagnostic interface.",
+"id": "IdentityServiceDiagnosticInterface",
+"properties": {
+"enabled": {
+"description": "Determines whether to enable the diagnostic interface.",
+"type": "boolean"
+},
+"expirationTime": {
+"description": "Determines the expiration time of the diagnostic interface enablement. When reached, requests to the interface would be automatically rejected.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceGoogleConfig": {
+"description": "Configuration for the Google Plugin Auth flow.",
+"id": "IdentityServiceGoogleConfig",
+"properties": {
+"disable": {
+"description": "Disable automatic configuration of Google Plugin on supported platforms.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"IdentityServiceGroupConfig": {
+"description": "Contains the properties for locating and authenticating groups in the directory.",
+"id": "IdentityServiceGroupConfig",
+"properties": {
+"baseDn": {
+"description": "Required. The location of the subtree in the LDAP directory to search for group entries.",
+"type": "string"
+},
+"filter": {
+"description": "Optional. Optional filter to be used when searching for groups a user belongs to. This can be used to explicitly match only certain groups in order to reduce the amount of groups returned for each user. This defaults to \"(objectClass=Group)\".",
+"type": "string"
+},
+"idAttribute": {
+"description": "Optional. The identifying name of each group a user belongs to. For example, if this is set to \"distinguishedName\" then RBACs and other group expectations should be written as full DNs. This defaults to \"distinguishedName\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceIdentityServiceOptions": {
+"description": "Holds non-protocol-related configuration options.",
+"id": "IdentityServiceIdentityServiceOptions",
+"properties": {
+"diagnosticInterface": {
+"$ref": "IdentityServiceDiagnosticInterface",
+"description": "Configuration options for the AIS diagnostic interface."
+},
+"sessionDuration": {
+"description": "Determines the lifespan of STS tokens issued by Anthos Identity Service.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceLdapConfig": {
+"description": "Configuration for the LDAP Auth flow.",
+"id": "IdentityServiceLdapConfig",
+"properties": {
+"group": {
+"$ref": "IdentityServiceGroupConfig",
+"description": "Optional. Contains the properties for locating and authenticating groups in the directory."
+},
+"server": {
+"$ref": "IdentityServiceServerConfig",
+"description": "Required. Server settings for the external LDAP server."
+},
+"serviceAccount": {
+"$ref": "IdentityServiceServiceAccountConfig",
+"description": "Required. Contains the credentials of the service account which is authorized to perform the LDAP search in the directory. The credentials can be supplied by the combination of the DN and password or the client certificate."
+},
+"user": {
+"$ref": "IdentityServiceUserConfig",
+"description": "Required. Defines where users exist in the LDAP directory."
+}
+},
+"type": "object"
+},
+"IdentityServiceOidcConfig": {
+"description": "Configuration for OIDC Auth flow.",
+"id": "IdentityServiceOidcConfig",
+"properties": {
+"certificateAuthorityData": {
+"description": "PEM-encoded CA for OIDC provider.",
+"type": "string"
+},
+"clientId": {
+"description": "ID for OIDC client application.",
+"type": "string"
+},
+"clientSecret": {
+"description": "Input only. Unencrypted OIDC client secret will be passed to the GKE Hub CLH.",
+"type": "string"
+},
+"deployCloudConsoleProxy": {
+"description": "Flag to denote if reverse proxy is used to connect to auth provider. This flag should be set to true when provider is not reachable by Google Cloud Console.",
+"type": "boolean"
+},
+"enableAccessToken": {
+"description": "Enable access token.",
+"type": "boolean"
+},
+"encryptedClientSecret": {
+"description": "Output only. Encrypted OIDC Client secret",
+"format": "byte",
+"readOnly": true,
+"type": "string"
+},
+"extraParams": {
+"description": "Comma-separated list of key-value pairs.",
+"type": "string"
+},
+"groupPrefix": {
+"description": "Prefix to prepend to group name.",
+"type": "string"
+},
+"groupsClaim": {
+"description": "Claim in OIDC ID token that holds group information.",
+"type": "string"
+},
+"issuerUri": {
+"description": "URI for the OIDC provider. This should point to the level below .well-known/openid-configuration.",
+"type": "string"
+},
+"kubectlRedirectUri": {
+"description": "Registered redirect uri to redirect users going through OAuth flow using kubectl plugin.",
+"type": "string"
+},
+"scopes": {
+"description": "Comma-separated list of identifiers.",
+"type": "string"
+},
+"userClaim": {
+"description": "Claim in OIDC ID token that holds username.",
+"type": "string"
+},
+"userPrefix": {
+"description": "Prefix to prepend to user name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceSamlConfig": {
+"description": "Configuration for the SAML Auth flow.",
+"id": "IdentityServiceSamlConfig",
+"properties": {
+"attributeMapping": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. The mapping of additional user attributes like nickname, birthday and address etc.. `key` is the name of this additional attribute. `value` is a string presenting as CEL(common expression language, go/cel) used for getting the value from the resources. Take nickname as an example, in this case, `key` is \"attribute.nickname\" and `value` is \"assertion.nickname\".",
+"type": "object"
+},
+"groupPrefix": {
+"description": "Optional. Prefix to prepend to group name.",
+"type": "string"
+},
+"groupsAttribute": {
+"description": "Optional. The SAML attribute to read groups from. This value is expected to be a string and will be passed along as-is (with the option of being prefixed by the `group_prefix`).",
+"type": "string"
+},
+"identityProviderCertificates": {
+"description": "Required. The list of IdP certificates to validate the SAML response against.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"identityProviderId": {
+"description": "Required. The entity ID of the SAML IdP.",
+"type": "string"
+},
+"identityProviderSsoUri": {
+"description": "Required. The URI where the SAML IdP exposes the SSO service.",
+"type": "string"
+},
+"userAttribute": {
+"description": "Optional. The SAML attribute to read username from. If unspecified, the username will be read from the NameID element of the assertion in SAML response. This value is expected to be a string and will be passed along as-is (with the option of being prefixed by the `user_prefix`).",
+"type": "string"
+},
+"userPrefix": {
+"description": "Optional. Prefix to prepend to user name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceServerConfig": {
+"description": "Server settings for the external LDAP server.",
+"id": "IdentityServiceServerConfig",
+"properties": {
+"certificateAuthorityData": {
+"description": "Optional. Contains a Base64 encoded, PEM formatted certificate authority certificate for the LDAP server. This must be provided for the \"ldaps\" and \"startTLS\" connections.",
+"format": "byte",
+"type": "string"
+},
+"connectionType": {
+"description": "Optional. Defines the connection type to communicate with the LDAP server. If `starttls` or `ldaps` is specified, the certificate_authority_data should not be empty.",
+"type": "string"
+},
+"host": {
+"description": "Required. Defines the hostname or IP of the LDAP server. Port is optional and will default to 389, if unspecified. For example, \"ldap.server.example\" or \"10.10.10.10:389\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceServiceAccountConfig": {
+"description": "Contains the credentials of the service account which is authorized to perform the LDAP search in the directory. The credentials can be supplied by the combination of the DN and password or the client certificate.",
+"id": "IdentityServiceServiceAccountConfig",
+"properties": {
+"simpleBindCredentials": {
+"$ref": "IdentityServiceSimpleBindCredentials",
+"description": "Credentials for basic auth."
+}
+},
+"type": "object"
+},
+"IdentityServiceSimpleBindCredentials": {
+"description": "The structure holds the LDAP simple binding credential.",
+"id": "IdentityServiceSimpleBindCredentials",
+"properties": {
+"dn": {
+"description": "Required. The distinguished name(DN) of the service account object/user.",
+"type": "string"
+},
+"encryptedPassword": {
+"description": "Output only. The encrypted password of the service account object/user.",
+"format": "byte",
+"readOnly": true,
+"type": "string"
+},
+"password": {
+"description": "Required. Input only. The password of the service account object/user.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceSpec": {
+"description": "**IdentityService**: Configuration for a single membership.",
+"id": "IdentityServiceSpec",
+"properties": {
+"authMethods": {
+"description": "A member may support multiple auth methods.",
+"items": {
+"$ref": "IdentityServiceAuthMethod"
+},
+"type": "array"
+},
+"identityServiceOptions": {
+"$ref": "IdentityServiceIdentityServiceOptions",
+"description": "Optional. non-protocol-related configuration options."
+}
+},
+"type": "object"
+},
+"IdentityServiceState": {
+"description": "**IdentityService**: State for a single membership, analyzed and reported by feature controller.",
+"id": "IdentityServiceState",
+"properties": {
+"failureReason": {
+"description": "The reason of the failure.",
+"type": "string"
+},
+"installedVersion": {
+"description": "Installed AIS version. This is the AIS version installed on this member. The values makes sense iff state is OK.",
+"type": "string"
+},
+"memberConfig": {
+"$ref": "IdentityServiceSpec",
+"description": "Last reconciled membership configuration"
+},
+"state": {
+"description": "Deployment state on this member",
+"enum": [
+"DEPLOYMENT_STATE_UNSPECIFIED",
+"OK",
+"ERROR"
+],
+"enumDescriptions": [
+"Unspecified state",
+"deployment succeeds",
+"Failure with error."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"IdentityServiceUserConfig": {
+"description": "Defines where users exist in the LDAP directory.",
+"id": "IdentityServiceUserConfig",
+"properties": {
+"baseDn": {
+"description": "Required. The location of the subtree in the LDAP directory to search for user entries.",
+"type": "string"
+},
+"filter": {
+"description": "Optional. Filter to apply when searching for the user. This can be used to further restrict the user accounts which are allowed to login. This defaults to \"(objectClass=User)\".",
+"type": "string"
+},
+"idAttribute": {
+"description": "Optional. Determines which attribute to use as the user's identity after they are authenticated. This is distinct from the loginAttribute field to allow users to login with a username, but then have their actual identifier be an email address or full Distinguished Name (DN). For example, setting loginAttribute to \"sAMAccountName\" and identifierAttribute to \"userPrincipalName\" would allow a user to login as \"bsmith\", but actual RBAC policies for the user would be written as \"bsmith@example.com\". Using \"userPrincipalName\" is recommended since this will be unique for each user. This defaults to \"userPrincipalName\".",
+"type": "string"
+},
+"loginAttribute": {
+"description": "Optional. The name of the attribute which matches against the input username. This is used to find the user in the LDAP database e.g. \"(=)\" and is combined with the optional filter field. This defaults to \"userPrincipalName\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LifecycleState": {
+"description": "LifecycleState describes the state of a MembershipFeature *resource* in the GkeHub API. See `FeatureState` for the \"running state\" of the MembershipFeature.",
+"id": "LifecycleState",
+"properties": {
+"state": {
+"description": "Output only. The current state of the Feature resource in the Hub API.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ENABLING",
+"ACTIVE",
+"DISABLING",
+"UPDATING",
+"SERVICE_UPDATING"
+],
+"enumDescriptions": [
+"State is unknown or not set.",
+"The MembershipFeature is being enabled, and the MembershipFeature resource is being created. Once complete, the corresponding MembershipFeature will be enabled in this Hub.",
+"The MembershipFeature is enabled in this Hub, and the MembershipFeature resource is fully available.",
+"The MembershipFeature is being disabled in this Hub, and the MembershipFeature resource is being deleted.",
+"The MembershipFeature resource is being updated.",
+"The MembershipFeature resource is being updated by the Hub Service."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMembershipFeaturesResponse": {
+"description": "Response message for the `GkeHubFeature.ListMembershipFeatures` method.",
+"id": "ListMembershipFeaturesResponse",
+"properties": {
+"membershipFeatures": {
+"description": "The list of matching MembershipFeatures.",
+"items": {
+"$ref": "MembershipFeature"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token to request the next page of resources from the `ListMembershipFeatures` method. The value of an empty string means that there are no more resources to return.",
+"type": "string"
+},
+"unreachable": {
+"description": "List of locations that could not be reached while fetching this list.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MembershipFeature": {
+"description": "MembershipFeature represents the settings and status of a Fleet Feature enabled on a single Fleet Membership.",
+"id": "MembershipFeature",
+"properties": {
+"createTime": {
+"description": "Output only. When the MembershipFeature resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deleteTime": {
+"description": "Output only. When the MembershipFeature resource was deleted.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "GCP labels for this MembershipFeature.",
+"type": "object"
+},
+"lifecycleState": {
+"$ref": "LifecycleState",
+"description": "Output only. Lifecycle information of the resource itself.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. The resource name of the membershipFeature, in the format: `projects/{project}/locations/{location}/memberships/{membership}/features/{feature}`. Note that `membershipFeatures` is shortened to `features` in the resource name. (see http://go/aip/122#collection-identifiers)",
+"readOnly": true,
+"type": "string"
+},
+"spec": {
+"$ref": "FeatureSpec",
+"description": "Optional. Spec of this membershipFeature."
+},
+"state": {
+"$ref": "FeatureState",
+"description": "Output only. State of the this membershipFeature.",
+"readOnly": true
+},
+"updateTime": {
+"description": "Output only. When the MembershipFeature resource was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"MeteringState": {
+"description": "**Metering**: State for a single membership, analyzed and reported by feature controller.",
+"id": "MeteringState",
+"properties": {
+"lastMeasurementTime": {
+"description": "The time stamp of the most recent measurement of the number of vCPUs in the cluster.",
+"format": "google-datetime",
+"type": "string"
+},
+"preciseLastMeasuredClusterVcpuCapacity": {
+"description": "The vCPUs capacity in the cluster according to the most recent measurement (1/1000 precision).",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"cancelRequested": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"statusDetail": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Origin": {
+"description": "Origin defines where this FeatureSpec originated from.",
+"id": "Origin",
+"properties": {
+"type": {
+"description": "Type specifies which type of origin is set.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"FLEET",
+"FLEET_OUT_OF_SYNC",
+"USER"
+],
+"enumDescriptions": [
+"Type is unknown or not set.",
+"Per-Feature spec was inherited from the fleet-level default.",
+"Per-Feature spec was inherited from the fleet-level default but is now out of sync with the current default.",
+"Per-Feature spec was inherited from a user specification."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyControllerBundleInstallSpec": {
+"description": "BundleInstallSpec is the specification configuration for a single managed bundle.",
+"id": "PolicyControllerBundleInstallSpec",
+"properties": {
+"exemptedNamespaces": {
+"description": "the set of namespaces to be exempted from the bundle",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PolicyControllerHubConfig": {
+"description": "Configuration for Policy Controller",
+"id": "PolicyControllerHubConfig",
+"properties": {
+"auditIntervalSeconds": {
+"description": "Sets the interval for Policy Controller Audit Scans (in seconds). When set to 0, this disables audit functionality altogether.",
+"format": "int64",
+"type": "string"
+},
+"constraintViolationLimit": {
+"description": "The maximum number of audit violations to be stored in a constraint. If not set, the internal default (currently 20) will be used.",
+"format": "int64",
+"type": "string"
+},
+"deploymentConfigs": {
+"additionalProperties": {
+"$ref": "PolicyControllerPolicyControllerDeploymentConfig"
+},
+"description": "Map of deployment configs to deployments (\u201cadmission\u201d, \u201caudit\u201d, \u201cmutation\u201d).",
+"type": "object"
+},
+"exemptableNamespaces": {
+"description": "The set of namespaces that are excluded from Policy Controller checks. Namespaces do not need to currently exist on the cluster.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"installSpec": {
+"description": "The install_spec represents the intended state specified by the latest request that mutated install_spec in the feature spec, not the lifecycle state of the feature observed by the Hub feature controller that is reported in the feature state.",
+"enum": [
+"INSTALL_SPEC_UNSPECIFIED",
+"INSTALL_SPEC_NOT_INSTALLED",
+"INSTALL_SPEC_ENABLED",
+"INSTALL_SPEC_SUSPENDED",
+"INSTALL_SPEC_DETACHED"
+],
+"enumDescriptions": [
+"Spec is unknown.",
+"Request to uninstall Policy Controller.",
+"Request to install and enable Policy Controller.",
+"Request to suspend Policy Controller i.e. its webhooks. If Policy Controller is not installed, it will be installed but suspended.",
+"Request to stop all reconciliation actions by PoCo Hub controller. This is a breakglass mechanism to stop PoCo Hub from affecting cluster resources."
+],
+"type": "string"
+},
+"logDeniesEnabled": {
+"description": "Logs all denies and dry run failures.",
+"type": "boolean"
+},
+"monitoring": {
+"$ref": "PolicyControllerMonitoringConfig",
+"description": "Monitoring specifies the configuration of monitoring."
+},
+"mutationEnabled": {
+"description": "Enables the ability to mutate resources using Policy Controller.",
+"type": "boolean"
+},
+"policyContent": {
+"$ref": "PolicyControllerPolicyContentSpec",
+"description": "Specifies the desired policy content on the cluster"
+},
+"referentialRulesEnabled": {
+"description": "Enables the ability to use Constraint Templates that reference to objects other than the object currently being evaluated.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"PolicyControllerMonitoringConfig": {
+"description": "MonitoringConfig specifies the backends Policy Controller should export metrics to. For example, to specify metrics should be exported to Cloud Monitoring and Prometheus, specify backends: [\"cloudmonitoring\", \"prometheus\"]",
+"id": "PolicyControllerMonitoringConfig",
+"properties": {
+"backends": {
+"description": "Specifies the list of backends Policy Controller will export to. An empty list would effectively disable metrics export.",
+"items": {
+"enum": [
+"MONITORING_BACKEND_UNSPECIFIED",
+"PROMETHEUS",
+"CLOUD_MONITORING"
+],
+"enumDescriptions": [
+"Backend cannot be determined",
+"Prometheus backend for monitoring",
+"Stackdriver/Cloud Monitoring backend for monitoring"
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PolicyControllerOnClusterState": {
+"description": "OnClusterState represents the state of a sub-component of Policy Controller.",
+"id": "PolicyControllerOnClusterState",
+"properties": {
+"details": {
+"description": "Surface potential errors or information logs.",
+"type": "string"
+},
+"state": {
+"description": "The lifecycle state of this component.",
+"enum": [
+"LIFECYCLE_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLING",
+"ACTIVE",
+"UPDATING",
+"DECOMMISSIONING",
+"CLUSTER_ERROR",
+"HUB_ERROR",
+"SUSPENDED",
+"DETACHED"
+],
+"enumDescriptions": [
+"The lifecycle state is unspecified.",
+"The PC does not exist on the given cluster, and no k8s resources of any type that are associated with the PC should exist there. The cluster does not possess a membership with the PCH.",
+"The PCH possesses a Membership, however the PC is not fully installed on the cluster. In this state the hub can be expected to be taking actions to install the PC on the cluster.",
+"The PC is fully installed on the cluster and in an operational mode. In this state PCH will be reconciling state with the PC, and the PC will be performing it's operational tasks per that software. Entering a READY state requires that the hub has confirmed the PC is installed and its pods are operational with the version of the PC the PCH expects.",
+"The PC is fully installed, but in the process of changing the configuration (including changing the version of PC either up and down, or modifying the manifests of PC) of the resources running on the cluster. The PCH has a Membership, is aware of the version the cluster should be running in, but has not confirmed for itself that the PC is running with that version.",
+"The PC may have resources on the cluster, but the PCH wishes to remove the Membership. The Membership still exists.",
+"The PC is not operational, and the PCH is unable to act to make it operational. Entering a CLUSTER_ERROR state happens automatically when the PCH determines that a PC installed on the cluster is non-operative or that the cluster does not meet requirements set for the PCH to administer the cluster but has nevertheless been given an instruction to do so (such as \u2018install').",
+"In this state, the PC may still be operational, and only the PCH is unable to act. The hub should not issue instructions to change the PC state, or otherwise interfere with the on-cluster resources. Entering a HUB_ERROR state happens automatically when the PCH determines the hub is in an unhealthy state and it wishes to \u2018take hands off' to avoid corrupting the PC or other data.",
+"Policy Controller (PC) is installed but suspended. This means that the policies are not enforced, but violations are still recorded (through audit).",
+"PoCo Hub is not taking any action to reconcile cluster objects. Changes to those objects will not be overwritten by PoCo Hub."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyControllerPolicyContentSpec": {
+"description": "PolicyContentSpec defines the user's desired content configuration on the cluster.",
+"id": "PolicyControllerPolicyContentSpec",
+"properties": {
+"bundles": {
+"additionalProperties": {
+"$ref": "PolicyControllerBundleInstallSpec"
+},
+"description": "map of bundle name to BundleInstallSpec. The bundle name maps to the `bundleName` key in the `policycontroller.gke.io/constraintData` annotation on a constraint.",
+"type": "object"
+},
+"templateLibrary": {
+"$ref": "PolicyControllerTemplateLibraryConfig",
+"description": "Configures the installation of the Template Library."
+}
+},
+"type": "object"
+},
+"PolicyControllerPolicyContentState": {
+"description": "The state of the policy controller policy content",
+"id": "PolicyControllerPolicyContentState",
+"properties": {
+"bundleStates": {
+"additionalProperties": {
+"$ref": "PolicyControllerOnClusterState"
+},
+"description": "The state of the any bundles included in the chosen version of the manifest",
+"type": "object"
+},
+"referentialSyncConfigState": {
+"$ref": "PolicyControllerOnClusterState",
+"description": "The state of the referential data sync configuration. This could represent the state of either the syncSet object(s) or the config object, depending on the version of PoCo configured by the user."
+},
+"templateLibraryState": {
+"$ref": "PolicyControllerOnClusterState",
+"description": "The state of the template library"
+}
+},
+"type": "object"
+},
+"PolicyControllerPolicyControllerDeploymentConfig": {
+"description": "Deployment-specific configuration.",
+"id": "PolicyControllerPolicyControllerDeploymentConfig",
+"properties": {
+"containerResources": {
+"$ref": "PolicyControllerResourceRequirements",
+"description": "Container resource requirements."
+},
+"podAffinity": {
+"description": "Pod affinity configuration.",
+"enum": [
+"AFFINITY_UNSPECIFIED",
+"NO_AFFINITY",
+"ANTI_AFFINITY"
+],
+"enumDescriptions": [
+"No affinity configuration has been specified.",
+"Affinity configurations will be removed from the deployment.",
+"Anti-affinity configuration will be applied to this deployment. Default for admissions deployment."
+],
+"type": "string"
+},
+"podAntiAffinity": {
+"deprecated": true,
+"description": "Pod anti-affinity enablement. Deprecated: use `pod_affinity` instead.",
+"type": "boolean"
+},
+"podTolerations": {
+"description": "Pod tolerations of node taints.",
+"items": {
+"$ref": "PolicyControllerToleration"
+},
+"type": "array"
+},
+"replicaCount": {
+"description": "Pod replica count.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyControllerResourceList": {
+"description": "ResourceList contains container resource requirements.",
+"id": "PolicyControllerResourceList",
+"properties": {
+"cpu": {
+"description": "CPU requirement expressed in Kubernetes resource units.",
+"type": "string"
+},
+"memory": {
+"description": "Memory requirement expressed in Kubernetes resource units.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyControllerResourceRequirements": {
+"description": "ResourceRequirements describes the compute resource requirements.",
+"id": "PolicyControllerResourceRequirements",
+"properties": {
+"limits": {
+"$ref": "PolicyControllerResourceList",
+"description": "Limits describes the maximum amount of compute resources allowed for use by the running container."
+},
+"requests": {
+"$ref": "PolicyControllerResourceList",
+"description": "Requests describes the amount of compute resources reserved for the container by the kube-scheduler."
+}
+},
+"type": "object"
+},
+"PolicyControllerSpec": {
+"description": "**Policy Controller**: Configuration for a single cluster. Intended to parallel the PolicyController CR.",
+"id": "PolicyControllerSpec",
+"properties": {
+"policyControllerHubConfig": {
+"$ref": "PolicyControllerHubConfig",
+"description": "Policy Controller configuration for the cluster."
+},
+"version": {
+"description": "Version of Policy Controller installed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyControllerState": {
+"description": "**Policy Controller**: State for a single cluster.",
+"id": "PolicyControllerState",
+"properties": {
+"componentStates": {
+"additionalProperties": {
+"$ref": "PolicyControllerOnClusterState"
+},
+"description": "Currently these include (also serving as map keys): 1. \"admission\" 2. \"audit\" 3. \"mutation\"",
+"type": "object"
+},
+"policyContentState": {
+"$ref": "PolicyControllerPolicyContentState",
+"description": "The overall content state observed by the Hub Feature controller."
+},
+"state": {
+"description": "The overall Policy Controller lifecycle state observed by the Hub Feature controller.",
+"enum": [
+"LIFECYCLE_STATE_UNSPECIFIED",
+"NOT_INSTALLED",
+"INSTALLING",
+"ACTIVE",
+"UPDATING",
+"DECOMMISSIONING",
+"CLUSTER_ERROR",
+"HUB_ERROR",
+"SUSPENDED",
+"DETACHED"
+],
+"enumDescriptions": [
+"The lifecycle state is unspecified.",
+"The PC does not exist on the given cluster, and no k8s resources of any type that are associated with the PC should exist there. The cluster does not possess a membership with the PCH.",
+"The PCH possesses a Membership, however the PC is not fully installed on the cluster. In this state the hub can be expected to be taking actions to install the PC on the cluster.",
+"The PC is fully installed on the cluster and in an operational mode. In this state PCH will be reconciling state with the PC, and the PC will be performing it's operational tasks per that software. Entering a READY state requires that the hub has confirmed the PC is installed and its pods are operational with the version of the PC the PCH expects.",
+"The PC is fully installed, but in the process of changing the configuration (including changing the version of PC either up and down, or modifying the manifests of PC) of the resources running on the cluster. The PCH has a Membership, is aware of the version the cluster should be running in, but has not confirmed for itself that the PC is running with that version.",
+"The PC may have resources on the cluster, but the PCH wishes to remove the Membership. The Membership still exists.",
+"The PC is not operational, and the PCH is unable to act to make it operational. Entering a CLUSTER_ERROR state happens automatically when the PCH determines that a PC installed on the cluster is non-operative or that the cluster does not meet requirements set for the PCH to administer the cluster but has nevertheless been given an instruction to do so (such as \u2018install').",
+"In this state, the PC may still be operational, and only the PCH is unable to act. The hub should not issue instructions to change the PC state, or otherwise interfere with the on-cluster resources. Entering a HUB_ERROR state happens automatically when the PCH determines the hub is in an unhealthy state and it wishes to \u2018take hands off' to avoid corrupting the PC or other data.",
+"Policy Controller (PC) is installed but suspended. This means that the policies are not enforced, but violations are still recorded (through audit).",
+"PoCo Hub is not taking any action to reconcile cluster objects. Changes to those objects will not be overwritten by PoCo Hub."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyControllerTemplateLibraryConfig": {
+"description": "The config specifying which default library templates to install.",
+"id": "PolicyControllerTemplateLibraryConfig",
+"properties": {
+"installation": {
+"description": "Configures the manner in which the template library is installed on the cluster.",
+"enum": [
+"INSTALLATION_UNSPECIFIED",
+"NOT_INSTALLED",
+"ALL"
+],
+"enumDescriptions": [
+"No installation strategy has been specified.",
+"Do not install the template library.",
+"Install the entire template library."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"PolicyControllerToleration": {
+"description": "Toleration of a node taint.",
+"id": "PolicyControllerToleration",
+"properties": {
+"effect": {
+"description": "Matches a taint effect.",
+"type": "string"
+},
+"key": {
+"description": "Matches a taint key (not necessarily unique).",
+"type": "string"
+},
+"operator": {
+"description": "Matches a taint operator.",
+"type": "string"
+},
+"value": {
+"description": "Matches a taint value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceMeshAnalysisMessage": {
+"description": "AnalysisMessage is a single message produced by an analyzer, and it used to communicate to the end user about the state of their Service Mesh configuration.",
+"id": "ServiceMeshAnalysisMessage",
+"properties": {
+"args": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "A UI can combine these args with a template (based on message_base.type) to produce an internationalized message.",
+"type": "object"
+},
+"description": {
+"description": "A human readable description of what the error means. It is suitable for non-internationalize display purposes.",
+"type": "string"
+},
+"messageBase": {
+"$ref": "ServiceMeshAnalysisMessageBase",
+"description": "Details common to all types of Istio and ServiceMesh analysis messages."
+},
+"resourcePaths": {
+"description": "A list of strings specifying the resource identifiers that were the cause of message generation. A \"path\" here may be: * MEMBERSHIP_ID if the cause is a specific member cluster * MEMBERSHIP_ID/(NAMESPACE\\/)?RESOURCETYPE/NAME if the cause is a resource in a cluster",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ServiceMeshAnalysisMessageBase": {
+"description": "AnalysisMessageBase describes some common information that is needed for all messages.",
+"id": "ServiceMeshAnalysisMessageBase",
+"properties": {
+"documentationUrl": {
+"description": "A url pointing to the Service Mesh or Istio documentation for this specific error type.",
+"type": "string"
+},
+"level": {
+"description": "Represents how severe a message is.",
+"enum": [
+"LEVEL_UNSPECIFIED",
+"ERROR",
+"WARNING",
+"INFO"
+],
+"enumDescriptions": [
+"Illegal. Same istio.analysis.v1alpha1.AnalysisMessageBase.Level.UNKNOWN.",
+"ERROR represents a misconfiguration that must be fixed.",
+"WARNING represents a misconfiguration that should be fixed.",
+"INFO represents an informational finding."
+],
+"type": "string"
+},
+"type": {
+"$ref": "ServiceMeshType",
+"description": "Represents the specific type of a message."
+}
+},
+"type": "object"
+},
+"ServiceMeshCondition": {
+"description": "Condition being reported.",
+"id": "ServiceMeshCondition",
+"properties": {
+"code": {
+"description": "Unique identifier of the condition which describes the condition recognizable to the user.",
+"enum": [
+"CODE_UNSPECIFIED",
+"MESH_IAM_PERMISSION_DENIED",
+"MESH_IAM_CROSS_PROJECT_PERMISSION_DENIED",
+"CNI_CONFIG_UNSUPPORTED",
+"GKE_SANDBOX_UNSUPPORTED",
+"NODEPOOL_WORKLOAD_IDENTITY_FEDERATION_REQUIRED",
+"CNI_INSTALLATION_FAILED",
+"CNI_POD_UNSCHEDULABLE",
+"CLUSTER_HAS_ZERO_NODES",
+"UNSUPPORTED_MULTIPLE_CONTROL_PLANES",
+"VPCSC_GA_SUPPORTED",
+"DEPRECATED_SPEC_CONTROL_PLANE_MANAGEMENT",
+"DEPRECATED_SPEC_CONTROL_PLANE_MANAGEMENT_SAFE",
+"CONFIG_APPLY_INTERNAL_ERROR",
+"CONFIG_VALIDATION_ERROR",
+"CONFIG_VALIDATION_WARNING",
+"QUOTA_EXCEEDED_BACKEND_SERVICES",
+"QUOTA_EXCEEDED_HEALTH_CHECKS",
+"QUOTA_EXCEEDED_HTTP_ROUTES",
+"QUOTA_EXCEEDED_TCP_ROUTES",
+"QUOTA_EXCEEDED_TLS_ROUTES",
+"QUOTA_EXCEEDED_TRAFFIC_POLICIES",
+"QUOTA_EXCEEDED_ENDPOINT_POLICIES",
+"QUOTA_EXCEEDED_GATEWAYS",
+"QUOTA_EXCEEDED_MESHES",
+"QUOTA_EXCEEDED_SERVER_TLS_POLICIES",
+"QUOTA_EXCEEDED_CLIENT_TLS_POLICIES",
+"QUOTA_EXCEEDED_SERVICE_LB_POLICIES",
+"QUOTA_EXCEEDED_HTTP_FILTERS",
+"QUOTA_EXCEEDED_TCP_FILTERS",
+"QUOTA_EXCEEDED_NETWORK_ENDPOINT_GROUPS",
+"MODERNIZATION_SCHEDULED",
+"MODERNIZATION_IN_PROGRESS",
+"MODERNIZATION_COMPLETED",
+"MODERNIZATION_ABORTED"
+],
+"enumDescriptions": [
+"Default Unspecified code",
+"Mesh IAM permission denied error code",
+"Permission denied error code for cross-project",
+"CNI config unsupported error code",
+"GKE sandbox unsupported error code",
+"Nodepool workload identity federation required error code",
+"CNI installation failed error code",
+"CNI pod unschedulable error code",
+"Cluster has zero node code",
+"Multiple control planes unsupported error code",
+"VPC-SC GA is supported for this control plane.",
+"User is using deprecated ControlPlaneManagement and they have not yet set Management.",
+"User is using deprecated ControlPlaneManagement and they have already set Management.",
+"Configuration (Istio/k8s resources) failed to apply due to internal error.",
+"Configuration failed to be applied due to being invalid.",
+"Encountered configuration(s) with possible unintended behavior or invalid configuration. These configs may not have been applied.",
+"BackendService quota exceeded error code.",
+"HealthCheck quota exceeded error code.",
+"HTTPRoute quota exceeded error code.",
+"TCPRoute quota exceeded error code.",
+"TLS routes quota exceeded error code.",
+"TrafficPolicy quota exceeded error code.",
+"EndpointPolicy quota exceeded error code.",
+"Gateway quota exceeded error code.",
+"Mesh quota exceeded error code.",
+"ServerTLSPolicy quota exceeded error code.",
+"ClientTLSPolicy quota exceeded error code.",
+"ServiceLBPolicy quota exceeded error code.",
+"HTTPFilter quota exceeded error code.",
+"TCPFilter quota exceeded error code.",
+"NetworkEndpointGroup quota exceeded error code.",
+"Modernization is scheduled for a cluster.",
+"Modernization is in progress for a cluster.",
+"Modernization is completed for a cluster.",
+"Modernization is aborted for a cluster."
+],
+"type": "string"
+},
+"details": {
+"description": "A short summary about the issue.",
+"type": "string"
+},
+"documentationLink": {
+"description": "Links contains actionable information.",
+"type": "string"
+},
+"severity": {
+"description": "Severity level of the condition.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"ERROR",
+"WARNING",
+"INFO"
+],
+"enumDescriptions": [
+"Unspecified severity",
+"Indicates an issue that prevents the mesh from operating correctly",
+"Indicates a setting is likely wrong, but the mesh is still able to operate",
+"An informational message, not requiring any action"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceMeshControlPlaneManagement": {
+"description": "Status of control plane management.",
+"id": "ServiceMeshControlPlaneManagement",
+"properties": {
+"details": {
+"description": "Explanation of state.",
+"items": {
+"$ref": "ServiceMeshStatusDetails"
+},
+"type": "array"
+},
+"implementation": {
+"description": "Output only. Implementation of managed control plane.",
+"enum": [
+"IMPLEMENTATION_UNSPECIFIED",
+"ISTIOD",
+"TRAFFIC_DIRECTOR",
+"UPDATING"
+],
+"enumDescriptions": [
+"Unspecified",
+"A Google build of istiod is used for the managed control plane.",
+"Traffic director is used for the managed control plane.",
+"The control plane implementation is being updated."
+],
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "LifecycleState of control plane management.",
+"enum": [
+"LIFECYCLE_STATE_UNSPECIFIED",
+"DISABLED",
+"FAILED_PRECONDITION",
+"PROVISIONING",
+"ACTIVE",
+"STALLED",
+"NEEDS_ATTENTION",
+"DEGRADED"
+],
+"enumDescriptions": [
+"Unspecified",
+"DISABLED means that the component is not enabled.",
+"FAILED_PRECONDITION means that provisioning cannot proceed because of some characteristic of the member cluster.",
+"PROVISIONING means that provisioning is in progress.",
+"ACTIVE means that the component is ready for use.",
+"STALLED means that provisioning could not be done.",
+"NEEDS_ATTENTION means that the component is ready, but some user intervention is required. (For example that the user should migrate workloads to a new control plane revision.)",
+"DEGRADED means that the component is ready, but operating in a degraded state."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceMeshDataPlaneManagement": {
+"description": "Status of data plane management. Only reported per-member.",
+"id": "ServiceMeshDataPlaneManagement",
+"properties": {
+"details": {
+"description": "Explanation of the status.",
+"items": {
+"$ref": "ServiceMeshStatusDetails"
+},
+"type": "array"
+},
+"state": {
+"description": "Lifecycle status of data plane management.",
+"enum": [
+"LIFECYCLE_STATE_UNSPECIFIED",
+"DISABLED",
+"FAILED_PRECONDITION",
+"PROVISIONING",
+"ACTIVE",
+"STALLED",
+"NEEDS_ATTENTION",
+"DEGRADED"
+],
+"enumDescriptions": [
+"Unspecified",
+"DISABLED means that the component is not enabled.",
+"FAILED_PRECONDITION means that provisioning cannot proceed because of some characteristic of the member cluster.",
+"PROVISIONING means that provisioning is in progress.",
+"ACTIVE means that the component is ready for use.",
+"STALLED means that provisioning could not be done.",
+"NEEDS_ATTENTION means that the component is ready, but some user intervention is required. (For example that the user should migrate workloads to a new control plane revision.)",
+"DEGRADED means that the component is ready, but operating in a degraded state."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceMeshSpec": {
+"description": "**Service Mesh**: Spec for a single Membership for the servicemesh feature",
+"id": "ServiceMeshSpec",
+"properties": {
+"configApi": {
+"description": "Optional. Specifies the API that will be used for configuring the mesh workloads.",
+"enum": [
+"CONFIG_API_UNSPECIFIED",
+"CONFIG_API_ISTIO",
+"CONFIG_API_GATEWAY"
+],
+"enumDescriptions": [
+"Unspecified",
+"Use the Istio API for configuration.",
+"Use the K8s Gateway API for configuration."
+],
+"type": "string"
+},
+"controlPlane": {
+"deprecated": true,
+"description": "Deprecated: use `management` instead Enables automatic control plane management.",
+"enum": [
+"CONTROL_PLANE_MANAGEMENT_UNSPECIFIED",
+"AUTOMATIC",
+"MANUAL"
+],
+"enumDescriptions": [
+"Unspecified",
+"Google should provision a control plane revision and make it available in the cluster. Google will enroll this revision in a release channel and keep it up to date. The control plane revision may be a managed service, or a managed install.",
+"User will manually configure the control plane (e.g. via CLI, or via the ControlPlaneRevision KRM API)"
+],
+"type": "string"
+},
+"defaultChannel": {
+"deprecated": true,
+"description": "Determines which release channel to use for default injection and service mesh APIs.",
+"enum": [
+"CHANNEL_UNSPECIFIED",
+"RAPID",
+"REGULAR",
+"STABLE"
+],
+"enumDescriptions": [
+"Unspecified",
+"RAPID channel is offered on an early access basis for customers who want to test new releases.",
+"REGULAR channel is intended for production users who want to take advantage of new features.",
+"STABLE channel includes versions that are known to be stable and reliable in production."
+],
+"type": "string"
+},
+"management": {
+"description": "Optional. Enables automatic Service Mesh management.",
+"enum": [
+"MANAGEMENT_UNSPECIFIED",
+"MANAGEMENT_AUTOMATIC",
+"MANAGEMENT_MANUAL"
+],
+"enumDescriptions": [
+"Unspecified",
+"Google should manage my Service Mesh for the cluster.",
+"User will manually configure their service mesh components."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceMeshState": {
+"description": "**Service Mesh**: State for a single Membership, as analyzed by the Service Mesh Hub Controller.",
+"id": "ServiceMeshState",
+"properties": {
+"analysisMessages": {
+"description": "Output only. Results of running Service Mesh analyzers.",
+"items": {
+"$ref": "ServiceMeshAnalysisMessage"
+},
+"readOnly": true,
+"type": "array"
+},
+"conditions": {
+"description": "Output only. List of conditions reported for this membership.",
+"items": {
+"$ref": "ServiceMeshCondition"
+},
+"readOnly": true,
+"type": "array"
+},
+"configApiVersion": {
+"description": "The API version (i.e. Istio CRD version) for configuring service mesh in this cluster. This version is influenced by the `default_channel` field.",
+"type": "string"
+},
+"controlPlaneManagement": {
+"$ref": "ServiceMeshControlPlaneManagement",
+"description": "Output only. Status of control plane management",
+"readOnly": true
+},
+"dataPlaneManagement": {
+"$ref": "ServiceMeshDataPlaneManagement",
+"description": "Output only. Status of data plane management.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"ServiceMeshStatusDetails": {
+"description": "Structured and human-readable details for a status.",
+"id": "ServiceMeshStatusDetails",
+"properties": {
+"code": {
+"description": "A machine-readable code that further describes a broad status.",
+"type": "string"
+},
+"details": {
+"description": "Human-readable explanation of code.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceMeshType": {
+"description": "A unique identifier for the type of message. Display_name is intended to be human-readable, code is intended to be machine readable. There should be a one-to-one mapping between display_name and code. (i.e. do not re-use display_names or codes between message types.) See istio.analysis.v1alpha1.AnalysisMessageBase.Type",
+"id": "ServiceMeshType",
+"properties": {
+"code": {
+"description": "A 7 character code matching `^IST[0-9]{4}$` or `^ASM[0-9]{4}$`, intended to uniquely identify the message type. (e.g. \"IST0001\" is mapped to the \"InternalError\" message type.)",
+"type": "string"
+},
+"displayName": {
+"description": "A human-readable name for the message type. e.g. \"InternalError\", \"PodMissingProxy\". This should be the same for all messages of the same type. (This corresponds to the `name` field in open-source Istio.)",
+"type": "string"
+}
+},
+"type": "object"
+},
+"State": {
+"description": "High-level state of a MembershipFeature.",
+"id": "State",
+"properties": {
+"code": {
+"description": "The high-level, machine-readable status of this MembershipFeature.",
+"enum": [
+"CODE_UNSPECIFIED",
+"OK",
+"WARNING",
+"ERROR"
+],
+"enumDescriptions": [
+"Unknown or not set.",
+"The MembershipFeature is operating normally.",
+"The MembershipFeature has encountered an issue, and is operating in a degraded state. The MembershipFeature may need intervention to return to normal operation. See the description and any associated MembershipFeature-specific details for more information.",
+"The MembershipFeature is not operating or is in a severely degraded state. The MembershipFeature may need intervention to return to normal operation. See the description and any associated MembershipFeature-specific details for more information."
+],
+"type": "string"
+},
+"description": {
+"description": "A human-readable description of the current status.",
+"type": "string"
+},
+"updateTime": {
+"description": "The time this status and any related Feature-specific details were updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WorkloadCertificateSpec": {
+"description": "**WorkloadCertificate**: The membership-specific input for WorkloadCertificate feature.",
+"id": "WorkloadCertificateSpec",
+"properties": {
+"certificateManagement": {
+"description": "CertificateManagement specifies workload certificate management.",
+"enum": [
+"CERTIFICATE_MANAGEMENT_UNSPECIFIED",
+"DISABLED",
+"ENABLED"
+],
+"enumDescriptions": [
+"Disable workload certificate feature.",
+"Disable workload certificate feature.",
+"Enable workload certificate feature."
+],
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "GKE Hub API",
+"version": "v2beta",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/groupssettings.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/groupssettings.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..18019674b0f81bdd911afb46c39af0059aa0c5a5
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/groupssettings.v1.json
@@ -0,0 +1,419 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/apps.groups.settings": {
+"description": "View and manage the settings of a G Suite group"
+}
+}
+}
+},
+"basePath": "/groups/v1/groups/",
+"baseUrl": "https://www.googleapis.com/groups/v1/groups/",
+"batchPath": "batch/groupssettings/v1",
+"description": "Manages permission levels and related settings of a group.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/google-apps/groups-settings/get_started",
+"icons": {
+"x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png",
+"x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png"
+},
+"id": "groupssettings:v1",
+"kind": "discovery#restDescription",
+"name": "groupssettings",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"alt": {
+"default": "atom",
+"description": "Data format for the response.",
+"enum": [
+"atom",
+"json"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/atom+xml",
+"Responses with Content-Type of application/json"
+],
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "An opaque string that represents a user for quota purposes. Must not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"userIp": {
+"description": "Deprecated. Please use quotaUser instead.",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"groups": {
+"methods": {
+"get": {
+"description": "Gets one resource by id.",
+"httpMethod": "GET",
+"id": "groupsSettings.groups.get",
+"parameterOrder": [
+"groupUniqueId"
+],
+"parameters": {
+"groupUniqueId": {
+"description": "The group's email address.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "{groupUniqueId}",
+"response": {
+"$ref": "Groups"
+},
+"scopes": [
+"https://www.googleapis.com/auth/apps.groups.settings"
+]
+},
+"patch": {
+"description": "Updates an existing resource. This method supports patch semantics.",
+"httpMethod": "PATCH",
+"id": "groupsSettings.groups.patch",
+"parameterOrder": [
+"groupUniqueId"
+],
+"parameters": {
+"groupUniqueId": {
+"description": "The group's email address.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "{groupUniqueId}",
+"request": {
+"$ref": "Groups"
+},
+"response": {
+"$ref": "Groups"
+},
+"scopes": [
+"https://www.googleapis.com/auth/apps.groups.settings"
+]
+},
+"update": {
+"description": "Updates an existing resource.",
+"httpMethod": "PUT",
+"id": "groupsSettings.groups.update",
+"parameterOrder": [
+"groupUniqueId"
+],
+"parameters": {
+"groupUniqueId": {
+"description": "The group's email address.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "{groupUniqueId}",
+"request": {
+"$ref": "Groups"
+},
+"response": {
+"$ref": "Groups"
+},
+"scopes": [
+"https://www.googleapis.com/auth/apps.groups.settings"
+]
+}
+}
+}
+},
+"revision": "20220614",
+"rootUrl": "https://www.googleapis.com/",
+"schemas": {
+"Groups": {
+"description": "JSON template for Group resource",
+"id": "Groups",
+"properties": {
+"allowExternalMembers": {
+"description": "Identifies whether members external to your organization can join the group. Possible values are: \n- true: G Suite users external to your organization can become members of this group. \n- false: Users not belonging to the organization are not allowed to become members of this group.",
+"type": "string"
+},
+"allowGoogleCommunication": {
+"description": "Deprecated. Allows Google to contact administrator of the group. \n- true: Allow Google to contact managers of this group. Occasionally Google may send updates on the latest features, ask for input on new features, or ask for permission to highlight your group. \n- false: Google can not contact managers of this group.",
+"type": "string"
+},
+"allowWebPosting": {
+"description": "Allows posting from web. Possible values are: \n- true: Allows any member to post to the group forum. \n- false: Members only use Gmail to communicate with the group.",
+"type": "string"
+},
+"archiveOnly": {
+"description": "Allows the group to be archived only. Possible values are: \n- true: Group is archived and the group is inactive. New messages to this group are rejected. The older archived messages are browseable and searchable. \n- If true, the whoCanPostMessage property is set to NONE_CAN_POST. \n- If reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST. \n- false: The group is active and can receive messages. \n- When false, updating whoCanPostMessage to NONE_CAN_POST, results in an error.",
+"type": "string"
+},
+"customFooterText": {
+"description": "Set the content of custom footer text. The maximum number of characters is 1,000.",
+"type": "string"
+},
+"customReplyTo": {
+"description": "An email address used when replying to a message if the replyTo property is set to REPLY_TO_CUSTOM. This address is defined by an account administrator. \n- When the group's ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds a custom email address used when replying to a message. \n- If the group's ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a text value or an error is returned.",
+"type": "string"
+},
+"customRolesEnabledForSettingsToBeMerged": {
+"description": "Specifies whether the group has a custom role that's included in one of the settings being merged. This field is read-only and update/patch requests to it are ignored. Possible values are: \n- true \n- false",
+"type": "string"
+},
+"defaultMessageDenyNotificationText": {
+"description": "When a message is rejected, this is text for the rejection notification sent to the message's author. By default, this property is empty and has no value in the API's response body. The maximum notification text size is 10,000 characters. Note: Requires sendMessageDenyNotification property to be true.",
+"type": "string"
+},
+"default_sender": {
+"description": "Default sender for members who can post messages as the group. Possible values are: - `DEFAULT_SELF`: By default messages will be sent from the user - `GROUP`: By default messages will be sent from the group",
+"type": "string"
+},
+"description": {
+"description": "Description of the group. This property value may be an empty string if no group description has been entered. If entered, the maximum group description is no more than 300 characters.",
+"type": "string"
+},
+"email": {
+"description": "The group's email address. This property can be updated using the Directory API. Note: Only a group owner can change a group's email address. A group manager can't do this.\nWhen you change your group's address using the Directory API or the control panel, you are changing the address your subscribers use to send email and the web address people use to access your group. People can't reach your group by visiting the old address.",
+"type": "string"
+},
+"enableCollaborativeInbox": {
+"description": "Specifies whether a collaborative inbox will remain turned on for the group. Possible values are: \n- true \n- false",
+"type": "string"
+},
+"favoriteRepliesOnTop": {
+"description": "Indicates if favorite replies should be displayed above other replies. \n- true: Favorite replies will be displayed above other replies. \n- false: Favorite replies will not be displayed above other replies.",
+"type": "string"
+},
+"includeCustomFooter": {
+"description": "Whether to include custom footer. Possible values are: \n- true \n- false",
+"type": "string"
+},
+"includeInGlobalAddressList": {
+"description": "Enables the group to be included in the Global Address List. For more information, see the help center. Possible values are: \n- true: Group is included in the Global Address List. \n- false: Group is not included in the Global Address List.",
+"type": "string"
+},
+"isArchived": {
+"description": "Allows the Group contents to be archived. Possible values are: \n- true: Archive messages sent to the group. \n- false: Do not keep an archive of messages sent to this group. If false, previously archived messages remain in the archive.",
+"type": "string"
+},
+"kind": {
+"default": "groupsSettings#groups",
+"description": "The type of the resource. It is always groupsSettings#groups.",
+"type": "string"
+},
+"maxMessageBytes": {
+"description": "Deprecated. The maximum size of a message is 25Mb.",
+"format": "int32",
+"type": "integer"
+},
+"membersCanPostAsTheGroup": {
+"description": "Enables members to post messages as the group. Possible values are: \n- true: Group member can post messages using the group's email address instead of their own email address. Message appear to originate from the group itself. Note: When true, any message moderation settings on individual users or new members do not apply to posts made on behalf of the group. \n- false: Members can not post in behalf of the group's email address.",
+"type": "string"
+},
+"messageDisplayFont": {
+"description": "Deprecated. The default message display font always has a value of \"DEFAULT_FONT\".",
+"type": "string"
+},
+"messageModerationLevel": {
+"description": "Moderation level of incoming messages. Possible values are: \n- MODERATE_ALL_MESSAGES: All messages are sent to the group owner's email address for approval. If approved, the message is sent to the group. \n- MODERATE_NON_MEMBERS: All messages from non group members are sent to the group owner's email address for approval. If approved, the message is sent to the group. \n- MODERATE_NEW_MEMBERS: All messages from new members are sent to the group owner's email address for approval. If approved, the message is sent to the group. \n- MODERATE_NONE: No moderator approval is required. Messages are delivered directly to the group. Note: When the whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.\nWhen memberCanPostAsTheGroup is true, any message moderation settings on individual users or new members will not apply to posts made on behalf of the group.",
+"type": "string"
+},
+"name": {
+"description": "Name of the group, which has a maximum size of 75 characters.",
+"type": "string"
+},
+"primaryLanguage": {
+"description": "The primary language for group. For a group's primary language use the language tags from the G Suite languages found at G Suite Email Settings API Email Language Tags.",
+"type": "string"
+},
+"replyTo": {
+"description": "Specifies who receives the default reply. Possible values are: \n- REPLY_TO_CUSTOM: For replies to messages, use the group's custom email address.\nWhen the group's ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property holds the custom email address used when replying to a message. If the group's ReplyTo property is set to REPLY_TO_CUSTOM, the customReplyTo property must have a value. Otherwise an error is returned.\n \n- REPLY_TO_SENDER: The reply sent to author of message. \n- REPLY_TO_LIST: This reply message is sent to the group. \n- REPLY_TO_OWNER: The reply is sent to the owner(s) of the group. This does not include the group's managers. \n- REPLY_TO_IGNORE: Group users individually decide where the message reply is sent. \n- REPLY_TO_MANAGERS: This reply message is sent to the group's managers, which includes all managers and the group owner.",
+"type": "string"
+},
+"sendMessageDenyNotification": {
+"description": "Allows a member to be notified if the member's message to the group is denied by the group owner. Possible values are: \n- true: When a message is rejected, send the deny message notification to the message author.\nThe defaultMessageDenyNotificationText property is dependent on the sendMessageDenyNotification property being true.\n \n- false: When a message is rejected, no notification is sent.",
+"type": "string"
+},
+"showInGroupDirectory": {
+"description": "Deprecated. This is merged into the new whoCanDiscoverGroup setting. Allows the group to be visible in the Groups Directory. Possible values are: \n- true: All groups in the account are listed in the Groups directory. \n- false: All groups in the account are not listed in the directory.",
+"type": "string"
+},
+"spamModerationLevel": {
+"description": "Specifies moderation levels for messages detected as spam. Possible values are: \n- ALLOW: Post the message to the group. \n- MODERATE: Send the message to the moderation queue. This is the default. \n- SILENTLY_MODERATE: Send the message to the moderation queue, but do not send notification to moderators. \n- REJECT: Immediately reject the message.",
+"type": "string"
+},
+"whoCanAdd": {
+"description": "Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to add members. Possible values are: \n- ALL_MEMBERS_CAN_ADD: Managers and members can directly add new members. \n- ALL_MANAGERS_CAN_ADD: Only managers can directly add new members. this includes the group's owner. \n- ALL_OWNERS_CAN_ADD: Only owners can directly add new members. \n- NONE_CAN_ADD: No one can directly add new members.",
+"type": "string"
+},
+"whoCanAddReferences": {
+"description": "Deprecated. This functionality is no longer supported in the Google Groups UI. The value is always \"NONE\".",
+"type": "string"
+},
+"whoCanApproveMembers": {
+"description": "Specifies who can approve members who ask to join groups. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are: \n- ALL_MEMBERS_CAN_APPROVE \n- ALL_MANAGERS_CAN_APPROVE \n- ALL_OWNERS_CAN_APPROVE \n- NONE_CAN_APPROVE",
+"type": "string"
+},
+"whoCanApproveMessages": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can approve pending messages in the moderation queue. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanAssignTopics": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to assign topics in a forum to another user. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanAssistContent": {
+"description": "Specifies who can moderate metadata. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanBanUsers": {
+"description": "Specifies who can deny membership to users. This permission will be deprecated once it is merged into the new whoCanModerateMembers setting. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanContactOwner": {
+"description": "Permission to contact owner of the group via web UI. Possible values are: \n- ALL_IN_DOMAIN_CAN_CONTACT \n- ALL_MANAGERS_CAN_CONTACT \n- ALL_MEMBERS_CAN_CONTACT \n- ANYONE_CAN_CONTACT \n- ALL_OWNERS_CAN_CONTACT",
+"type": "string"
+},
+"whoCanDeleteAnyPost": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete replies to topics. (Authors can always delete their own posts). Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanDeleteTopics": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can delete topics. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanDiscoverGroup": {
+"description": "Specifies the set of users for whom this group is discoverable. Possible values are: \n- ANYONE_CAN_DISCOVER \n- ALL_IN_DOMAIN_CAN_DISCOVER \n- ALL_MEMBERS_CAN_DISCOVER",
+"type": "string"
+},
+"whoCanEnterFreeFormTags": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to enter free form tags for topics in a forum. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanHideAbuse": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can hide posts by reporting them as abuse. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanInvite": {
+"description": "Deprecated. This is merged into the new whoCanModerateMembers setting. Permissions to invite new members. Possible values are: \n- ALL_MEMBERS_CAN_INVITE: Managers and members can invite a new member candidate. \n- ALL_MANAGERS_CAN_INVITE: Only managers can invite a new member. This includes the group's owner. \n- ALL_OWNERS_CAN_INVITE: Only owners can invite a new member. \n- NONE_CAN_INVITE: No one can invite a new member candidate.",
+"type": "string"
+},
+"whoCanJoin": {
+"description": "Permission to join group. Possible values are: \n- ANYONE_CAN_JOIN: Any Internet user who is outside your domain can access your Google Groups service and view the list of groups in your Groups directory. Warning: Group owners can add external addresses, outside of the domain to their groups. They can also allow people outside your domain to join their groups. If you later disable this option, any external addresses already added to users' groups remain in those groups. \n- ALL_IN_DOMAIN_CAN_JOIN: Anyone in the account domain can join. This includes accounts with multiple domains. \n- INVITED_CAN_JOIN: Candidates for membership can be invited to join. \n- CAN_REQUEST_TO_JOIN: Non members can request an invitation to join.",
+"type": "string"
+},
+"whoCanLeaveGroup": {
+"description": "Permission to leave the group. Possible values are: \n- ALL_MANAGERS_CAN_LEAVE \n- ALL_MEMBERS_CAN_LEAVE \n- NONE_CAN_LEAVE",
+"type": "string"
+},
+"whoCanLockTopics": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can prevent users from posting replies to topics. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanMakeTopicsSticky": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can make topics appear at the top of the topic list. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanMarkDuplicate": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as a duplicate of another topic. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanMarkFavoriteReplyOnAnyTopic": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark any other user's post as a favorite reply. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanMarkFavoriteReplyOnOwnTopic": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a post for a topic they started as a favorite reply. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanMarkNoResponseNeeded": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to mark a topic as not needing a response. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanModerateContent": {
+"description": "Specifies who can moderate content. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanModerateMembers": {
+"description": "Specifies who can manage members. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanModifyMembers": {
+"description": "Deprecated. This is merged into the new whoCanModerateMembers setting. Specifies who can change group members' roles. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanModifyTagsAndCategories": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to change tags and categories. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanMoveTopicsIn": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics into the group or forum. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanMoveTopicsOut": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can move topics out of the group or forum. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanPostAnnouncements": {
+"description": "Deprecated. This is merged into the new whoCanModerateContent setting. Specifies who can post announcements, a special topic type. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanPostMessage": {
+"description": "Permissions to post messages. Possible values are: \n- NONE_CAN_POST: The group is disabled and archived. No one can post a message to this group. \n- When archiveOnly is false, updating whoCanPostMessage to NONE_CAN_POST, results in an error. \n- If archiveOnly is reverted from true to false, whoCanPostMessages is set to ALL_MANAGERS_CAN_POST. \n- ALL_MANAGERS_CAN_POST: Managers, including group owners, can post messages. \n- ALL_MEMBERS_CAN_POST: Any group member can post a message. \n- ALL_OWNERS_CAN_POST: Only group owners can post a message. \n- ALL_IN_DOMAIN_CAN_POST: Anyone in the account can post a message. \n- ANYONE_CAN_POST: Any Internet user who outside your account can access your Google Groups service and post a message. Note: When whoCanPostMessage is set to ANYONE_CAN_POST, we recommend the messageModerationLevel be set to MODERATE_NON_MEMBERS to protect the group from possible spam.",
+"type": "string"
+},
+"whoCanTakeTopics": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to take topics in a forum. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanUnassignTopic": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unassign any topic in a forum. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanUnmarkFavoriteReplyOnAnyTopic": {
+"description": "Deprecated. This is merged into the new whoCanAssistContent setting. Permission to unmark any post from a favorite reply. Possible values are: \n- ALL_MEMBERS \n- OWNERS_AND_MANAGERS \n- MANAGERS_ONLY \n- OWNERS_ONLY \n- NONE",
+"type": "string"
+},
+"whoCanViewGroup": {
+"description": "Permissions to view group messages. Possible values are: \n- ANYONE_CAN_VIEW: Any Internet user can view the group's messages. \n- ALL_IN_DOMAIN_CAN_VIEW: Anyone in your account can view this group's messages. \n- ALL_MEMBERS_CAN_VIEW: All group members can view the group's messages. \n- ALL_MANAGERS_CAN_VIEW: Any group manager can view this group's messages.",
+"type": "string"
+},
+"whoCanViewMembership": {
+"description": "Permissions to view membership. Possible values are: \n- ALL_IN_DOMAIN_CAN_VIEW: Anyone in the account can view the group members list.\nIf a group already has external members, those members can still send email to this group.\n \n- ALL_MEMBERS_CAN_VIEW: The group members can view the group members list. \n- ALL_MANAGERS_CAN_VIEW: The group managers can view group members list.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "groups/v1/groups/",
+"title": "Groups Settings API",
+"version": "v1"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/iam.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/iam.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..0d16cf93282a1871be856b4d20ccfc41521c2fc1
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/iam.v2.json
@@ -0,0 +1,880 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://iam.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Iam",
+"description": "Manages identity and access control for Google Cloud resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls. Enabling this API also enables the IAM Service Account Credentials API (iamcredentials.googleapis.com). However, disabling this API doesn't disable the IAM Service Account Credentials API. ",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/iam/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "iam:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://iam.mtls.googleapis.com/",
+"name": "iam",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"policies": {
+"methods": {
+"createPolicy": {
+"description": "Creates a policy.",
+"flatPath": "v2/policies/{policiesId}/{policiesId1}",
+"httpMethod": "POST",
+"id": "iam.policies.createPolicy",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The resource that the policy is attached to, along with the kind of policy to create. Format: `policies/{attachment_point}/denypolicies` The attachment point is identified by its URL-encoded full resource name, which means that the forward-slash character, `/`, must be written as `%2F`. For example, `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies`. For organizations and folders, use the numeric ID in the full resource name. For projects, you can use the alphanumeric or the numeric ID.",
+"location": "path",
+"pattern": "^policies/[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+},
+"policyId": {
+"description": "The ID to use for this policy, which will become the final component of the policy's resource name. The ID must contain 3 to 63 characters. It can contain lowercase letters and numbers, as well as dashes (`-`) and periods (`.`). The first character must be a lowercase letter.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+parent}",
+"request": {
+"$ref": "GoogleIamV2Policy"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a policy. This action is permanent.",
+"flatPath": "v2/policies/{policiesId}/{policiesId1}/{policiesId2}",
+"httpMethod": "DELETE",
+"id": "iam.policies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The expected `etag` of the policy to delete. If the value does not match the value that is stored in IAM, the request fails with a `409` error code and `ABORTED` status. If you omit this field, the policy is deleted regardless of its current `etag`.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The resource name of the policy to delete. Format: `policies/{attachment_point}/denypolicies/{policy_id}` Use the URL-encoded full resource name, which means that the forward-slash character, `/`, must be written as `%2F`. For example, `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-policy`. For organizations and folders, use the numeric ID in the full resource name. For projects, you can use the alphanumeric or the numeric ID.",
+"location": "path",
+"pattern": "^policies/[^/]+/[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a policy.",
+"flatPath": "v2/policies/{policiesId}/{policiesId1}/{policiesId2}",
+"httpMethod": "GET",
+"id": "iam.policies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the policy to retrieve. Format: `policies/{attachment_point}/denypolicies/{policy_id}` Use the URL-encoded full resource name, which means that the forward-slash character, `/`, must be written as `%2F`. For example, `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-policy`. For organizations and folders, use the numeric ID in the full resource name. For projects, you can use the alphanumeric or the numeric ID.",
+"location": "path",
+"pattern": "^policies/[^/]+/[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleIamV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"listPolicies": {
+"description": "Retrieves the policies of the specified kind that are attached to a resource. The response lists only policy metadata. In particular, policy rules are omitted.",
+"flatPath": "v2/policies/{policiesId}/{policiesId1}",
+"httpMethod": "GET",
+"id": "iam.policies.listPolicies",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of policies to return. IAM ignores this value and uses the value 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received in a ListPoliciesResponse. Provide this token to retrieve the next page.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The resource that the policy is attached to, along with the kind of policy to list. Format: `policies/{attachment_point}/denypolicies` The attachment point is identified by its URL-encoded full resource name, which means that the forward-slash character, `/`, must be written as `%2F`. For example, `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies`. For organizations and folders, use the numeric ID in the full resource name. For projects, you can use the alphanumeric or the numeric ID.",
+"location": "path",
+"pattern": "^policies/[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}",
+"response": {
+"$ref": "GoogleIamV2ListPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"update": {
+"description": "Updates the specified policy. You can update only the rules and the display name for the policy. To update a policy, you should use a read-modify-write loop: 1. Use GetPolicy to read the current version of the policy. 2. Modify the policy as needed. 3. Use `UpdatePolicy` to write the updated policy. This pattern helps prevent conflicts between concurrent updates.",
+"flatPath": "v2/policies/{policiesId}/{policiesId1}/{policiesId2}",
+"httpMethod": "PUT",
+"id": "iam.policies.update",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The resource name of the `Policy`, which must be unique. Format: `policies/{attachment_point}/denypolicies/{policy_id}` The attachment point is identified by its URL-encoded full resource name, which means that the forward-slash character, `/`, must be written as `%2F`. For example, `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-deny-policy`. For organizations and folders, use the numeric ID in the full resource name. For projects, requests can use the alphanumeric or the numeric ID. Responses always contain the numeric ID.",
+"location": "path",
+"pattern": "^policies/[^/]+/[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleIamV2Policy"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v2/policies/{policiesId}/{policiesId1}/{policiesId2}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "iam.policies.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^policies/[^/]+/[^/]+/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20241114",
+"rootUrl": "https://iam.googleapis.com/",
+"schemas": {
+"CloudControl2SharedOperationsReconciliationOperationMetadata": {
+"description": "Operation metadata returned by the CLH during resource state reconciliation.",
+"id": "CloudControl2SharedOperationsReconciliationOperationMetadata",
+"properties": {
+"deleteResource": {
+"deprecated": true,
+"description": "DEPRECATED. Use exclusive_action instead.",
+"type": "boolean"
+},
+"exclusiveAction": {
+"description": "Excluisive action returned by the CLH.",
+"enum": [
+"UNKNOWN_REPAIR_ACTION",
+"DELETE",
+"RETRY"
+],
+"enumDeprecated": [
+false,
+true,
+false
+],
+"enumDescriptions": [
+"Unknown repair action.",
+"The resource has to be deleted. When using this bit, the CLH should fail the operation. DEPRECATED. Instead use DELETE_RESOURCE OperationSignal in SideChannel.",
+"This resource could not be repaired but the repair should be tried again at a later time. This can happen if there is a dependency that needs to be resolved first- e.g. if a parent resource must be repaired before a child resource."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudCommonOperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "GoogleCloudCommonOperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"cancelRequested": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have been cancelled successfully have google.longrunning.Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"statusDetail": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamAdminV1AuditData": {
+"description": "Audit log information specific to Cloud IAM admin APIs. This message is serialized as an `Any` type in the `ServiceData` message of an `AuditLog` message.",
+"id": "GoogleIamAdminV1AuditData",
+"properties": {
+"permissionDelta": {
+"$ref": "GoogleIamAdminV1AuditDataPermissionDelta",
+"description": "The permission_delta when when creating or updating a Role."
+}
+},
+"type": "object"
+},
+"GoogleIamAdminV1AuditDataPermissionDelta": {
+"description": "A PermissionDelta message to record the added_permissions and removed_permissions inside a role.",
+"id": "GoogleIamAdminV1AuditDataPermissionDelta",
+"properties": {
+"addedPermissions": {
+"description": "Added permissions.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"removedPermissions": {
+"description": "Removed permissions.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIamV1BindingDelta": {
+"description": "One delta entry for Binding. Each individual change (only one member in each entry) to a binding will be a separate entry.",
+"id": "GoogleIamV1BindingDelta",
+"properties": {
+"action": {
+"description": "The action that was performed on a Binding. Required",
+"enum": [
+"ACTION_UNSPECIFIED",
+"ADD",
+"REMOVE"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Addition of a Binding.",
+"Removal of a Binding."
+],
+"type": "string"
+},
+"condition": {
+"$ref": "GoogleTypeExpr",
+"description": "The condition that is associated with this binding."
+},
+"member": {
+"description": "A single identity requesting access for a Google Cloud resource. Follows the same format of Binding.members. Required",
+"type": "string"
+},
+"role": {
+"description": "Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. Required",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1LoggingAuditData": {
+"description": "Audit log information specific to Cloud IAM. This message is serialized as an `Any` type in the `ServiceData` message of an `AuditLog` message.",
+"id": "GoogleIamV1LoggingAuditData",
+"properties": {
+"policyDelta": {
+"$ref": "GoogleIamV1PolicyDelta",
+"description": "Policy delta between the original policy and the newly set policy."
+}
+},
+"type": "object"
+},
+"GoogleIamV1PolicyDelta": {
+"description": "The difference delta between two policies.",
+"id": "GoogleIamV1PolicyDelta",
+"properties": {
+"bindingDeltas": {
+"description": "The delta for Bindings between two policies.",
+"items": {
+"$ref": "GoogleIamV1BindingDelta"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIamV1betaWorkloadIdentityPoolOperationMetadata": {
+"description": "Metadata for long-running WorkloadIdentityPool operations.",
+"id": "GoogleIamV1betaWorkloadIdentityPoolOperationMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleIamV2DenyRule": {
+"description": "A deny rule in an IAM deny policy.",
+"id": "GoogleIamV2DenyRule",
+"properties": {
+"denialCondition": {
+"$ref": "GoogleTypeExpr",
+"description": "The condition that determines whether this deny rule applies to a request. If the condition expression evaluates to `true`, then the deny rule is applied; otherwise, the deny rule is not applied. Each deny rule is evaluated independently. If this deny rule does not apply to a request, other deny rules might still apply. The condition can use CEL functions that evaluate [resource tags](https://cloud.google.com/iam/help/conditions/resource-tags). Other functions and operators are not supported."
+},
+"deniedPermissions": {
+"description": "The permissions that are explicitly denied by this rule. Each permission uses the format `{service_fqdn}/{resource}.{verb}`, where `{service_fqdn}` is the fully qualified domain name for the service. For example, `iam.googleapis.com/roles.list`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"deniedPrincipals": {
+"description": "The identities that are prevented from using one or more permissions on Google Cloud resources. This field can contain the following values: * `principal://goog/subject/{email_id}`: A specific Google Account. Includes Gmail, Cloud Identity, and Google Workspace user accounts. For example, `principal://goog/subject/alice@example.com`. * `principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}`: A Google Cloud service account. For example, `principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com`. * `principalSet://goog/group/{group_id}`: A Google group. For example, `principalSet://goog/group/admins@example.com`. * `principalSet://goog/public:all`: A special identifier that represents any principal that is on the internet, even if they do not have a Google Account or are not logged in. * `principalSet://goog/cloudIdentityCustomerId/{customer_id}`: All of the principals associated with the specified Google Workspace or Cloud Identity customer ID. For example, `principalSet://goog/cloudIdentityCustomerId/C01Abc35`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:principal://goog/subject/{email_id}?uid={uid}`: A specific Google Account that was deleted recently. For example, `deleted:principal://goog/subject/alice@example.com?uid=1234567890`. If the Google Account is recovered, this identifier reverts to the standard identifier for a Google Account. * `deleted:principalSet://goog/group/{group_id}?uid={uid}`: A Google group that was deleted recently. For example, `deleted:principalSet://goog/group/admins@example.com?uid=1234567890`. If the Google group is restored, this identifier reverts to the standard identifier for a Google group. * `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/{service_account_id}?uid={uid}`: A Google Cloud service account that was deleted recently. For example, `deleted:principal://iam.googleapis.com/projects/-/serviceAccounts/my-service-account@iam.gserviceaccount.com?uid=1234567890`. If the service account is undeleted, this identifier reverts to the standard identifier for a service account. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"exceptionPermissions": {
+"description": "Specifies the permissions that this rule excludes from the set of denied permissions given by `denied_permissions`. If a permission appears in `denied_permissions` _and_ in `exception_permissions` then it will _not_ be denied. The excluded permissions can be specified using the same syntax as `denied_permissions`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"exceptionPrincipals": {
+"description": "The identities that are excluded from the deny rule, even if they are listed in the `denied_principals`. For example, you could add a Google group to the `denied_principals`, then exclude specific users who belong to that group. This field can contain the same values as the `denied_principals` field, excluding `principalSet://goog/public:all`, which represents all users on the internet.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIamV2ListPoliciesResponse": {
+"description": "Response message for `ListPolicies`.",
+"id": "GoogleIamV2ListPoliciesResponse",
+"properties": {
+"nextPageToken": {
+"description": "A page token that you can use in a ListPoliciesRequest to retrieve the next page. If this field is omitted, there are no additional pages.",
+"type": "string"
+},
+"policies": {
+"description": "Metadata for the policies that are attached to the resource.",
+"items": {
+"$ref": "GoogleIamV2Policy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIamV2Policy": {
+"description": "Data for an IAM policy.",
+"id": "GoogleIamV2Policy",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A key-value map to store arbitrary metadata for the `Policy`. Keys can be up to 63 characters. Values can be up to 255 characters.",
+"type": "object"
+},
+"createTime": {
+"description": "Output only. The time when the `Policy` was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deleteTime": {
+"description": "Output only. The time when the `Policy` was deleted. Empty if the policy is not deleted.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "A user-specified description of the `Policy`. This value can be up to 63 characters.",
+"type": "string"
+},
+"etag": {
+"description": "An opaque tag that identifies the current version of the `Policy`. IAM uses this value to help manage concurrent updates, so they do not cause one update to be overwritten by another. If this field is present in a CreatePolicyRequest, the value is ignored.",
+"type": "string"
+},
+"kind": {
+"description": "Output only. The kind of the `Policy`. Always contains the value `DenyPolicy`.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Immutable. The resource name of the `Policy`, which must be unique. Format: `policies/{attachment_point}/denypolicies/{policy_id}` The attachment point is identified by its URL-encoded full resource name, which means that the forward-slash character, `/`, must be written as `%2F`. For example, `policies/cloudresourcemanager.googleapis.com%2Fprojects%2Fmy-project/denypolicies/my-deny-policy`. For organizations and folders, use the numeric ID in the full resource name. For projects, requests can use the alphanumeric or the numeric ID. Responses always contain the numeric ID.",
+"type": "string"
+},
+"rules": {
+"description": "A list of rules that specify the behavior of the `Policy`. All of the rules should be of the `kind` specified in the `Policy`.",
+"items": {
+"$ref": "GoogleIamV2PolicyRule"
+},
+"type": "array"
+},
+"uid": {
+"description": "Immutable. The globally unique ID of the `Policy`. Assigned automatically when the `Policy` is created.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the `Policy` was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV2PolicyOperationMetadata": {
+"description": "Metadata for long-running `Policy` operations.",
+"id": "GoogleIamV2PolicyOperationMetadata",
+"properties": {
+"createTime": {
+"description": "Timestamp when the `google.longrunning.Operation` was created.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV2PolicyRule": {
+"description": "A single rule in a `Policy`.",
+"id": "GoogleIamV2PolicyRule",
+"properties": {
+"denyRule": {
+"$ref": "GoogleIamV2DenyRule",
+"description": "A rule for a deny policy."
+},
+"description": {
+"description": "A user-specified description of the rule. This value can be up to 256 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV3OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "GoogleIamV3OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV3alphaOperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "GoogleIamV3alphaOperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV3betaOperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "GoogleIamV3betaOperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV3mainOperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "GoogleIamV3mainOperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningOperation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunningOperation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeExpr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "GoogleTypeExpr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Identity and Access Management (IAM) API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/identitytoolkit.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/identitytoolkit.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..1acc4d1fa986154552d66b91748a64ad2efc85df
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/identitytoolkit.v2.json
@@ -0,0 +1,3904 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/firebase": {
+"description": "View and administer all your Firebase data and settings"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://identitytoolkit.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Identity Toolkit",
+"description": "The Google Identity Toolkit API lets you use open standards to verify a user's identity.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/identity-platform",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "identitytoolkit:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://identitytoolkit.mtls.googleapis.com/",
+"name": "identitytoolkit",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"accounts": {
+"methods": {
+"revokeToken": {
+"description": "Revokes a user's token from an Identity Provider (IdP). This is done by manually providing an IdP credential, and the token types for revocation. An [API key](https://cloud.google.com/docs/authentication/api-keys) is required in the request in order to identify the Google Cloud project.",
+"flatPath": "v2/accounts:revokeToken",
+"httpMethod": "POST",
+"id": "identitytoolkit.accounts.revokeToken",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/accounts:revokeToken",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitV2RevokeTokenRequest"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitV2RevokeTokenResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"mfaEnrollment": {
+"methods": {
+"finalize": {
+"description": "Finishes enrolling a second factor for the user.",
+"flatPath": "v2/accounts/mfaEnrollment:finalize",
+"httpMethod": "POST",
+"id": "identitytoolkit.accounts.mfaEnrollment.finalize",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/accounts/mfaEnrollment:finalize",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaEnrollmentRequest"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaEnrollmentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"start": {
+"description": "Step one of the MFA enrollment process. In SMS case, this sends an SMS verification code to the user.",
+"flatPath": "v2/accounts/mfaEnrollment:start",
+"httpMethod": "POST",
+"id": "identitytoolkit.accounts.mfaEnrollment.start",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/accounts/mfaEnrollment:start",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaEnrollmentRequest"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaEnrollmentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"withdraw": {
+"description": "Revokes one second factor from the enrolled second factors for an account.",
+"flatPath": "v2/accounts/mfaEnrollment:withdraw",
+"httpMethod": "POST",
+"id": "identitytoolkit.accounts.mfaEnrollment.withdraw",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/accounts/mfaEnrollment:withdraw",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitV2WithdrawMfaRequest"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitV2WithdrawMfaResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"mfaSignIn": {
+"methods": {
+"finalize": {
+"description": "Verifies the MFA challenge and performs sign-in",
+"flatPath": "v2/accounts/mfaSignIn:finalize",
+"httpMethod": "POST",
+"id": "identitytoolkit.accounts.mfaSignIn.finalize",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/accounts/mfaSignIn:finalize",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaSignInRequest"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaSignInResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"start": {
+"description": "Sends the MFA challenge",
+"flatPath": "v2/accounts/mfaSignIn:start",
+"httpMethod": "POST",
+"id": "identitytoolkit.accounts.mfaSignIn.start",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/accounts/mfaSignIn:start",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaSignInRequest"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaSignInResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"defaultSupportedIdps": {
+"methods": {
+"list": {
+"description": "List all default supported Idps.",
+"flatPath": "v2/defaultSupportedIdps",
+"httpMethod": "GET",
+"id": "identitytoolkit.defaultSupportedIdps.list",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/defaultSupportedIdps",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ListDefaultSupportedIdpsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+}
+},
+"projects": {
+"methods": {
+"getConfig": {
+"description": "Retrieve an Identity Toolkit project configuration.",
+"flatPath": "v2/projects/{projectsId}/config",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.getConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: \"projects/my-awesome-project/config\"",
+"location": "path",
+"pattern": "^projects/[^/]+/config$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Config"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"updateConfig": {
+"description": "Update an Identity Toolkit project configuration.",
+"flatPath": "v2/projects/{projectsId}/config",
+"httpMethod": "PATCH",
+"id": "identitytoolkit.projects.updateConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The name of the Config resource. Example: \"projects/my-awesome-project/config\"",
+"location": "path",
+"pattern": "^projects/[^/]+/config$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The update mask applies to the resource. Fields set in the config but not included in this update mask will be ignored. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Config"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Config"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+},
+"resources": {
+"defaultSupportedIdpConfigs": {
+"methods": {
+"create": {
+"description": "Create a default supported Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/defaultSupportedIdpConfigs",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.defaultSupportedIdpConfigs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"idpId": {
+"description": "The id of the Idp to create a config for. Call ListDefaultSupportedIdps for list of all default supported Idps.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name where the config to be created, for example: \"projects/my-awesome-project\"",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/defaultSupportedIdpConfigs",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"delete": {
+"description": "Delete a default supported Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/defaultSupportedIdpConfigs/{defaultSupportedIdpConfigsId}",
+"httpMethod": "DELETE",
+"id": "identitytoolkit.projects.defaultSupportedIdpConfigs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\"",
+"location": "path",
+"pattern": "^projects/[^/]+/defaultSupportedIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"get": {
+"description": "Retrieve a default supported Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/defaultSupportedIdpConfigs/{defaultSupportedIdpConfigsId}",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.defaultSupportedIdpConfigs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\"",
+"location": "path",
+"pattern": "^projects/[^/]+/defaultSupportedIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"list": {
+"description": "List all default supported Idp configurations for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/defaultSupportedIdpConfigs",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.defaultSupportedIdpConfigs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name, for example, \"projects/my-awesome-project\".",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/defaultSupportedIdpConfigs",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ListDefaultSupportedIdpConfigsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"patch": {
+"description": "Update a default supported Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/defaultSupportedIdpConfigs/{defaultSupportedIdpConfigsId}",
+"httpMethod": "PATCH",
+"id": "identitytoolkit.projects.defaultSupportedIdpConfigs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the DefaultSupportedIdpConfig resource, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\"",
+"location": "path",
+"pattern": "^projects/[^/]+/defaultSupportedIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+}
+},
+"identityPlatform": {
+"methods": {
+"initializeAuth": {
+"description": "Initialize Identity Platform for a Cloud project. Identity Platform is an end-to-end authentication system for third-party users to access your apps and services. These could include mobile/web apps, games, APIs and beyond. This is the publicly available variant of EnableIdentityPlatform that is only available to billing-enabled projects.",
+"flatPath": "v2/projects/{projectsId}/identityPlatform:initializeAuth",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.identityPlatform.initializeAuth",
+"parameterOrder": [
+"project"
+],
+"parameters": {
+"project": {
+"description": "The resource name of the target project the developer wants to enable Identity Platform for.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+project}/identityPlatform:initializeAuth",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InitializeIdentityPlatformRequest"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InitializeIdentityPlatformResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"inboundSamlConfigs": {
+"methods": {
+"create": {
+"description": "Create an inbound SAML configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/inboundSamlConfigs",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.inboundSamlConfigs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"inboundSamlConfigId": {
+"description": "The id to use for this config.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name where the config to be created, for example: \"projects/my-awesome-project\"",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/inboundSamlConfigs",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"delete": {
+"description": "Delete an inbound SAML configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/inboundSamlConfigs/{inboundSamlConfigsId}",
+"httpMethod": "DELETE",
+"id": "identitytoolkit.projects.inboundSamlConfigs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config to be deleted, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'.",
+"location": "path",
+"pattern": "^projects/[^/]+/inboundSamlConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"get": {
+"description": "Retrieve an inbound SAML configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/inboundSamlConfigs/{inboundSamlConfigsId}",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.inboundSamlConfigs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'.",
+"location": "path",
+"pattern": "^projects/[^/]+/inboundSamlConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"list": {
+"description": "List all inbound SAML configurations for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/inboundSamlConfigs",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.inboundSamlConfigs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name, for example, \"projects/my-awesome-project\".",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/inboundSamlConfigs",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ListInboundSamlConfigsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"patch": {
+"description": "Update an inbound SAML configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/inboundSamlConfigs/{inboundSamlConfigsId}",
+"httpMethod": "PATCH",
+"id": "identitytoolkit.projects.inboundSamlConfigs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the InboundSamlConfig resource, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'. Ignored during create requests.",
+"location": "path",
+"pattern": "^projects/[^/]+/inboundSamlConfigs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The update mask applies to the resource. Empty update mask will result in updating nothing. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+}
+},
+"oauthIdpConfigs": {
+"methods": {
+"create": {
+"description": "Create an Oidc Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/oauthIdpConfigs",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.oauthIdpConfigs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"oauthIdpConfigId": {
+"description": "The id to use for this config.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name where the config to be created, for example: \"projects/my-awesome-project\"",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/oauthIdpConfigs",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"delete": {
+"description": "Delete an Oidc Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/oauthIdpConfigs/{oauthIdpConfigsId}",
+"httpMethod": "DELETE",
+"id": "identitytoolkit.projects.oauthIdpConfigs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config to be deleted, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'.",
+"location": "path",
+"pattern": "^projects/[^/]+/oauthIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"get": {
+"description": "Retrieve an Oidc Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/oauthIdpConfigs/{oauthIdpConfigsId}",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.oauthIdpConfigs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'.",
+"location": "path",
+"pattern": "^projects/[^/]+/oauthIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"list": {
+"description": "List all Oidc Idp configurations for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/oauthIdpConfigs",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.oauthIdpConfigs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name, for example, \"projects/my-awesome-project\".",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/oauthIdpConfigs",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ListOAuthIdpConfigsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"patch": {
+"description": "Update an Oidc Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/oauthIdpConfigs/{oauthIdpConfigsId}",
+"httpMethod": "PATCH",
+"id": "identitytoolkit.projects.oauthIdpConfigs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the OAuthIdpConfig resource, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'. Ignored during create requests.",
+"location": "path",
+"pattern": "^projects/[^/]+/oauthIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The update mask applies to the resource. Empty update mask will result in updating nothing. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+}
+},
+"tenants": {
+"methods": {
+"create": {
+"description": "Create a tenant. Requires write permission on the Agent project.",
+"flatPath": "v2/projects/{projectsId}/tenants",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.tenants.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "The parent resource name where the tenant will be created. For example, \"projects/project1\".",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/tenants",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Tenant"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Tenant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"delete": {
+"description": "Delete a tenant. Requires write permission on the Agent project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}",
+"httpMethod": "DELETE",
+"id": "identitytoolkit.projects.tenants.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name of the tenant to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"get": {
+"description": "Get a tenant. Requires read permission on the Tenant resource.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.tenants.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name of the tenant to retrieve.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Tenant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. An error is returned if the resource does not exist. An empty policy is returned if the resource exists but does not have a policy set on it. Caller must have the right Google IAM permission on the resource.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}:getIamPolicy",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.tenants.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+resource}:getIamPolicy",
+"request": {
+"$ref": "GoogleIamV1GetIamPolicyRequest"
+},
+"response": {
+"$ref": "GoogleIamV1Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"list": {
+"description": "List tenants under the given agent project. Requires read permission on the Agent project.",
+"flatPath": "v2/projects/{projectsId}/tenants",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.tenants.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return, capped at 1000. If not specified, the default value is 20.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The pagination token from the response of a previous request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name to list tenants for.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/tenants",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ListTenantsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"patch": {
+"description": "Update a tenant. Requires write permission on the Tenant resource.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}",
+"httpMethod": "PATCH",
+"id": "identitytoolkit.projects.tenants.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Resource name of a tenant. For example: \"projects/{project-id}/tenants/{tenant-id}\"",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "If provided, only update fields set in the update mask. Otherwise, all settable fields will be updated. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Tenant"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Tenant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy for a resource. If the policy exists, it is replaced. Caller must have the right Google IAM permission on the resource.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.tenants.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+resource}:setIamPolicy",
+"request": {
+"$ref": "GoogleIamV1SetIamPolicyRequest"
+},
+"response": {
+"$ref": "GoogleIamV1Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"testIamPermissions": {
+"description": "Returns the caller's permissions on a resource. An error is returned if the resource does not exist. A caller is not required to have Google IAM permission to make this request.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.tenants.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+resource}:testIamPermissions",
+"request": {
+"$ref": "GoogleIamV1TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "GoogleIamV1TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+},
+"resources": {
+"defaultSupportedIdpConfigs": {
+"methods": {
+"create": {
+"description": "Create a default supported Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/defaultSupportedIdpConfigs",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.tenants.defaultSupportedIdpConfigs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"idpId": {
+"description": "The id of the Idp to create a config for. Call ListDefaultSupportedIdps for list of all default supported Idps.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name where the config to be created, for example: \"projects/my-awesome-project\"",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/defaultSupportedIdpConfigs",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"delete": {
+"description": "Delete a default supported Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/defaultSupportedIdpConfigs/{defaultSupportedIdpConfigsId}",
+"httpMethod": "DELETE",
+"id": "identitytoolkit.projects.tenants.defaultSupportedIdpConfigs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\"",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/defaultSupportedIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"get": {
+"description": "Retrieve a default supported Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/defaultSupportedIdpConfigs/{defaultSupportedIdpConfigsId}",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.tenants.defaultSupportedIdpConfigs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\"",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/defaultSupportedIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"list": {
+"description": "List all default supported Idp configurations for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/defaultSupportedIdpConfigs",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.tenants.defaultSupportedIdpConfigs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name, for example, \"projects/my-awesome-project\".",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/defaultSupportedIdpConfigs",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ListDefaultSupportedIdpConfigsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"patch": {
+"description": "Update a default supported Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/defaultSupportedIdpConfigs/{defaultSupportedIdpConfigsId}",
+"httpMethod": "PATCH",
+"id": "identitytoolkit.projects.tenants.defaultSupportedIdpConfigs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the DefaultSupportedIdpConfig resource, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\"",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/defaultSupportedIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The update mask applies to the resource. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+}
+},
+"inboundSamlConfigs": {
+"methods": {
+"create": {
+"description": "Create an inbound SAML configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/inboundSamlConfigs",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.tenants.inboundSamlConfigs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"inboundSamlConfigId": {
+"description": "The id to use for this config.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name where the config to be created, for example: \"projects/my-awesome-project\"",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/inboundSamlConfigs",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"delete": {
+"description": "Delete an inbound SAML configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/inboundSamlConfigs/{inboundSamlConfigsId}",
+"httpMethod": "DELETE",
+"id": "identitytoolkit.projects.tenants.inboundSamlConfigs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config to be deleted, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/inboundSamlConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"get": {
+"description": "Retrieve an inbound SAML configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/inboundSamlConfigs/{inboundSamlConfigsId}",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.tenants.inboundSamlConfigs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/inboundSamlConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"list": {
+"description": "List all inbound SAML configurations for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/inboundSamlConfigs",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.tenants.inboundSamlConfigs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name, for example, \"projects/my-awesome-project\".",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/inboundSamlConfigs",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ListInboundSamlConfigsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"patch": {
+"description": "Update an inbound SAML configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/inboundSamlConfigs/{inboundSamlConfigsId}",
+"httpMethod": "PATCH",
+"id": "identitytoolkit.projects.tenants.inboundSamlConfigs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the InboundSamlConfig resource, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'. Ignored during create requests.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/inboundSamlConfigs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The update mask applies to the resource. Empty update mask will result in updating nothing. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+}
+},
+"oauthIdpConfigs": {
+"methods": {
+"create": {
+"description": "Create an Oidc Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/oauthIdpConfigs",
+"httpMethod": "POST",
+"id": "identitytoolkit.projects.tenants.oauthIdpConfigs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"oauthIdpConfigId": {
+"description": "The id to use for this config.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name where the config to be created, for example: \"projects/my-awesome-project\"",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/oauthIdpConfigs",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"delete": {
+"description": "Delete an Oidc Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/oauthIdpConfigs/{oauthIdpConfigsId}",
+"httpMethod": "DELETE",
+"id": "identitytoolkit.projects.tenants.oauthIdpConfigs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config to be deleted, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/oauthIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"get": {
+"description": "Retrieve an Oidc Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/oauthIdpConfigs/{oauthIdpConfigsId}",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.tenants.oauthIdpConfigs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name of the config, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/oauthIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"list": {
+"description": "List all Oidc Idp configurations for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/oauthIdpConfigs",
+"httpMethod": "GET",
+"id": "identitytoolkit.projects.tenants.oauthIdpConfigs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "The parent resource name, for example, \"projects/my-awesome-project\".",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/oauthIdpConfigs",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ListOAuthIdpConfigsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+},
+"patch": {
+"description": "Update an Oidc Idp configuration for an Identity Toolkit project.",
+"flatPath": "v2/projects/{projectsId}/tenants/{tenantsId}/oauthIdpConfigs/{oauthIdpConfigsId}",
+"httpMethod": "PATCH",
+"id": "identitytoolkit.projects.tenants.oauthIdpConfigs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the OAuthIdpConfig resource, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'. Ignored during create requests.",
+"location": "path",
+"pattern": "^projects/[^/]+/tenants/[^/]+/oauthIdpConfigs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "The update mask applies to the resource. Empty update mask will result in updating nothing. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/firebase"
+]
+}
+}
+}
+}
+}
+}
+},
+"v2": {
+"methods": {
+"getPasswordPolicy": {
+"description": "Gets password policy config set on the project or tenant.",
+"flatPath": "v2/passwordPolicy",
+"httpMethod": "GET",
+"id": "identitytoolkit.getPasswordPolicy",
+"parameterOrder": [],
+"parameters": {
+"tenantId": {
+"description": "The id of a tenant.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/passwordPolicy",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitV2PasswordPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getRecaptchaConfig": {
+"description": "Gets parameters needed for reCAPTCHA analysis.",
+"flatPath": "v2/recaptchaConfig",
+"httpMethod": "GET",
+"id": "identitytoolkit.getRecaptchaConfig",
+"parameterOrder": [],
+"parameters": {
+"clientType": {
+"description": "reCAPTCHA Enterprise uses separate site keys for different client types. Specify the client type to get the corresponding key.",
+"enum": [
+"CLIENT_TYPE_UNSPECIFIED",
+"CLIENT_TYPE_WEB",
+"CLIENT_TYPE_ANDROID",
+"CLIENT_TYPE_IOS"
+],
+"enumDescriptions": [
+"Client type is not specified.",
+"Client type is web.",
+"Client type is android.",
+"Client type is ios."
+],
+"location": "query",
+"type": "string"
+},
+"tenantId": {
+"description": "The id of a tenant.",
+"location": "query",
+"type": "string"
+},
+"version": {
+"description": "The reCAPTCHA version.",
+"enum": [
+"RECAPTCHA_VERSION_UNSPECIFIED",
+"RECAPTCHA_ENTERPRISE"
+],
+"enumDescriptions": [
+"The reCAPTCHA version is not specified.",
+"The reCAPTCHA enterprise."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/recaptchaConfig",
+"response": {
+"$ref": "GoogleCloudIdentitytoolkitV2RecaptchaConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+},
+"revision": "20241024",
+"rootUrl": "https://identitytoolkit.googleapis.com/",
+"schemas": {
+"GoogleCloudIdentitytoolkitAdminV2AllowByDefault": {
+"description": "Defines a policy of allowing every region by default and adding disallowed regions to a disallow list.",
+"id": "GoogleCloudIdentitytoolkitAdminV2AllowByDefault",
+"properties": {
+"disallowedRegions": {
+"description": "Two letter unicode region codes to disallow as defined by https://cldr.unicode.org/ The full list of these region codes is here: https://github.com/unicode-cldr/cldr-localenames-full/blob/master/main/en/territories.json",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2AllowlistOnly": {
+"description": "Defines a policy of only allowing regions by explicitly adding them to an allowlist.",
+"id": "GoogleCloudIdentitytoolkitAdminV2AllowlistOnly",
+"properties": {
+"allowedRegions": {
+"description": "Two letter unicode region codes to allow as defined by https://cldr.unicode.org/ The full list of these region codes is here: https://github.com/unicode-cldr/cldr-localenames-full/blob/master/main/en/territories.json",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2Anonymous": {
+"description": "Configuration options related to authenticating an anonymous user.",
+"id": "GoogleCloudIdentitytoolkitAdminV2Anonymous",
+"properties": {
+"enabled": {
+"description": "Whether anonymous user auth is enabled for the project or not.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2AppleSignInConfig": {
+"description": "Additional config for SignInWithApple.",
+"id": "GoogleCloudIdentitytoolkitAdminV2AppleSignInConfig",
+"properties": {
+"bundleIds": {
+"description": "A list of Bundle ID's usable by this project",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"codeFlowConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2CodeFlowConfig",
+"description": "Additional config for Apple for code flow."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2BlockingFunctionsConfig": {
+"description": "Configuration related to Blocking Functions.",
+"id": "GoogleCloudIdentitytoolkitAdminV2BlockingFunctionsConfig",
+"properties": {
+"forwardInboundCredentials": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ForwardInboundCredentials",
+"description": "The user credentials to include in the JWT payload that is sent to the registered Blocking Functions."
+},
+"triggers": {
+"additionalProperties": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Trigger"
+},
+"description": "Map of Trigger to event type. Key should be one of the supported event types: \"beforeCreate\", \"beforeSignIn\"",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ClientConfig": {
+"description": "Options related to how clients making requests on behalf of a project should be configured.",
+"id": "GoogleCloudIdentitytoolkitAdminV2ClientConfig",
+"properties": {
+"apiKey": {
+"description": "Output only. API key that can be used when making requests for this project.",
+"readOnly": true,
+"type": "string"
+},
+"firebaseSubdomain": {
+"description": "Output only. Firebase subdomain.",
+"readOnly": true,
+"type": "string"
+},
+"permissions": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Permissions",
+"description": "Configuration related to restricting a user's ability to affect their account."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ClientPermissionConfig": {
+"description": "Options related to how clients making requests on behalf of a tenant should be configured.",
+"id": "GoogleCloudIdentitytoolkitAdminV2ClientPermissionConfig",
+"properties": {
+"permissions": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ClientPermissions",
+"description": "Configuration related to restricting a user's ability to affect their account."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ClientPermissions": {
+"description": "Configuration related to restricting a user's ability to affect their account.",
+"id": "GoogleCloudIdentitytoolkitAdminV2ClientPermissions",
+"properties": {
+"disabledUserDeletion": {
+"description": "When true, end users cannot delete their account on the associated project through any of our API methods",
+"type": "boolean"
+},
+"disabledUserSignup": {
+"description": "When true, end users cannot sign up for a new account on the associated project through any of our API methods",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2CodeFlowConfig": {
+"description": "Additional config for Apple for code flow.",
+"id": "GoogleCloudIdentitytoolkitAdminV2CodeFlowConfig",
+"properties": {
+"keyId": {
+"description": "Key ID for the private key.",
+"type": "string"
+},
+"privateKey": {
+"description": "Private key used for signing the client secret JWT.",
+"type": "string"
+},
+"teamId": {
+"description": "Apple Developer Team ID.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2Config": {
+"description": "Represents an Identity Toolkit project.",
+"id": "GoogleCloudIdentitytoolkitAdminV2Config",
+"properties": {
+"authorizedDomains": {
+"description": "List of domains authorized for OAuth redirects",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"autodeleteAnonymousUsers": {
+"description": "Whether anonymous users will be auto-deleted after a period of 30 days.",
+"type": "boolean"
+},
+"blockingFunctions": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2BlockingFunctionsConfig",
+"description": "Configuration related to blocking functions."
+},
+"client": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ClientConfig",
+"description": "Options related to how clients making requests on behalf of a project should be configured."
+},
+"emailPrivacyConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfig",
+"description": "Configuration for settings related to email privacy and public visibility."
+},
+"mfa": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfig",
+"description": "Configuration for this project's multi-factor authentication, including whether it is active and what factors can be used for the second factor"
+},
+"monitoring": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2MonitoringConfig",
+"description": "Configuration related to monitoring project activity."
+},
+"multiTenant": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2MultiTenantConfig",
+"description": "Configuration related to multi-tenant functionality."
+},
+"name": {
+"description": "Output only. The name of the Config resource. Example: \"projects/my-awesome-project/config\"",
+"readOnly": true,
+"type": "string"
+},
+"notification": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2NotificationConfig",
+"description": "Configuration related to sending notifications to users."
+},
+"passwordPolicyConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfig",
+"description": "The project level password policy configuration."
+},
+"quota": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2QuotaConfig",
+"description": "Configuration related to quotas."
+},
+"recaptchaConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2RecaptchaConfig",
+"description": "The project-level reCAPTCHA config."
+},
+"signIn": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2SignInConfig",
+"description": "Configuration related to local sign in methods."
+},
+"smsRegionConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2SmsRegionConfig",
+"description": "Configures which regions are enabled for SMS verification code sending."
+},
+"subtype": {
+"description": "Output only. The subtype of this config.",
+"enum": [
+"SUBTYPE_UNSPECIFIED",
+"IDENTITY_PLATFORM",
+"FIREBASE_AUTH"
+],
+"enumDescriptions": [
+"Default value. Do not use.",
+"An Identity Platform project.",
+"A Firebase Authentication project."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2CustomStrengthOptions": {
+"description": "Custom strength options to enforce on user passwords.",
+"id": "GoogleCloudIdentitytoolkitAdminV2CustomStrengthOptions",
+"properties": {
+"containsLowercaseCharacter": {
+"description": "The password must contain a lower case character.",
+"type": "boolean"
+},
+"containsNonAlphanumericCharacter": {
+"description": "The password must contain a non alpha numeric character.",
+"type": "boolean"
+},
+"containsNumericCharacter": {
+"description": "The password must contain a number.",
+"type": "boolean"
+},
+"containsUppercaseCharacter": {
+"description": "The password must contain an upper case character.",
+"type": "boolean"
+},
+"maxPasswordLength": {
+"description": "Maximum password length. No default max length",
+"format": "int32",
+"type": "integer"
+},
+"minPasswordLength": {
+"description": "Minimum password length. Range from 6 to 30",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdp": {
+"description": "Standard Identity Toolkit-trusted IDPs.",
+"id": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdp",
+"properties": {
+"description": {
+"description": "Description of the Idp",
+"type": "string"
+},
+"idpId": {
+"description": "Id the of Idp",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig": {
+"description": "Configurations options for authenticating with a the standard set of Identity Toolkit-trusted IDPs.",
+"id": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig",
+"properties": {
+"appleSignInConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2AppleSignInConfig",
+"description": "Additional config for Apple-based projects."
+},
+"clientId": {
+"description": "OAuth client ID.",
+"type": "string"
+},
+"clientSecret": {
+"description": "OAuth client secret.",
+"type": "string"
+},
+"enabled": {
+"description": "True if allows the user to sign in with the provider.",
+"type": "boolean"
+},
+"name": {
+"description": "The name of the DefaultSupportedIdpConfig resource, for example: \"projects/my-awesome-project/defaultSupportedIdpConfigs/google.com\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2DnsInfo": {
+"description": "Information of custom domain DNS verification. By default, default_domain will be used. A custom domain can be configured using VerifyCustomDomain.",
+"id": "GoogleCloudIdentitytoolkitAdminV2DnsInfo",
+"properties": {
+"customDomain": {
+"description": "Output only. The applied verified custom domain.",
+"readOnly": true,
+"type": "string"
+},
+"customDomainState": {
+"description": "Output only. The current verification state of the custom domain. The custom domain will only be used once the domain verification is successful.",
+"enum": [
+"VERIFICATION_STATE_UNSPECIFIED",
+"NOT_STARTED",
+"IN_PROGRESS",
+"FAILED",
+"SUCCEEDED"
+],
+"enumDescriptions": [
+"Default value. Do not use.",
+"The verification has not started.",
+"The verification is in progress.",
+"The verification failed.",
+"The verification succeeded and is ready to be applied."
+],
+"readOnly": true,
+"type": "string"
+},
+"domainVerificationRequestTime": {
+"description": "Output only. The timestamp of initial request for the current domain verification.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"pendingCustomDomain": {
+"description": "Output only. The custom domain that's to be verified.",
+"readOnly": true,
+"type": "string"
+},
+"useCustomDomain": {
+"description": "Whether to use custom domain.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2Email": {
+"description": "Configuration options related to authenticating a user by their email address.",
+"id": "GoogleCloudIdentitytoolkitAdminV2Email",
+"properties": {
+"enabled": {
+"description": "Whether email auth is enabled for the project or not.",
+"type": "boolean"
+},
+"passwordRequired": {
+"description": "Whether a password is required for email auth or not. If true, both an email and password must be provided to sign in. If false, a user may sign in via either email/password or email link.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfig": {
+"description": "Configuration for settings related to email privacy and public visibility. Settings in this config protect against email enumeration, but may make some trade-offs in user-friendliness.",
+"id": "GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfig",
+"properties": {
+"enableImprovedEmailPrivacy": {
+"description": "Migrates the project to a state of improved email privacy. For example certain error codes are more generic to avoid giving away information on whether the account exists. In addition, this disables certain features that as a side-effect allow user enumeration. Enabling this toggle disables the fetchSignInMethodsForEmail functionality and changing the user's email to an unverified email. It is recommended to remove dependence on this functionality and enable this toggle to improve user privacy.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2EmailTemplate": {
+"description": "Email template. The subject and body fields can contain the following placeholders which will be replaced with the appropriate values: %LINK% - The link to use to redeem the send OOB code. %EMAIL% - The email where the email is being sent. %NEW_EMAIL% - The new email being set for the account (when applicable). %APP_NAME% - The Google Cloud project's display name. %DISPLAY_NAME% - The user's display name.",
+"id": "GoogleCloudIdentitytoolkitAdminV2EmailTemplate",
+"properties": {
+"body": {
+"description": "Email body",
+"type": "string"
+},
+"bodyFormat": {
+"description": "Email body format",
+"enum": [
+"BODY_FORMAT_UNSPECIFIED",
+"PLAIN_TEXT",
+"HTML"
+],
+"enumDescriptions": [
+"Default value. Do not use.",
+"Plain text",
+"HTML"
+],
+"type": "string"
+},
+"customized": {
+"description": "Output only. Whether the body or subject of the email is customized.",
+"readOnly": true,
+"type": "boolean"
+},
+"replyTo": {
+"description": "Reply-to address",
+"type": "string"
+},
+"senderDisplayName": {
+"description": "Sender display name",
+"type": "string"
+},
+"senderLocalPart": {
+"description": "Local part of From address",
+"type": "string"
+},
+"subject": {
+"description": "Subject of the email",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ForwardInboundCredentials": {
+"description": "Indicates which credentials to pass to the registered Blocking Functions.",
+"id": "GoogleCloudIdentitytoolkitAdminV2ForwardInboundCredentials",
+"properties": {
+"accessToken": {
+"description": "Whether to pass the user's OAuth identity provider's access token.",
+"type": "boolean"
+},
+"idToken": {
+"description": "Whether to pass the user's OIDC identity provider's ID token.",
+"type": "boolean"
+},
+"refreshToken": {
+"description": "Whether to pass the user's OAuth identity provider's refresh token.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2HashConfig": {
+"description": "History information of the hash algorithm and key. Different accounts' passwords may be generated by different version.",
+"id": "GoogleCloudIdentitytoolkitAdminV2HashConfig",
+"properties": {
+"algorithm": {
+"description": "Output only. Different password hash algorithms used in Identity Toolkit.",
+"enum": [
+"HASH_ALGORITHM_UNSPECIFIED",
+"HMAC_SHA256",
+"HMAC_SHA1",
+"HMAC_MD5",
+"SCRYPT",
+"PBKDF_SHA1",
+"MD5",
+"HMAC_SHA512",
+"SHA1",
+"BCRYPT",
+"PBKDF2_SHA256",
+"SHA256",
+"SHA512",
+"STANDARD_SCRYPT"
+],
+"enumDescriptions": [
+"Default value. Do not use.",
+"HMAC_SHA256",
+"HMAC_SHA1",
+"HMAC_MD5",
+"SCRYPT",
+"PBKDF_SHA1",
+"MD5",
+"HMAC_SHA512",
+"SHA1",
+"BCRYPT",
+"PBKDF2_SHA256",
+"SHA256",
+"SHA512",
+"STANDARD_SCRYPT"
+],
+"readOnly": true,
+"type": "string"
+},
+"memoryCost": {
+"description": "Output only. Memory cost for hash calculation. Used by scrypt and other similar password derivation algorithms. See https://tools.ietf.org/html/rfc7914 for explanation of field.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"rounds": {
+"description": "Output only. How many rounds for hash calculation. Used by scrypt and other similar password derivation algorithms.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"saltSeparator": {
+"description": "Output only. Non-printable character to be inserted between the salt and plain text password in base64.",
+"readOnly": true,
+"type": "string"
+},
+"signerKey": {
+"description": "Output only. Signer key in base64.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2IdpCertificate": {
+"description": "The IDP's certificate data to verify the signature in the SAMLResponse issued by the IDP.",
+"id": "GoogleCloudIdentitytoolkitAdminV2IdpCertificate",
+"properties": {
+"x509Certificate": {
+"description": "The x509 certificate",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2IdpConfig": {
+"description": "The SAML IdP (Identity Provider) configuration when the project acts as the relying party.",
+"id": "GoogleCloudIdentitytoolkitAdminV2IdpConfig",
+"properties": {
+"idpCertificates": {
+"description": "IDP's public keys for verifying signature in the assertions.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2IdpCertificate"
+},
+"type": "array"
+},
+"idpEntityId": {
+"description": "Unique identifier for all SAML entities.",
+"type": "string"
+},
+"signRequest": {
+"description": "Indicates if outbounding SAMLRequest should be signed.",
+"type": "boolean"
+},
+"ssoUrl": {
+"description": "URL to send Authentication request to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig": {
+"description": "A pair of SAML RP-IDP configurations when the project acts as the relying party.",
+"id": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig",
+"properties": {
+"displayName": {
+"description": "The config's display name set by developers.",
+"type": "string"
+},
+"enabled": {
+"description": "True if allows the user to sign in with the provider.",
+"type": "boolean"
+},
+"idpConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2IdpConfig",
+"description": "The SAML IdP (Identity Provider) configuration when the project acts as the relying party."
+},
+"name": {
+"description": "The name of the InboundSamlConfig resource, for example: 'projects/my-awesome-project/inboundSamlConfigs/my-config-id'. Ignored during create requests.",
+"type": "string"
+},
+"spConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2SpConfig",
+"description": "The SAML SP (Service Provider) configuration when the project acts as the relying party to receive and accept an authentication assertion issued by a SAML identity provider."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2Inheritance": {
+"description": "Settings that the tenants will inherit from project level.",
+"id": "GoogleCloudIdentitytoolkitAdminV2Inheritance",
+"properties": {
+"emailSendingConfig": {
+"description": "Whether to allow the tenant to inherit custom domains, email templates, and custom SMTP settings. If true, email sent from tenant will follow the project level email sending configurations. If false (by default), emails will go with the default settings with no customizations.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2InitializeIdentityPlatformRequest": {
+"description": "Request for InitializeIdentityPlatform.",
+"id": "GoogleCloudIdentitytoolkitAdminV2InitializeIdentityPlatformRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2InitializeIdentityPlatformResponse": {
+"description": "Response for InitializeIdentityPlatform. Empty for now.",
+"id": "GoogleCloudIdentitytoolkitAdminV2InitializeIdentityPlatformResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ListDefaultSupportedIdpConfigsResponse": {
+"description": "Response for DefaultSupportedIdpConfigs",
+"id": "GoogleCloudIdentitytoolkitAdminV2ListDefaultSupportedIdpConfigsResponse",
+"properties": {
+"defaultSupportedIdpConfigs": {
+"description": "The set of configs.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdpConfig"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ListDefaultSupportedIdpsResponse": {
+"description": "Response for ListDefaultSupportedIdps",
+"id": "GoogleCloudIdentitytoolkitAdminV2ListDefaultSupportedIdpsResponse",
+"properties": {
+"defaultSupportedIdps": {
+"description": "The set of configs.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DefaultSupportedIdp"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ListInboundSamlConfigsResponse": {
+"description": "Response for ListInboundSamlConfigs",
+"id": "GoogleCloudIdentitytoolkitAdminV2ListInboundSamlConfigsResponse",
+"properties": {
+"inboundSamlConfigs": {
+"description": "The set of configs.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2InboundSamlConfig"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ListOAuthIdpConfigsResponse": {
+"description": "Response for ListOAuthIdpConfigs",
+"id": "GoogleCloudIdentitytoolkitAdminV2ListOAuthIdpConfigsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to retrieve the next page of results, or empty if there are no more results in the list.",
+"type": "string"
+},
+"oauthIdpConfigs": {
+"description": "The set of configs.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ListTenantsResponse": {
+"description": "Response message for ListTenants.",
+"id": "GoogleCloudIdentitytoolkitAdminV2ListTenantsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The token to get the next page of results.",
+"type": "string"
+},
+"tenants": {
+"description": "A list of tenants under the given agent project.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Tenant"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2MonitoringConfig": {
+"description": "Configuration related to monitoring project activity.",
+"id": "GoogleCloudIdentitytoolkitAdminV2MonitoringConfig",
+"properties": {
+"requestLogging": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2RequestLogging",
+"description": "Configuration for logging requests made to this project to Stackdriver Logging"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfig": {
+"description": "Options related to MultiFactor Authentication for the project.",
+"id": "GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfig",
+"properties": {
+"enabledProviders": {
+"description": "A list of usable second factors for this project.",
+"items": {
+"enum": [
+"PROVIDER_UNSPECIFIED",
+"PHONE_SMS"
+],
+"enumDescriptions": [
+"Illegal Provider, should not be used",
+"SMS is enabled as a second factor for this project."
+],
+"type": "string"
+},
+"type": "array"
+},
+"providerConfigs": {
+"description": "A list of usable second factors for this project along with their configurations. This field does not support phone based MFA, for that use the 'enabled_providers' field.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ProviderConfig"
+},
+"type": "array"
+},
+"state": {
+"description": "Whether MultiFactor Authentication has been enabled for this project.",
+"enum": [
+"STATE_UNSPECIFIED",
+"DISABLED",
+"ENABLED",
+"MANDATORY"
+],
+"enumDescriptions": [
+"Illegal State, should not be used.",
+"Multi-factor authentication cannot be used for this project",
+"Multi-factor authentication can be used for this project",
+"Multi-factor authentication is required for this project. Users from this project must authenticate with the second factor."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2MultiTenantConfig": {
+"description": "Configuration related to multi-tenant functionality.",
+"id": "GoogleCloudIdentitytoolkitAdminV2MultiTenantConfig",
+"properties": {
+"allowTenants": {
+"description": "Whether this project can have tenants or not.",
+"type": "boolean"
+},
+"defaultTenantLocation": {
+"description": "The default cloud parent org or folder that the tenant project should be created under. The parent resource name should be in the format of \"/\", such as \"folders/123\" or \"organizations/456\". If the value is not set, the tenant will be created under the same organization or folder as the agent project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2NotificationConfig": {
+"description": "Configuration related to sending notifications to users.",
+"id": "GoogleCloudIdentitytoolkitAdminV2NotificationConfig",
+"properties": {
+"defaultLocale": {
+"description": "Default locale used for email and SMS in IETF BCP 47 format.",
+"type": "string"
+},
+"sendEmail": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2SendEmail",
+"description": "Options for email sending."
+},
+"sendSms": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2SendSms",
+"description": "Options for SMS sending."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig": {
+"description": "Configuration options for authenticating with an OAuth IDP.",
+"id": "GoogleCloudIdentitytoolkitAdminV2OAuthIdpConfig",
+"properties": {
+"clientId": {
+"description": "The client id of an OAuth client.",
+"type": "string"
+},
+"clientSecret": {
+"description": "The client secret of the OAuth client, to enable OIDC code flow.",
+"type": "string"
+},
+"displayName": {
+"description": "The config's display name set by developers.",
+"type": "string"
+},
+"enabled": {
+"description": "True if allows the user to sign in with the provider.",
+"type": "boolean"
+},
+"issuer": {
+"description": "For OIDC Idps, the issuer identifier.",
+"type": "string"
+},
+"name": {
+"description": "The name of the OAuthIdpConfig resource, for example: 'projects/my-awesome-project/oauthIdpConfigs/oauth-config-id'. Ignored during create requests.",
+"type": "string"
+},
+"responseType": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2OAuthResponseType",
+"description": "The response type to request for in the OAuth authorization flow. You can set either `id_token` or `code` to true, but not both. Setting both types to be simultaneously true (`{code: true, id_token: true}`) is not yet supported."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2OAuthResponseType": {
+"description": "The response type to request for in the OAuth authorization flow. You can set either `id_token` or `code` to true, but not both. Setting both types to be simultaneously true (`{code: true, id_token: true}`) is not yet supported. See https://openid.net/specs/openid-connect-core-1_0.html#Authentication for a mapping of response type to OAuth 2.0 flow.",
+"id": "GoogleCloudIdentitytoolkitAdminV2OAuthResponseType",
+"properties": {
+"code": {
+"description": "If true, authorization code is returned from IdP's authorization endpoint.",
+"type": "boolean"
+},
+"idToken": {
+"description": "If true, ID token is returned from IdP's authorization endpoint.",
+"type": "boolean"
+},
+"token": {
+"deprecated": true,
+"description": "Do not use. The `token` response type is not supported at the moment.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfig": {
+"description": "The configuration for the password policy on the project.",
+"id": "GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfig",
+"properties": {
+"forceUpgradeOnSignin": {
+"description": "Users must have a password compliant with the password policy to sign-in.",
+"type": "boolean"
+},
+"lastUpdateTime": {
+"description": "Output only. The last time the password policy on the project was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"passwordPolicyEnforcementState": {
+"description": "Which enforcement mode to use for the password policy.",
+"enum": [
+"PASSWORD_POLICY_ENFORCEMENT_STATE_UNSPECIFIED",
+"OFF",
+"ENFORCE"
+],
+"enumDescriptions": [
+"Illegal State, should not be used.",
+"Password Policy will not be used on the project.",
+"Passwords non-compliant with the password policy will be rejected with an error thrown."
+],
+"type": "string"
+},
+"passwordPolicyVersions": {
+"description": "Must be of length 1. Contains the strength attributes for the password policy.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2PasswordPolicyVersion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2PasswordPolicyVersion": {
+"description": "The strength attributes for the password policy on the project.",
+"id": "GoogleCloudIdentitytoolkitAdminV2PasswordPolicyVersion",
+"properties": {
+"customStrengthOptions": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2CustomStrengthOptions",
+"description": "The custom strength options enforced by the password policy."
+},
+"schemaVersion": {
+"description": "Output only. schema version number for the password policy",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2Permissions": {
+"description": "Configuration related to restricting a user's ability to affect their account.",
+"id": "GoogleCloudIdentitytoolkitAdminV2Permissions",
+"properties": {
+"disabledUserDeletion": {
+"description": "When true, end users cannot delete their account on the associated project through any of our API methods",
+"type": "boolean"
+},
+"disabledUserSignup": {
+"description": "When true, end users cannot sign up for a new account on the associated project through any of our API methods",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2PhoneNumber": {
+"description": "Configuration options related to authenticated a user by their phone number.",
+"id": "GoogleCloudIdentitytoolkitAdminV2PhoneNumber",
+"properties": {
+"enabled": {
+"description": "Whether phone number auth is enabled for the project or not.",
+"type": "boolean"
+},
+"testPhoneNumbers": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map of that can be used for phone auth testing.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2ProviderConfig": {
+"description": "ProviderConfig describes the supported MFA providers along with their configurations.",
+"id": "GoogleCloudIdentitytoolkitAdminV2ProviderConfig",
+"properties": {
+"state": {
+"description": "Describes the state of the MultiFactor Authentication type.",
+"enum": [
+"MFA_STATE_UNSPECIFIED",
+"DISABLED",
+"ENABLED",
+"MANDATORY"
+],
+"enumDescriptions": [
+"Illegal State, should not be used.",
+"Multi-factor authentication cannot be used for this project.",
+"Multi-factor authentication can be used for this project.",
+"Multi-factor authentication is required for this project. Users from this project must authenticate with the second factor."
+],
+"type": "string"
+},
+"totpProviderConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2TotpMfaProviderConfig",
+"description": "TOTP MFA provider config for this project."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2QuotaConfig": {
+"description": "Configuration related to quotas.",
+"id": "GoogleCloudIdentitytoolkitAdminV2QuotaConfig",
+"properties": {
+"signUpQuotaConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2TemporaryQuota",
+"description": "Quota for the Signup endpoint, if overwritten. Signup quota is measured in sign ups per project per hour per IP."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2RecaptchaConfig": {
+"description": "The reCAPTCHA Enterprise integration config.",
+"id": "GoogleCloudIdentitytoolkitAdminV2RecaptchaConfig",
+"properties": {
+"emailPasswordEnforcementState": {
+"description": "The reCAPTCHA config for email/password provider, containing the enforcement status. The email/password provider contains all email related user flows protected by reCAPTCHA.",
+"enum": [
+"RECAPTCHA_PROVIDER_ENFORCEMENT_STATE_UNSPECIFIED",
+"OFF",
+"AUDIT",
+"ENFORCE"
+],
+"enumDescriptions": [
+"Enforcement state has not been set.",
+"Unenforced.",
+"reCAPTCHA assessment is created, result is not used to enforce.",
+"reCAPTCHA assessment is created, result is used to enforce."
+],
+"type": "string"
+},
+"managedRules": {
+"description": "The managed rules for authentication action based on reCAPTCHA scores. The rules are shared across providers for a given tenant project.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRule"
+},
+"type": "array"
+},
+"phoneEnforcementState": {
+"description": "The reCAPTCHA config for phone provider, containing the enforcement status. The phone provider contains all SMS related user flows protected by reCAPTCHA.",
+"enum": [
+"RECAPTCHA_PROVIDER_ENFORCEMENT_STATE_UNSPECIFIED",
+"OFF",
+"AUDIT",
+"ENFORCE"
+],
+"enumDescriptions": [
+"Enforcement state has not been set.",
+"Unenforced.",
+"reCAPTCHA assessment is created, result is not used to enforce.",
+"reCAPTCHA assessment is created, result is used to enforce."
+],
+"type": "string"
+},
+"recaptchaKeys": {
+"description": "The reCAPTCHA keys.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2RecaptchaKey"
+},
+"type": "array"
+},
+"tollFraudManagedRules": {
+"description": "The managed rules for the authentication action based on reCAPTCHA toll fraud risk scores. Toll fraud managed rules will only take effect when the phone_enforcement_state is AUDIT or ENFORCE and use_sms_toll_fraud_protection is true.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2RecaptchaTollFraudManagedRule"
+},
+"type": "array"
+},
+"useAccountDefender": {
+"description": "Whether to use the account defender for reCAPTCHA assessment. Defaults to `false`.",
+"type": "boolean"
+},
+"useSmsBotScore": {
+"description": "Whether to use the rCE bot score for reCAPTCHA phone provider. Can only be true when the phone_enforcement_state is AUDIT or ENFORCE.",
+"type": "boolean"
+},
+"useSmsTollFraudProtection": {
+"description": "Whether to use the rCE sms toll fraud protection risk score for reCAPTCHA phone provider. Can only be true when the phone_enforcement_state is AUDIT or ENFORCE.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2RecaptchaKey": {
+"description": "The reCAPTCHA key config. reCAPTCHA Enterprise offers different keys for different client platforms.",
+"id": "GoogleCloudIdentitytoolkitAdminV2RecaptchaKey",
+"properties": {
+"key": {
+"description": "The reCAPTCHA Enterprise key resource name, e.g. \"projects/{project}/keys/{key}\"",
+"type": "string"
+},
+"type": {
+"description": "The client's platform type.",
+"enum": [
+"CLIENT_TYPE_UNSPECIFIED",
+"WEB",
+"IOS",
+"ANDROID"
+],
+"enumDescriptions": [
+"Client type is not specified.",
+"Client type is web.",
+"Client type is iOS.",
+"Client type is Android."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRule": {
+"description": "The config for a reCAPTCHA managed rule. Models a single interval [start_score, end_score]. The start_score is implicit. It is either the closest smaller end_score (if one is available) or 0. Intervals in aggregate span [0, 1] without overlapping.",
+"id": "GoogleCloudIdentitytoolkitAdminV2RecaptchaManagedRule",
+"properties": {
+"action": {
+"description": "The action taken if the reCAPTCHA score of a request is within the interval [start_score, end_score].",
+"enum": [
+"RECAPTCHA_ACTION_UNSPECIFIED",
+"BLOCK"
+],
+"enumDescriptions": [
+"The reCAPTCHA action is not specified.",
+"The reCAPTCHA-protected request will be blocked."
+],
+"type": "string"
+},
+"endScore": {
+"description": "The end score (inclusive) of the score range for an action. Must be a value between 0.0 and 1.0, at 11 discrete values; e.g. 0, 0.1, 0.2, 0.3, ... 0.9, 1.0. A score of 0.0 indicates the riskiest request (likely a bot), whereas 1.0 indicates the safest request (likely a human). See https://cloud.google.com/recaptcha-enterprise/docs/interpret-assessment.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2RecaptchaTollFraudManagedRule": {
+"description": "The config for a reCAPTCHA toll fraud assessment managed rule. Models a single interval [start_score, end_score]. The end_score is implicit. It is either the closest smaller end_score (if one is available) or 0. Intervals in aggregate span [0, 1] without overlapping.",
+"id": "GoogleCloudIdentitytoolkitAdminV2RecaptchaTollFraudManagedRule",
+"properties": {
+"action": {
+"description": "The action taken if the reCAPTCHA score of a request is within the interval [start_score, end_score].",
+"enum": [
+"RECAPTCHA_ACTION_UNSPECIFIED",
+"BLOCK"
+],
+"enumDescriptions": [
+"The reCAPTCHA action is not specified.",
+"The reCAPTCHA-protected request will be blocked."
+],
+"type": "string"
+},
+"startScore": {
+"description": "The start score (inclusive) for an action. Must be a value between 0.0 and 1.0, at 11 discrete values; e.g. 0, 0.1, 0.2, 0.3, ... 0.9, 1.0. A score of 0.0 indicates the safest request (likely legitimate), whereas 1.0 indicates the riskiest request (likely toll fraud). See https://cloud.google.com/recaptcha-enterprise/docs/sms-fraud-detection#create-assessment-sms.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2RequestLogging": {
+"description": "Configuration for logging requests made to this project to Stackdriver Logging",
+"id": "GoogleCloudIdentitytoolkitAdminV2RequestLogging",
+"properties": {
+"enabled": {
+"description": "Whether logging is enabled for this project or not.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2SendEmail": {
+"description": "Options for email sending.",
+"id": "GoogleCloudIdentitytoolkitAdminV2SendEmail",
+"properties": {
+"callbackUri": {
+"description": "action url in email template.",
+"type": "string"
+},
+"changeEmailTemplate": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2EmailTemplate",
+"description": "Email template for change email"
+},
+"dnsInfo": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2DnsInfo",
+"description": "Information of custom domain DNS verification."
+},
+"legacyResetPasswordTemplate": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2EmailTemplate",
+"description": "Reset password email template for legacy Firebase V1 app."
+},
+"method": {
+"description": "The method used for sending an email.",
+"enum": [
+"METHOD_UNSPECIFIED",
+"DEFAULT",
+"CUSTOM_SMTP"
+],
+"enumDescriptions": [
+"Email method unspecified.",
+"Sending email on behalf of developer.",
+"Sending email using SMTP configuration provided by developers."
+],
+"type": "string"
+},
+"resetPasswordTemplate": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2EmailTemplate",
+"description": "Email template for reset password"
+},
+"revertSecondFactorAdditionTemplate": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2EmailTemplate",
+"description": "Email template for reverting second factor addition emails"
+},
+"smtp": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Smtp",
+"description": "Use a custom SMTP relay"
+},
+"verifyEmailTemplate": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2EmailTemplate",
+"description": "Email template for verify email"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2SendSms": {
+"description": "Options for SMS sending.",
+"id": "GoogleCloudIdentitytoolkitAdminV2SendSms",
+"properties": {
+"smsTemplate": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2SmsTemplate",
+"description": "Output only. The template to use when sending an SMS.",
+"readOnly": true
+},
+"useDeviceLocale": {
+"description": "Whether to use the accept_language header for SMS.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2SignInConfig": {
+"description": "Configuration related to local sign in methods.",
+"id": "GoogleCloudIdentitytoolkitAdminV2SignInConfig",
+"properties": {
+"allowDuplicateEmails": {
+"description": "Whether to allow more than one account to have the same email.",
+"type": "boolean"
+},
+"anonymous": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Anonymous",
+"description": "Configuration options related to authenticating an anonymous user."
+},
+"email": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Email",
+"description": "Configuration options related to authenticating a user by their email address."
+},
+"hashConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2HashConfig",
+"description": "Output only. Hash config information.",
+"readOnly": true
+},
+"phoneNumber": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2PhoneNumber",
+"description": "Configuration options related to authenticated a user by their phone number."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2SmsRegionConfig": {
+"description": "Configures the regions where users are allowed to send verification SMS for the project or tenant. This is based on the calling code of the destination phone number.",
+"id": "GoogleCloudIdentitytoolkitAdminV2SmsRegionConfig",
+"properties": {
+"allowByDefault": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2AllowByDefault",
+"description": "A policy of allowing SMS to every region by default and adding disallowed regions to a disallow list."
+},
+"allowlistOnly": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2AllowlistOnly",
+"description": "A policy of only allowing regions by explicitly adding them to an allowlist."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2SmsTemplate": {
+"description": "The template to use when sending an SMS.",
+"id": "GoogleCloudIdentitytoolkitAdminV2SmsTemplate",
+"properties": {
+"content": {
+"description": "Output only. The SMS's content. Can contain the following placeholders which will be replaced with the appropriate values: %APP_NAME% - For Android or iOS apps, the app's display name. For web apps, the domain hosting the application. %LOGIN_CODE% - The OOB code being sent in the SMS.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2Smtp": {
+"description": "Configuration for SMTP relay",
+"id": "GoogleCloudIdentitytoolkitAdminV2Smtp",
+"properties": {
+"host": {
+"description": "SMTP relay host",
+"type": "string"
+},
+"password": {
+"description": "SMTP relay password",
+"type": "string"
+},
+"port": {
+"description": "SMTP relay port",
+"format": "int32",
+"type": "integer"
+},
+"securityMode": {
+"description": "SMTP security mode.",
+"enum": [
+"SECURITY_MODE_UNSPECIFIED",
+"SSL",
+"START_TLS"
+],
+"enumDescriptions": [
+"Default value. Do not use.",
+"SSL mode",
+"START_TLS mode"
+],
+"type": "string"
+},
+"senderEmail": {
+"description": "Sender email for the SMTP relay",
+"type": "string"
+},
+"username": {
+"description": "SMTP relay username",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2SpCertificate": {
+"description": "The SP's certificate data for IDP to verify the SAMLRequest generated by the SP.",
+"id": "GoogleCloudIdentitytoolkitAdminV2SpCertificate",
+"properties": {
+"expiresAt": {
+"description": "Timestamp of the cert expiration instance.",
+"format": "google-datetime",
+"type": "string"
+},
+"x509Certificate": {
+"description": "Self-signed public certificate.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2SpConfig": {
+"description": "The SAML SP (Service Provider) configuration when the project acts as the relying party to receive and accept an authentication assertion issued by a SAML identity provider.",
+"id": "GoogleCloudIdentitytoolkitAdminV2SpConfig",
+"properties": {
+"callbackUri": {
+"description": "Callback URI where responses from IDP are handled.",
+"type": "string"
+},
+"spCertificates": {
+"description": "Output only. Public certificates generated by the server to verify the signature in SAMLRequest in the SP-initiated flow.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2SpCertificate"
+},
+"readOnly": true,
+"type": "array"
+},
+"spEntityId": {
+"description": "Unique identifier for all SAML entities.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2TemporaryQuota": {
+"description": "Temporary quota increase / decrease",
+"id": "GoogleCloudIdentitytoolkitAdminV2TemporaryQuota",
+"properties": {
+"quota": {
+"description": "Corresponds to the 'refill_token_count' field in QuotaServer config",
+"format": "int64",
+"type": "string"
+},
+"quotaDuration": {
+"description": "How long this quota will be active for",
+"format": "google-duration",
+"type": "string"
+},
+"startTime": {
+"description": "When this quota will take effect",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2Tenant": {
+"description": "A Tenant contains configuration for the tenant in a multi-tenant project.",
+"id": "GoogleCloudIdentitytoolkitAdminV2Tenant",
+"properties": {
+"allowPasswordSignup": {
+"description": "Whether to allow email/password user authentication.",
+"type": "boolean"
+},
+"autodeleteAnonymousUsers": {
+"description": "Whether anonymous users will be auto-deleted after a period of 30 days.",
+"type": "boolean"
+},
+"client": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2ClientPermissionConfig",
+"description": "Options related to how clients making requests on behalf of a project should be configured."
+},
+"disableAuth": {
+"description": "Whether authentication is disabled for the tenant. If true, the users under the disabled tenant are not allowed to sign-in. Admins of the disabled tenant are not able to manage its users.",
+"type": "boolean"
+},
+"displayName": {
+"description": "Display name of the tenant.",
+"type": "string"
+},
+"emailPrivacyConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2EmailPrivacyConfig",
+"description": "Configuration for settings related to email privacy and public visibility."
+},
+"enableAnonymousUser": {
+"description": "Whether to enable anonymous user authentication.",
+"type": "boolean"
+},
+"enableEmailLinkSignin": {
+"description": "Whether to enable email link user authentication.",
+"type": "boolean"
+},
+"hashConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2HashConfig",
+"description": "Output only. Hash config information of a tenant for display on Pantheon. This can only be displayed on Pantheon to avoid the sensitive information to get accidentally leaked. Only returned in GetTenant response to restrict reading of this information. Requires firebaseauth.configs.getHashConfig permission on the agent project for returning this field.",
+"readOnly": true
+},
+"inheritance": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2Inheritance",
+"description": "Specify the settings that the tenant could inherit."
+},
+"mfaConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2MultiFactorAuthConfig",
+"description": "The tenant-level configuration of MFA options."
+},
+"monitoring": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2MonitoringConfig",
+"description": "Configuration related to monitoring project activity."
+},
+"name": {
+"description": "Output only. Resource name of a tenant. For example: \"projects/{project-id}/tenants/{tenant-id}\"",
+"readOnly": true,
+"type": "string"
+},
+"passwordPolicyConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2PasswordPolicyConfig",
+"description": "The tenant-level password policy config"
+},
+"recaptchaConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2RecaptchaConfig",
+"description": "The tenant-level reCAPTCHA config."
+},
+"smsRegionConfig": {
+"$ref": "GoogleCloudIdentitytoolkitAdminV2SmsRegionConfig",
+"description": "Configures which regions are enabled for SMS verification code sending."
+},
+"testPhoneNumbers": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map of pairs that can be used for MFA. The phone number should be in E.164 format (https://www.itu.int/rec/T-REC-E.164/) and a maximum of 10 pairs can be added (error will be thrown once exceeded).",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2TotpMfaProviderConfig": {
+"description": "TotpMFAProviderConfig represents the TOTP based MFA provider.",
+"id": "GoogleCloudIdentitytoolkitAdminV2TotpMfaProviderConfig",
+"properties": {
+"adjacentIntervals": {
+"description": "The allowed number of adjacent intervals that will be used for verification to avoid clock skew.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitAdminV2Trigger": {
+"description": "Synchronous Cloud Function with HTTP Trigger",
+"id": "GoogleCloudIdentitytoolkitAdminV2Trigger",
+"properties": {
+"functionUri": {
+"description": "HTTP URI trigger for the Cloud Function.",
+"type": "string"
+},
+"updateTime": {
+"description": "When the trigger was changed.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2AutoRetrievalInfo": {
+"description": "The information required to auto-retrieve an SMS.",
+"id": "GoogleCloudIdentitytoolkitV2AutoRetrievalInfo",
+"properties": {
+"appSignatureHash": {
+"description": "The Android app's signature hash for Google Play Service's SMS Retriever API.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2CustomStrengthOptions": {
+"description": "Custom strength options to enforce on user passwords.",
+"id": "GoogleCloudIdentitytoolkitV2CustomStrengthOptions",
+"properties": {
+"containsLowercaseCharacter": {
+"description": "The password must contain a lower case character.",
+"type": "boolean"
+},
+"containsNonAlphanumericCharacter": {
+"description": "The password must contain a non alpha numeric character.",
+"type": "boolean"
+},
+"containsNumericCharacter": {
+"description": "The password must contain a number.",
+"type": "boolean"
+},
+"containsUppercaseCharacter": {
+"description": "The password must contain an upper case character.",
+"type": "boolean"
+},
+"maxPasswordLength": {
+"description": "Maximum password length. No default max length",
+"format": "int32",
+"type": "integer"
+},
+"minPasswordLength": {
+"description": "Minimum password length. Range from 6 to 30",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2FinalizeMfaEnrollmentRequest": {
+"description": "Finishes enrolling a second factor for the user.",
+"id": "GoogleCloudIdentitytoolkitV2FinalizeMfaEnrollmentRequest",
+"properties": {
+"displayName": {
+"description": "Display name which is entered by users to distinguish between different second factors with same type or different type.",
+"type": "string"
+},
+"idToken": {
+"description": "Required. ID token.",
+"type": "string"
+},
+"phoneVerificationInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaPhoneRequestInfo",
+"description": "Verification info to authorize sending an SMS for phone verification."
+},
+"tenantId": {
+"description": "The ID of the Identity Platform tenant that the user enrolling MFA belongs to. If not set, the user belongs to the default Identity Platform project.",
+"type": "string"
+},
+"totpVerificationInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaTotpEnrollmentRequestInfo",
+"description": "Verification information for TOTP."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2FinalizeMfaEnrollmentResponse": {
+"description": "FinalizeMfaEnrollment response.",
+"id": "GoogleCloudIdentitytoolkitV2FinalizeMfaEnrollmentResponse",
+"properties": {
+"idToken": {
+"description": "ID token updated to reflect MFA enrollment.",
+"type": "string"
+},
+"phoneAuthInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaPhoneResponseInfo",
+"description": "Auxiliary auth info specific to phone auth."
+},
+"refreshToken": {
+"description": "Refresh token updated to reflect MFA enrollment.",
+"type": "string"
+},
+"totpAuthInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaTotpEnrollmentResponseInfo",
+"description": "Auxiliary auth info specific to TOTP auth."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2FinalizeMfaPhoneRequestInfo": {
+"description": "Phone Verification info for a FinalizeMfa request.",
+"id": "GoogleCloudIdentitytoolkitV2FinalizeMfaPhoneRequestInfo",
+"properties": {
+"androidVerificationProof": {
+"description": "Android only. Uses for \"instant\" phone number verification though GmsCore.",
+"type": "string"
+},
+"code": {
+"description": "User-entered verification code.",
+"type": "string"
+},
+"phoneNumber": {
+"description": "Required if Android verification proof is presented.",
+"type": "string"
+},
+"sessionInfo": {
+"description": "An opaque string that represents the enrollment session.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2FinalizeMfaPhoneResponseInfo": {
+"description": "Phone Verification info for a FinalizeMfa response.",
+"id": "GoogleCloudIdentitytoolkitV2FinalizeMfaPhoneResponseInfo",
+"properties": {
+"androidVerificationProof": {
+"description": "Android only. Long-lived replacement for valid code tied to android device.",
+"type": "string"
+},
+"androidVerificationProofExpireTime": {
+"description": "Android only. Expiration time of verification proof in seconds.",
+"format": "google-datetime",
+"type": "string"
+},
+"phoneNumber": {
+"description": "For Android verification proof.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2FinalizeMfaSignInRequest": {
+"description": "Finalizes sign-in by verifying MFA challenge.",
+"id": "GoogleCloudIdentitytoolkitV2FinalizeMfaSignInRequest",
+"properties": {
+"mfaEnrollmentId": {
+"description": "The MFA enrollment ID from the user's list of current MFA enrollments.",
+"type": "string"
+},
+"mfaPendingCredential": {
+"description": "Required. Pending credential from first factor sign-in.",
+"type": "string"
+},
+"phoneVerificationInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaPhoneRequestInfo",
+"description": "Proof of completion of the SMS based MFA challenge."
+},
+"tenantId": {
+"description": "The ID of the Identity Platform tenant the user is signing in to. If not set, the user will sign in to the default Identity Platform project.",
+"type": "string"
+},
+"totpVerificationInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2MfaTotpSignInRequestInfo",
+"description": "Proof of completion of the TOTP based MFA challenge."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2FinalizeMfaSignInResponse": {
+"description": "FinalizeMfaSignIn response.",
+"id": "GoogleCloudIdentitytoolkitV2FinalizeMfaSignInResponse",
+"properties": {
+"idToken": {
+"description": "ID token for the authenticated user.",
+"type": "string"
+},
+"phoneAuthInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2FinalizeMfaPhoneResponseInfo",
+"description": "Extra phone auth info, including android verification proof."
+},
+"refreshToken": {
+"description": "Refresh token for the authenticated user.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2FinalizeMfaTotpEnrollmentRequestInfo": {
+"description": "Mfa request info specific to TOTP auth for FinalizeMfa.",
+"id": "GoogleCloudIdentitytoolkitV2FinalizeMfaTotpEnrollmentRequestInfo",
+"properties": {
+"sessionInfo": {
+"description": "An opaque string that represents the enrollment session.",
+"type": "string"
+},
+"verificationCode": {
+"description": "User-entered verification code.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2FinalizeMfaTotpEnrollmentResponseInfo": {
+"description": "Mfa response info specific to TOTP auth for FinalizeMfa.",
+"id": "GoogleCloudIdentitytoolkitV2FinalizeMfaTotpEnrollmentResponseInfo",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2MfaTotpSignInRequestInfo": {
+"description": "TOTP verification info for FinalizeMfaSignInRequest.",
+"id": "GoogleCloudIdentitytoolkitV2MfaTotpSignInRequestInfo",
+"properties": {
+"verificationCode": {
+"description": "User-entered verification code.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2PasswordPolicy": {
+"description": "Configuration for password policy.",
+"id": "GoogleCloudIdentitytoolkitV2PasswordPolicy",
+"properties": {
+"allowedNonAlphanumericCharacters": {
+"description": "Output only. Allowed characters which satisfy the non_alphanumeric requirement.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"customStrengthOptions": {
+"$ref": "GoogleCloudIdentitytoolkitV2CustomStrengthOptions",
+"description": "The custom strength options enforced by the password policy."
+},
+"enforcementState": {
+"description": "Output only. Which enforcement mode to use for the password policy.",
+"enum": [
+"ENFORCEMENT_STATE_UNSPECIFIED",
+"OFF",
+"ENFORCE"
+],
+"enumDescriptions": [
+"Enforcement state has not been set.",
+"Password Policy will not be used on the project.",
+"Passwords non-compliant with the password policy will be rejected with an error thrown."
+],
+"readOnly": true,
+"type": "string"
+},
+"forceUpgradeOnSignin": {
+"description": "Users must have a password compliant with the password policy to sign-in.",
+"type": "boolean"
+},
+"schemaVersion": {
+"description": "Output only. schema version number for the password policy",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2RecaptchaConfig": {
+"description": "Configuration for reCAPTCHA",
+"id": "GoogleCloudIdentitytoolkitV2RecaptchaConfig",
+"properties": {
+"recaptchaEnforcementState": {
+"description": "The reCAPTCHA enforcement state for the providers that GCIP supports reCAPTCHA protection.",
+"items": {
+"$ref": "GoogleCloudIdentitytoolkitV2RecaptchaEnforcementState"
+},
+"type": "array"
+},
+"recaptchaKey": {
+"description": "The reCAPTCHA Enterprise key resource name, e.g. \"projects/{project}/keys/{key}\". This will only be returned when the reCAPTCHA enforcement state is AUDIT or ENFORCE on at least one of the reCAPTCHA providers.",
+"type": "string"
+},
+"useSmsBotScore": {
+"description": "Whether to use the rCE bot score for reCAPTCHA phone provider.",
+"type": "boolean"
+},
+"useSmsTollFraudProtection": {
+"description": "Whether to use the rCE sms toll fraud protection risk score for reCAPTCHA phone provider.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2RecaptchaEnforcementState": {
+"description": "Enforcement states for reCAPTCHA protection.",
+"id": "GoogleCloudIdentitytoolkitV2RecaptchaEnforcementState",
+"properties": {
+"enforcementState": {
+"description": "The reCAPTCHA enforcement state for the provider.",
+"enum": [
+"ENFORCEMENT_STATE_UNSPECIFIED",
+"OFF",
+"AUDIT",
+"ENFORCE"
+],
+"enumDescriptions": [
+"Enforcement state has not been set.",
+"Unenforced.",
+"reCAPTCHA assessment is created, result is not used to enforce.",
+"reCAPTCHA assessment is created, result is used to enforce."
+],
+"type": "string"
+},
+"provider": {
+"description": "The provider that has reCAPTCHA protection.",
+"enum": [
+"RECAPTCHA_PROVIDER_UNSPECIFIED",
+"EMAIL_PASSWORD_PROVIDER",
+"PHONE_PROVIDER"
+],
+"enumDescriptions": [
+"reCAPTCHA provider not specified",
+"Email password provider",
+"Phone auth provider"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2RevokeTokenRequest": {
+"description": "Request message for RevokeToken.",
+"id": "GoogleCloudIdentitytoolkitV2RevokeTokenRequest",
+"properties": {
+"idToken": {
+"description": "Required. A valid Identity Platform ID token to link the account. If there was a successful token revocation request on the account and no tokens are generated after the revocation, the duplicate requests will be ignored and returned immediately.",
+"type": "string"
+},
+"providerId": {
+"description": "Required. The idp provider for the token. Currently only supports Apple Idp. The format should be \"apple.com\".",
+"type": "string"
+},
+"redirectUri": {
+"description": "The redirect URI provided in the initial authorization request made by the client to the IDP. The URI must use the HTTPS protocol, include a domain name, and can't contain an IP address or localhost. Required if token_type is CODE.",
+"type": "string"
+},
+"tenantId": {
+"description": "The ID of the Identity Platform tenant the user is signing in to. If not set, the user will sign in to the default Identity Platform project.",
+"type": "string"
+},
+"token": {
+"description": "Required. The token to be revoked. If an authorization_code is passed in, the API will first exchange the code for access token and then revoke the token exchanged.",
+"type": "string"
+},
+"tokenType": {
+"description": "Required. The type of the token to be revoked.",
+"enum": [
+"TOKEN_TYPE_UNSPECIFIED",
+"REFRESH_TOKEN",
+"ACCESS_TOKEN",
+"CODE"
+],
+"enumDescriptions": [
+"Default value, do not use.",
+"Token type is refresh_token.",
+"Token type is access_token.",
+"Token type is authorization_code."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2RevokeTokenResponse": {
+"description": "Response message for RevokeToken. Empty for now.",
+"id": "GoogleCloudIdentitytoolkitV2RevokeTokenResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2StartMfaEnrollmentRequest": {
+"description": "Sends MFA enrollment verification SMS for a user.",
+"id": "GoogleCloudIdentitytoolkitV2StartMfaEnrollmentRequest",
+"properties": {
+"idToken": {
+"description": "Required. User's ID token.",
+"type": "string"
+},
+"phoneEnrollmentInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaPhoneRequestInfo",
+"description": "Verification info to authorize sending an SMS for phone verification."
+},
+"tenantId": {
+"description": "The ID of the Identity Platform tenant that the user enrolling MFA belongs to. If not set, the user belongs to the default Identity Platform project.",
+"type": "string"
+},
+"totpEnrollmentInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaTotpEnrollmentRequestInfo",
+"description": "Sign-in info specific to TOTP auth."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2StartMfaEnrollmentResponse": {
+"description": "StartMfaEnrollment response.",
+"id": "GoogleCloudIdentitytoolkitV2StartMfaEnrollmentResponse",
+"properties": {
+"phoneSessionInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaPhoneResponseInfo",
+"description": "Verification info to authorize sending an SMS for phone verification."
+},
+"totpSessionInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaTotpEnrollmentResponseInfo",
+"description": "Enrollment response info specific to TOTP auth."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2StartMfaPhoneRequestInfo": {
+"description": "App Verification info for a StartMfa request.",
+"id": "GoogleCloudIdentitytoolkitV2StartMfaPhoneRequestInfo",
+"properties": {
+"autoRetrievalInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2AutoRetrievalInfo",
+"description": "Android only. Used by Google Play Services to identify the app for auto-retrieval."
+},
+"captchaResponse": {
+"description": "The reCAPTCHA Enterprise token provided by the reCAPTCHA client-side integration. Required when reCAPTCHA enterprise is enabled.",
+"type": "string"
+},
+"clientType": {
+"description": "The client type, web, android or ios. Required when reCAPTCHA Enterprise is enabled.",
+"enum": [
+"CLIENT_TYPE_UNSPECIFIED",
+"CLIENT_TYPE_WEB",
+"CLIENT_TYPE_ANDROID",
+"CLIENT_TYPE_IOS"
+],
+"enumDescriptions": [
+"Client type is not specified.",
+"Client type is web.",
+"Client type is android.",
+"Client type is ios."
+],
+"type": "string"
+},
+"iosReceipt": {
+"description": "iOS only. Receipt of successful app token validation with APNS.",
+"type": "string"
+},
+"iosSecret": {
+"description": "iOS only. Secret delivered to iOS app via APNS.",
+"type": "string"
+},
+"phoneNumber": {
+"description": "Required for enrollment. Phone number to be enrolled as MFA.",
+"type": "string"
+},
+"playIntegrityToken": {
+"description": "Android only. Used to assert application identity in place of a recaptcha token (or safety net token). A Play Integrity Token can be generated via the [PlayIntegrity API] (https://developer.android.com/google/play/integrity) with applying SHA256 to the `phone_number` field as the nonce.",
+"type": "string"
+},
+"recaptchaToken": {
+"description": "Web only. Recaptcha solution.",
+"type": "string"
+},
+"recaptchaVersion": {
+"description": "The reCAPTCHA version of the reCAPTCHA token in the captcha_response. Required when reCAPTCHA Enterprise is enabled.",
+"enum": [
+"RECAPTCHA_VERSION_UNSPECIFIED",
+"RECAPTCHA_ENTERPRISE"
+],
+"enumDescriptions": [
+"The reCAPTCHA version is not specified.",
+"The reCAPTCHA enterprise."
+],
+"type": "string"
+},
+"safetyNetToken": {
+"description": "Android only. Used to assert application identity in place of a recaptcha token. A SafetyNet Token can be generated via the [SafetyNet Android Attestation API](https://developer.android.com/training/safetynet/attestation.html), with the Base64 encoding of the `phone_number` field as the nonce.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2StartMfaPhoneResponseInfo": {
+"description": "Phone Verification info for a StartMfa response.",
+"id": "GoogleCloudIdentitytoolkitV2StartMfaPhoneResponseInfo",
+"properties": {
+"sessionInfo": {
+"description": "An opaque string that represents the enrollment session.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2StartMfaSignInRequest": {
+"description": "Starts multi-factor sign-in by sending the multi-factor auth challenge.",
+"id": "GoogleCloudIdentitytoolkitV2StartMfaSignInRequest",
+"properties": {
+"mfaEnrollmentId": {
+"description": "Required. MFA enrollment id from the user's list of current MFA enrollments.",
+"type": "string"
+},
+"mfaPendingCredential": {
+"description": "Required. Pending credential from first factor sign-in.",
+"type": "string"
+},
+"phoneSignInInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaPhoneRequestInfo",
+"description": "Verification info to authorize sending an SMS for phone verification."
+},
+"tenantId": {
+"description": "The ID of the Identity Platform tenant the user is signing in to. If not set, the user will sign in to the default Identity Platform project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2StartMfaSignInResponse": {
+"description": "StartMfaSignIn response.",
+"id": "GoogleCloudIdentitytoolkitV2StartMfaSignInResponse",
+"properties": {
+"phoneResponseInfo": {
+"$ref": "GoogleCloudIdentitytoolkitV2StartMfaPhoneResponseInfo",
+"description": "MultiFactor sign-in session information specific to SMS-type second factors. Along with the one-time code retrieved from the sent SMS, the contents of this session information should be passed to FinalizeMfaSignIn to complete the sign in."
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2StartMfaTotpEnrollmentRequestInfo": {
+"description": "Mfa request info specific to TOTP auth for StartMfa.",
+"id": "GoogleCloudIdentitytoolkitV2StartMfaTotpEnrollmentRequestInfo",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2StartMfaTotpEnrollmentResponseInfo": {
+"description": "Mfa response info specific to TOTP auth for StartMfa.",
+"id": "GoogleCloudIdentitytoolkitV2StartMfaTotpEnrollmentResponseInfo",
+"properties": {
+"finalizeEnrollmentTime": {
+"description": "The time by which the enrollment must finish.",
+"format": "google-datetime",
+"type": "string"
+},
+"hashingAlgorithm": {
+"description": "The hashing algorithm used to generate the verification code.",
+"type": "string"
+},
+"periodSec": {
+"description": "Duration in seconds at which the verification code will change.",
+"format": "int32",
+"type": "integer"
+},
+"sessionInfo": {
+"description": "An encoded string that represents the enrollment session.",
+"type": "string"
+},
+"sharedSecretKey": {
+"description": "A base 32 encoded string that represents the shared TOTP secret. The base 32 encoding is the one specified by [RFC4648#section-6](https://datatracker.ietf.org/doc/html/rfc4648#section-6). (This is the same as the base 32 encoding from [RFC3548#section-5](https://datatracker.ietf.org/doc/html/rfc3548#section-5).)",
+"type": "string"
+},
+"verificationCodeLength": {
+"description": "The length of the verification code that needs to be generated.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2WithdrawMfaRequest": {
+"description": "Withdraws MFA.",
+"id": "GoogleCloudIdentitytoolkitV2WithdrawMfaRequest",
+"properties": {
+"idToken": {
+"description": "Required. User's ID token.",
+"type": "string"
+},
+"mfaEnrollmentId": {
+"description": "Required. MFA enrollment id from a current MFA enrollment.",
+"type": "string"
+},
+"tenantId": {
+"description": "The ID of the Identity Platform tenant that the user unenrolling MFA belongs to. If not set, the user belongs to the default Identity Platform project.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudIdentitytoolkitV2WithdrawMfaResponse": {
+"description": "Withdraws MultiFactorAuth response.",
+"id": "GoogleCloudIdentitytoolkitV2WithdrawMfaResponse",
+"properties": {
+"idToken": {
+"description": "ID token updated to reflect removal of the second factor.",
+"type": "string"
+},
+"refreshToken": {
+"description": "Refresh token updated to reflect removal of the second factor.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "GoogleIamV1AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "GoogleIamV1AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "GoogleIamV1AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "GoogleIamV1Binding",
+"properties": {
+"condition": {
+"$ref": "GoogleTypeExpr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1GetIamPolicyRequest": {
+"description": "Request message for `GetIamPolicy` method.",
+"id": "GoogleIamV1GetIamPolicyRequest",
+"properties": {
+"options": {
+"$ref": "GoogleIamV1GetPolicyOptions",
+"description": "OPTIONAL: A `GetPolicyOptions` object for specifying options to `GetIamPolicy`."
+}
+},
+"type": "object"
+},
+"GoogleIamV1GetPolicyOptions": {
+"description": "Encapsulates settings provided to GetIamPolicy.",
+"id": "GoogleIamV1GetPolicyOptions",
+"properties": {
+"requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleIamV1Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "GoogleIamV1Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "GoogleIamV1AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "GoogleIamV1Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleIamV1SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "GoogleIamV1SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "GoogleIamV1Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "GoogleIamV1TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIamV1TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "GoogleIamV1TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"GoogleTypeExpr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "GoogleTypeExpr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Identity Toolkit API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ids.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ids.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..77aa4511424f0d82de8fd5234e665ef57e923252
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ids.v1.json
@@ -0,0 +1,1074 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://ids.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "IDS",
+"description": "Cloud IDS (Cloud Intrusion Detection System) detects malware, spyware, command-and-control attacks, and other network-based threats. Its security efficacy is industry leading, built with Palo Alto Networks technologies. When you use this product, your organization name and consumption levels will be shared with Palo Alto Networks.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "ids:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://ids.mtls.googleapis.com/",
+"name": "ids",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "ids.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "ids.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"endpoints": {
+"methods": {
+"create": {
+"description": "Creates a new Endpoint in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpoints",
+"httpMethod": "POST",
+"id": "ids.projects.locations.endpoints.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"endpointId": {
+"description": "Required. The endpoint identifier. This will be part of the endpoint's resource name. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. Values that do not match this pattern will trigger an INVALID_ARGUMENT error.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The endpoint's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/endpoints",
+"request": {
+"$ref": "Endpoint"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Endpoint.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpoints/{endpointsId}",
+"httpMethod": "DELETE",
+"id": "ids.projects.locations.endpoints.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the endpoint to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpoints/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Endpoint.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpoints/{endpointsId}",
+"httpMethod": "GET",
+"id": "ids.projects.locations.endpoints.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the endpoint to retrieve. Format: projects/{project}/locations/{location}/endpoints/{endpoint}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpoints/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Endpoint"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpoints/{endpointsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "ids.projects.locations.endpoints.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpoints/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Endpoints in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpoints",
+"httpMethod": "GET",
+"id": "ids.projects.locations.endpoints.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter expression, following the syntax outlined in https://google.aip.dev/160.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. One or more fields to compare and use to sort the output. See https://google.aip.dev/132#ordering.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of endpoints to return. The service may return fewer than this value.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListEndpoints` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListEndpoints` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of endpoints.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/endpoints",
+"response": {
+"$ref": "ListEndpointsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Endpoint.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpoints/{endpointsId}",
+"httpMethod": "PATCH",
+"id": "ids.projects.locations.endpoints.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The name of the endpoint.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpoints/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask is used to specify the fields to be overwritten in the Endpoint resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Endpoint"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpoints/{endpointsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "ids.projects.locations.endpoints.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpoints/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpoints/{endpointsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "ids.projects.locations.endpoints.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpoints/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "ids.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "ids.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "ids.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "ids.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20240627",
+"rootUrl": "https://ids.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Endpoint": {
+"description": "Endpoint describes a single IDS endpoint. It defines a forwarding rule to which packets can be sent for IDS inspection.",
+"id": "Endpoint",
+"properties": {
+"createTime": {
+"description": "Output only. The create time timestamp.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "User-provided description of the endpoint",
+"type": "string"
+},
+"endpointForwardingRule": {
+"description": "Output only. The fully qualified URL of the endpoint's ILB Forwarding Rule.",
+"readOnly": true,
+"type": "string"
+},
+"endpointIp": {
+"description": "Output only. The IP address of the IDS Endpoint's ILB.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The labels of the endpoint.",
+"type": "object"
+},
+"name": {
+"description": "Output only. The name of the endpoint.",
+"readOnly": true,
+"type": "string"
+},
+"network": {
+"description": "Required. The fully qualified URL of the network to which the IDS Endpoint is attached.",
+"type": "string"
+},
+"satisfiesPzi": {
+"description": "Output only. [Output Only] Reserved for future use.",
+"readOnly": true,
+"type": "boolean"
+},
+"satisfiesPzs": {
+"description": "Output only. [Output Only] Reserved for future use.",
+"readOnly": true,
+"type": "boolean"
+},
+"severity": {
+"description": "Required. Lowest threat severity that this endpoint will alert on.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"INFORMATIONAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Not set.",
+"Informational alerts.",
+"Low severity alerts.",
+"Medium severity alerts.",
+"High severity alerts.",
+"Critical severity alerts."
+],
+"type": "string"
+},
+"state": {
+"description": "Output only. Current state of the endpoint.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"DELETING",
+"UPDATING"
+],
+"enumDescriptions": [
+"Not set.",
+"Being created.",
+"Active and ready for traffic.",
+"Being deleted.",
+"Being updated."
+],
+"readOnly": true,
+"type": "string"
+},
+"threatExceptions": {
+"description": "List of threat IDs to be excepted from generating alerts.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"trafficLogs": {
+"description": "Whether the endpoint should report traffic logs in addition to threat logs.",
+"type": "boolean"
+},
+"updateTime": {
+"description": "Output only. The update time timestamp.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListEndpointsResponse": {
+"id": "ListEndpointsResponse",
+"properties": {
+"endpoints": {
+"description": "The list of endpoints response.",
+"items": {
+"$ref": "Endpoint"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud IDS API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/language.v1beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/language.v1beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..119647e8c6f0c07ef43993126433757e9be8d17c
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/language.v1beta1.json
@@ -0,0 +1,1100 @@
+{
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/cloud-language": {
+ "description": "Apply machine learning models to reveal the structure and meaning of text"
+ },
+ "https://www.googleapis.com/auth/cloud-platform": {
+ "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+ }
+ }
+ }
+ },
+ "basePath": "",
+ "baseUrl": "https://language.googleapis.com/",
+ "batchPath": "batch",
+ "canonicalName": "Cloud Natural Language",
+ "description": "Provides natural language understanding technologies, such as sentiment analysis, entity recognition, entity sentiment analysis, and other text annotations, to developers.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://cloud.google.com/natural-language/",
+ "fullyEncodeReservedExpansion": true,
+ "icons": {
+ "x16": "http://www.google.com/images/icons/product/search-16.gif",
+ "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "id": "language:v1beta1",
+ "kind": "discovery#restDescription",
+ "mtlsRootUrl": "https://language.mtls.googleapis.com/",
+ "name": "language",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "$.xgafv": {
+ "description": "V1 error format.",
+ "enum": [
+ "1",
+ "2"
+ ],
+ "enumDescriptions": [
+ "v1 error format",
+ "v2 error format"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "access_token": {
+ "description": "OAuth access token.",
+ "location": "query",
+ "type": "string"
+ },
+ "alt": {
+ "default": "json",
+ "description": "Data format for response.",
+ "enum": [
+ "json",
+ "media",
+ "proto"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json",
+ "Media download with context-dependent Content-Type",
+ "Responses with Content-Type of application/x-protobuf"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "callback": {
+ "description": "JSONP",
+ "location": "query",
+ "type": "string"
+ },
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
+ "type": "string"
+ },
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
+ "type": "string"
+ },
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
+ "type": "string"
+ },
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+ "location": "query",
+ "type": "string"
+ },
+ "uploadType": {
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ },
+ "upload_protocol": {
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "protocol": "rest",
+ "resources": {
+ "documents": {
+ "methods": {
+ "analyzeEntities": {
+ "description": "Finds named entities (currently proper names and common nouns) in the text along with entity types, salience, mentions for each entity, and other properties.",
+ "flatPath": "v1beta1/documents:analyzeEntities",
+ "httpMethod": "POST",
+ "id": "language.documents.analyzeEntities",
+ "parameterOrder": [],
+ "parameters": {},
+ "path": "v1beta1/documents:analyzeEntities",
+ "request": {
+ "$ref": "AnalyzeEntitiesRequest"
+ },
+ "response": {
+ "$ref": "AnalyzeEntitiesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-language",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ },
+ "analyzeSentiment": {
+ "description": "Analyzes the sentiment of the provided text.",
+ "flatPath": "v1beta1/documents:analyzeSentiment",
+ "httpMethod": "POST",
+ "id": "language.documents.analyzeSentiment",
+ "parameterOrder": [],
+ "parameters": {},
+ "path": "v1beta1/documents:analyzeSentiment",
+ "request": {
+ "$ref": "AnalyzeSentimentRequest"
+ },
+ "response": {
+ "$ref": "AnalyzeSentimentResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-language",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ },
+ "analyzeSyntax": {
+ "description": "Analyzes the syntax of the text and provides sentence boundaries and tokenization along with part of speech tags, dependency trees, and other properties.",
+ "flatPath": "v1beta1/documents:analyzeSyntax",
+ "httpMethod": "POST",
+ "id": "language.documents.analyzeSyntax",
+ "parameterOrder": [],
+ "parameters": {},
+ "path": "v1beta1/documents:analyzeSyntax",
+ "request": {
+ "$ref": "AnalyzeSyntaxRequest"
+ },
+ "response": {
+ "$ref": "AnalyzeSyntaxResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-language",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ },
+ "annotateText": {
+ "description": "A convenience method that provides all the features that analyzeSentiment, analyzeEntities, and analyzeSyntax provide in one call.",
+ "flatPath": "v1beta1/documents:annotateText",
+ "httpMethod": "POST",
+ "id": "language.documents.annotateText",
+ "parameterOrder": [],
+ "parameters": {},
+ "path": "v1beta1/documents:annotateText",
+ "request": {
+ "$ref": "AnnotateTextRequest"
+ },
+ "response": {
+ "$ref": "AnnotateTextResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-language",
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ }
+ }
+ }
+ },
+ "revision": "20230104",
+ "rootUrl": "https://language.googleapis.com/",
+ "schemas": {
+ "AnalyzeEntitiesRequest": {
+ "description": "The entity analysis request message.",
+ "id": "AnalyzeEntitiesRequest",
+ "properties": {
+ "document": {
+ "$ref": "Document",
+ "description": "Input document."
+ },
+ "encodingType": {
+ "description": "The encoding type used by the API to calculate offsets.",
+ "enum": [
+ "NONE",
+ "UTF8",
+ "UTF16",
+ "UTF32"
+ ],
+ "enumDescriptions": [
+ "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and Javascript are examples of languages that use this encoding natively.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AnalyzeEntitiesResponse": {
+ "description": "The entity analysis response message.",
+ "id": "AnalyzeEntitiesResponse",
+ "properties": {
+ "entities": {
+ "description": "The recognized entities in the input document.",
+ "items": {
+ "$ref": "Entity"
+ },
+ "type": "array"
+ },
+ "language": {
+ "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AnalyzeSentimentRequest": {
+ "description": "The sentiment analysis request message.",
+ "id": "AnalyzeSentimentRequest",
+ "properties": {
+ "document": {
+ "$ref": "Document",
+ "description": "Input document."
+ },
+ "encodingType": {
+ "description": "The encoding type used by the API to calculate sentence offsets for the sentence sentiment.",
+ "enum": [
+ "NONE",
+ "UTF8",
+ "UTF16",
+ "UTF32"
+ ],
+ "enumDescriptions": [
+ "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and Javascript are examples of languages that use this encoding natively.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AnalyzeSentimentResponse": {
+ "description": "The sentiment analysis response message.",
+ "id": "AnalyzeSentimentResponse",
+ "properties": {
+ "documentSentiment": {
+ "$ref": "Sentiment",
+ "description": "The overall sentiment of the input document."
+ },
+ "language": {
+ "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
+ "type": "string"
+ },
+ "sentences": {
+ "description": "The sentiment for all the sentences in the document.",
+ "items": {
+ "$ref": "Sentence"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "AnalyzeSyntaxRequest": {
+ "description": "The syntax analysis request message.",
+ "id": "AnalyzeSyntaxRequest",
+ "properties": {
+ "document": {
+ "$ref": "Document",
+ "description": "Input document."
+ },
+ "encodingType": {
+ "description": "The encoding type used by the API to calculate offsets.",
+ "enum": [
+ "NONE",
+ "UTF8",
+ "UTF16",
+ "UTF32"
+ ],
+ "enumDescriptions": [
+ "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and Javascript are examples of languages that use this encoding natively.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AnalyzeSyntaxResponse": {
+ "description": "The syntax analysis response message.",
+ "id": "AnalyzeSyntaxResponse",
+ "properties": {
+ "language": {
+ "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
+ "type": "string"
+ },
+ "sentences": {
+ "description": "Sentences in the input document.",
+ "items": {
+ "$ref": "Sentence"
+ },
+ "type": "array"
+ },
+ "tokens": {
+ "description": "Tokens, along with their syntactic information, in the input document.",
+ "items": {
+ "$ref": "Token"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "AnnotateTextRequest": {
+ "description": "The request message for the text annotation API, which can perform multiple analysis types (sentiment, entities, and syntax) in one call.",
+ "id": "AnnotateTextRequest",
+ "properties": {
+ "document": {
+ "$ref": "Document",
+ "description": "Input document."
+ },
+ "encodingType": {
+ "description": "The encoding type used by the API to calculate offsets.",
+ "enum": [
+ "NONE",
+ "UTF8",
+ "UTF16",
+ "UTF32"
+ ],
+ "enumDescriptions": [
+ "If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and Javascript are examples of languages that use this encoding natively.",
+ "Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
+ ],
+ "type": "string"
+ },
+ "features": {
+ "$ref": "Features",
+ "description": "The enabled features."
+ }
+ },
+ "type": "object"
+ },
+ "AnnotateTextResponse": {
+ "description": "The text annotations response message.",
+ "id": "AnnotateTextResponse",
+ "properties": {
+ "documentSentiment": {
+ "$ref": "Sentiment",
+ "description": "The overall sentiment for the document. Populated if the user enables AnnotateTextRequest.Features.extract_document_sentiment."
+ },
+ "entities": {
+ "description": "Entities, along with their semantic information, in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_entities.",
+ "items": {
+ "$ref": "Entity"
+ },
+ "type": "array"
+ },
+ "language": {
+ "description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language field for more details.",
+ "type": "string"
+ },
+ "sentences": {
+ "description": "Sentences in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_syntax.",
+ "items": {
+ "$ref": "Sentence"
+ },
+ "type": "array"
+ },
+ "tokens": {
+ "description": "Tokens, along with their syntactic information, in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_syntax.",
+ "items": {
+ "$ref": "Token"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "DependencyEdge": {
+ "description": "Represents dependency parse tree information for a token.",
+ "id": "DependencyEdge",
+ "properties": {
+ "headTokenIndex": {
+ "description": "Represents the head of this token in the dependency tree. This is the index of the token which has an arc going to this token. The index is the position of the token in the array of tokens returned by the API method. If this token is a root token, then the `head_token_index` is its own index.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "label": {
+ "description": "The parse label for the token.",
+ "enum": [
+ "UNKNOWN",
+ "ABBREV",
+ "ACOMP",
+ "ADVCL",
+ "ADVMOD",
+ "AMOD",
+ "APPOS",
+ "ATTR",
+ "AUX",
+ "AUXPASS",
+ "CC",
+ "CCOMP",
+ "CONJ",
+ "CSUBJ",
+ "CSUBJPASS",
+ "DEP",
+ "DET",
+ "DISCOURSE",
+ "DOBJ",
+ "EXPL",
+ "GOESWITH",
+ "IOBJ",
+ "MARK",
+ "MWE",
+ "MWV",
+ "NEG",
+ "NN",
+ "NPADVMOD",
+ "NSUBJ",
+ "NSUBJPASS",
+ "NUM",
+ "NUMBER",
+ "P",
+ "PARATAXIS",
+ "PARTMOD",
+ "PCOMP",
+ "POBJ",
+ "POSS",
+ "POSTNEG",
+ "PRECOMP",
+ "PRECONJ",
+ "PREDET",
+ "PREF",
+ "PREP",
+ "PRONL",
+ "PRT",
+ "PS",
+ "QUANTMOD",
+ "RCMOD",
+ "RCMODREL",
+ "RDROP",
+ "REF",
+ "REMNANT",
+ "REPARANDUM",
+ "ROOT",
+ "SNUM",
+ "SUFF",
+ "TMOD",
+ "TOPIC",
+ "VMOD",
+ "VOCATIVE",
+ "XCOMP",
+ "SUFFIX",
+ "TITLE",
+ "ADVPHMOD",
+ "AUXCAUS",
+ "AUXVV",
+ "DTMOD",
+ "FOREIGN",
+ "KW",
+ "LIST",
+ "NOMC",
+ "NOMCSUBJ",
+ "NOMCSUBJPASS",
+ "NUMC",
+ "COP",
+ "DISLOCATED",
+ "ASP",
+ "GMOD",
+ "GOBJ",
+ "INFMOD",
+ "MES",
+ "NCOMP"
+ ],
+ "enumDescriptions": [
+ "Unknown",
+ "Abbreviation modifier",
+ "Adjectival complement",
+ "Adverbial clause modifier",
+ "Adverbial modifier",
+ "Adjectival modifier of an NP",
+ "Appositional modifier of an NP",
+ "Attribute dependent of a copular verb",
+ "Auxiliary (non-main) verb",
+ "Passive auxiliary",
+ "Coordinating conjunction",
+ "Clausal complement of a verb or adjective",
+ "Conjunct",
+ "Clausal subject",
+ "Clausal passive subject",
+ "Dependency (unable to determine)",
+ "Determiner",
+ "Discourse",
+ "Direct object",
+ "Expletive",
+ "Goes with (part of a word in a text not well edited)",
+ "Indirect object",
+ "Marker (word introducing a subordinate clause)",
+ "Multi-word expression",
+ "Multi-word verbal expression",
+ "Negation modifier",
+ "Noun compound modifier",
+ "Noun phrase used as an adverbial modifier",
+ "Nominal subject",
+ "Passive nominal subject",
+ "Numeric modifier of a noun",
+ "Element of compound number",
+ "Punctuation mark",
+ "Parataxis relation",
+ "Participial modifier",
+ "The complement of a preposition is a clause",
+ "Object of a preposition",
+ "Possession modifier",
+ "Postverbal negative particle",
+ "Predicate complement",
+ "Preconjunt",
+ "Predeterminer",
+ "Prefix",
+ "Prepositional modifier",
+ "The relationship between a verb and verbal morpheme",
+ "Particle",
+ "Associative or possessive marker",
+ "Quantifier phrase modifier",
+ "Relative clause modifier",
+ "Complementizer in relative clause",
+ "Ellipsis without a preceding predicate",
+ "Referent",
+ "Remnant",
+ "Reparandum",
+ "Root",
+ "Suffix specifying a unit of number",
+ "Suffix",
+ "Temporal modifier",
+ "Topic marker",
+ "Clause headed by an infinite form of the verb that modifies a noun",
+ "Vocative",
+ "Open clausal complement",
+ "Name suffix",
+ "Name title",
+ "Adverbial phrase modifier",
+ "Causative auxiliary",
+ "Helper auxiliary",
+ "Rentaishi (Prenominal modifier)",
+ "Foreign words",
+ "Keyword",
+ "List for chains of comparable items",
+ "Nominalized clause",
+ "Nominalized clausal subject",
+ "Nominalized clausal passive",
+ "Compound of numeric modifier",
+ "Copula",
+ "Dislocated relation (for fronted/topicalized elements)",
+ "Aspect marker",
+ "Genitive modifier",
+ "Genitive object",
+ "Infinitival modifier",
+ "Measure",
+ "Nominal complement of a noun"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Document": {
+ "description": "Represents the input to API methods.",
+ "id": "Document",
+ "properties": {
+ "content": {
+ "description": "The content of the input in string format. Cloud audit logging exempt since it is based on user data.",
+ "type": "string"
+ },
+ "gcsContentUri": {
+ "description": "The Google Cloud Storage URI where the file content is located. This URI must be of the form: gs://bucket_name/object_name. For more details, see https://cloud.google.com/storage/docs/reference-uris. NOTE: Cloud Storage object versioning is not supported.",
+ "type": "string"
+ },
+ "language": {
+ "description": "The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. [Language Support](https://cloud.google.com/natural-language/docs/languages) lists currently supported languages for each API method. If the language (either specified by the caller or automatically detected) is not supported by the called API method, an `INVALID_ARGUMENT` error is returned.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`, returns an `INVALID_ARGUMENT` error.",
+ "enum": [
+ "TYPE_UNSPECIFIED",
+ "PLAIN_TEXT",
+ "HTML"
+ ],
+ "enumDescriptions": [
+ "The content type is not specified.",
+ "Plain text",
+ "HTML"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Entity": {
+ "description": "Represents a phrase in the text that is a known entity, such as a person, an organization, or location. The API associates information, such as salience and mentions, with entities.",
+ "id": "Entity",
+ "properties": {
+ "mentions": {
+ "description": "The mentions of this entity in the input document. The API currently supports proper noun mentions.",
+ "items": {
+ "$ref": "EntityMention"
+ },
+ "type": "array"
+ },
+ "metadata": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Metadata associated with the entity. Currently, Wikipedia URLs and Knowledge Graph MIDs are provided, if available. The associated keys are \"wikipedia_url\" and \"mid\", respectively.",
+ "type": "object"
+ },
+ "name": {
+ "description": "The representative name for the entity.",
+ "type": "string"
+ },
+ "salience": {
+ "description": "The salience score associated with the entity in the [0, 1.0] range. The salience score for an entity provides information about the importance or centrality of that entity to the entire document text. Scores closer to 0 are less salient, while scores closer to 1.0 are highly salient.",
+ "format": "float",
+ "type": "number"
+ },
+ "type": {
+ "description": "The entity type.",
+ "enum": [
+ "UNKNOWN",
+ "PERSON",
+ "LOCATION",
+ "ORGANIZATION",
+ "EVENT",
+ "WORK_OF_ART",
+ "CONSUMER_GOOD",
+ "OTHER"
+ ],
+ "enumDescriptions": [
+ "Unknown",
+ "Person",
+ "Location",
+ "Organization",
+ "Event",
+ "Work of art",
+ "Consumer goods",
+ "Other types"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "EntityMention": {
+ "description": "Represents a mention for an entity in the text. Currently, proper noun mentions are supported.",
+ "id": "EntityMention",
+ "properties": {
+ "text": {
+ "$ref": "TextSpan",
+ "description": "The mention text."
+ },
+ "type": {
+ "description": "The type of the entity mention.",
+ "enum": [
+ "TYPE_UNKNOWN",
+ "PROPER",
+ "COMMON"
+ ],
+ "enumDescriptions": [
+ "Unknown",
+ "Proper name",
+ "Common noun (or noun compound)"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Features": {
+ "description": "All available features for sentiment, syntax, and semantic analysis. Setting each one to true will enable that specific analysis for the input.",
+ "id": "Features",
+ "properties": {
+ "extractDocumentSentiment": {
+ "description": "Extract document-level sentiment.",
+ "type": "boolean"
+ },
+ "extractEntities": {
+ "description": "Extract entities.",
+ "type": "boolean"
+ },
+ "extractSyntax": {
+ "description": "Extract syntax information.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "PartOfSpeech": {
+ "description": "Represents part of speech information for a token.",
+ "id": "PartOfSpeech",
+ "properties": {
+ "aspect": {
+ "description": "The grammatical aspect.",
+ "enum": [
+ "ASPECT_UNKNOWN",
+ "PERFECTIVE",
+ "IMPERFECTIVE",
+ "PROGRESSIVE"
+ ],
+ "enumDescriptions": [
+ "Aspect is not applicable in the analyzed language or is not predicted.",
+ "Perfective",
+ "Imperfective",
+ "Progressive"
+ ],
+ "type": "string"
+ },
+ "case": {
+ "description": "The grammatical case.",
+ "enum": [
+ "CASE_UNKNOWN",
+ "ACCUSATIVE",
+ "ADVERBIAL",
+ "COMPLEMENTIVE",
+ "DATIVE",
+ "GENITIVE",
+ "INSTRUMENTAL",
+ "LOCATIVE",
+ "NOMINATIVE",
+ "OBLIQUE",
+ "PARTITIVE",
+ "PREPOSITIONAL",
+ "REFLEXIVE_CASE",
+ "RELATIVE_CASE",
+ "VOCATIVE"
+ ],
+ "enumDescriptions": [
+ "Case is not applicable in the analyzed language or is not predicted.",
+ "Accusative",
+ "Adverbial",
+ "Complementive",
+ "Dative",
+ "Genitive",
+ "Instrumental",
+ "Locative",
+ "Nominative",
+ "Oblique",
+ "Partitive",
+ "Prepositional",
+ "Reflexive",
+ "Relative",
+ "Vocative"
+ ],
+ "type": "string"
+ },
+ "form": {
+ "description": "The grammatical form.",
+ "enum": [
+ "FORM_UNKNOWN",
+ "ADNOMIAL",
+ "AUXILIARY",
+ "COMPLEMENTIZER",
+ "FINAL_ENDING",
+ "GERUND",
+ "REALIS",
+ "IRREALIS",
+ "SHORT",
+ "LONG",
+ "ORDER",
+ "SPECIFIC"
+ ],
+ "enumDescriptions": [
+ "Form is not applicable in the analyzed language or is not predicted.",
+ "Adnomial",
+ "Auxiliary",
+ "Complementizer",
+ "Final ending",
+ "Gerund",
+ "Realis",
+ "Irrealis",
+ "Short form",
+ "Long form",
+ "Order form",
+ "Specific form"
+ ],
+ "type": "string"
+ },
+ "gender": {
+ "description": "The grammatical gender.",
+ "enum": [
+ "GENDER_UNKNOWN",
+ "FEMININE",
+ "MASCULINE",
+ "NEUTER"
+ ],
+ "enumDescriptions": [
+ "Gender is not applicable in the analyzed language or is not predicted.",
+ "Feminine",
+ "Masculine",
+ "Neuter"
+ ],
+ "type": "string"
+ },
+ "mood": {
+ "description": "The grammatical mood.",
+ "enum": [
+ "MOOD_UNKNOWN",
+ "CONDITIONAL_MOOD",
+ "IMPERATIVE",
+ "INDICATIVE",
+ "INTERROGATIVE",
+ "JUSSIVE",
+ "SUBJUNCTIVE"
+ ],
+ "enumDescriptions": [
+ "Mood is not applicable in the analyzed language or is not predicted.",
+ "Conditional",
+ "Imperative",
+ "Indicative",
+ "Interrogative",
+ "Jussive",
+ "Subjunctive"
+ ],
+ "type": "string"
+ },
+ "number": {
+ "description": "The grammatical number.",
+ "enum": [
+ "NUMBER_UNKNOWN",
+ "SINGULAR",
+ "PLURAL",
+ "DUAL"
+ ],
+ "enumDescriptions": [
+ "Number is not applicable in the analyzed language or is not predicted.",
+ "Singular",
+ "Plural",
+ "Dual"
+ ],
+ "type": "string"
+ },
+ "person": {
+ "description": "The grammatical person.",
+ "enum": [
+ "PERSON_UNKNOWN",
+ "FIRST",
+ "SECOND",
+ "THIRD",
+ "REFLEXIVE_PERSON"
+ ],
+ "enumDescriptions": [
+ "Person is not applicable in the analyzed language or is not predicted.",
+ "First",
+ "Second",
+ "Third",
+ "Reflexive"
+ ],
+ "type": "string"
+ },
+ "proper": {
+ "description": "The grammatical properness.",
+ "enum": [
+ "PROPER_UNKNOWN",
+ "PROPER",
+ "NOT_PROPER"
+ ],
+ "enumDescriptions": [
+ "Proper is not applicable in the analyzed language or is not predicted.",
+ "Proper",
+ "Not proper"
+ ],
+ "type": "string"
+ },
+ "reciprocity": {
+ "description": "The grammatical reciprocity.",
+ "enum": [
+ "RECIPROCITY_UNKNOWN",
+ "RECIPROCAL",
+ "NON_RECIPROCAL"
+ ],
+ "enumDescriptions": [
+ "Reciprocity is not applicable in the analyzed language or is not predicted.",
+ "Reciprocal",
+ "Non-reciprocal"
+ ],
+ "type": "string"
+ },
+ "tag": {
+ "description": "The part of speech tag.",
+ "enum": [
+ "UNKNOWN",
+ "ADJ",
+ "ADP",
+ "ADV",
+ "CONJ",
+ "DET",
+ "NOUN",
+ "NUM",
+ "PRON",
+ "PRT",
+ "PUNCT",
+ "VERB",
+ "X",
+ "AFFIX"
+ ],
+ "enumDescriptions": [
+ "Unknown",
+ "Adjective",
+ "Adposition (preposition and postposition)",
+ "Adverb",
+ "Conjunction",
+ "Determiner",
+ "Noun (common and proper)",
+ "Cardinal number",
+ "Pronoun",
+ "Particle or other function word",
+ "Punctuation",
+ "Verb (all tenses and modes)",
+ "Other: foreign words, typos, abbreviations",
+ "Affix"
+ ],
+ "type": "string"
+ },
+ "tense": {
+ "description": "The grammatical tense.",
+ "enum": [
+ "TENSE_UNKNOWN",
+ "CONDITIONAL_TENSE",
+ "FUTURE",
+ "PAST",
+ "PRESENT",
+ "IMPERFECT",
+ "PLUPERFECT"
+ ],
+ "enumDescriptions": [
+ "Tense is not applicable in the analyzed language or is not predicted.",
+ "Conditional",
+ "Future",
+ "Past",
+ "Present",
+ "Imperfect",
+ "Pluperfect"
+ ],
+ "type": "string"
+ },
+ "voice": {
+ "description": "The grammatical voice.",
+ "enum": [
+ "VOICE_UNKNOWN",
+ "ACTIVE",
+ "CAUSATIVE",
+ "PASSIVE"
+ ],
+ "enumDescriptions": [
+ "Voice is not applicable in the analyzed language or is not predicted.",
+ "Active",
+ "Causative",
+ "Passive"
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Sentence": {
+ "description": "Represents a sentence in the input document.",
+ "id": "Sentence",
+ "properties": {
+ "sentiment": {
+ "$ref": "Sentiment",
+ "description": "For calls to AnalyzeSentiment or if AnnotateTextRequest.Features.extract_document_sentiment is set to true, this field will contain the sentiment for the sentence."
+ },
+ "text": {
+ "$ref": "TextSpan",
+ "description": "The sentence text."
+ }
+ },
+ "type": "object"
+ },
+ "Sentiment": {
+ "description": "Represents the feeling associated with the entire text or entities in the text.",
+ "id": "Sentiment",
+ "properties": {
+ "magnitude": {
+ "description": "A non-negative number in the [0, +inf) range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).",
+ "format": "float",
+ "type": "number"
+ },
+ "polarity": {
+ "description": "DEPRECATED FIELD - This field is being deprecated in favor of score. Please refer to our documentation at https://cloud.google.com/natural-language/docs for more information.",
+ "format": "float",
+ "type": "number"
+ },
+ "score": {
+ "description": "Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).",
+ "format": "float",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Status": {
+ "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+ "id": "Status",
+ "properties": {
+ "code": {
+ "description": "The status code, which should be an enum value of google.rpc.Code.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "details": {
+ "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+ "items": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TextSpan": {
+ "description": "Represents an output piece of text.",
+ "id": "TextSpan",
+ "properties": {
+ "beginOffset": {
+ "description": "The API calculates the beginning offset of the content in the original document according to the EncodingType specified in the API request.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "content": {
+ "description": "The content of the output text.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Token": {
+ "description": "Represents the smallest syntactic building block of the text.",
+ "id": "Token",
+ "properties": {
+ "dependencyEdge": {
+ "$ref": "DependencyEdge",
+ "description": "Dependency tree parse for this token."
+ },
+ "lemma": {
+ "description": "[Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.",
+ "type": "string"
+ },
+ "partOfSpeech": {
+ "$ref": "PartOfSpeech",
+ "description": "Parts of speech tag for this token."
+ },
+ "text": {
+ "$ref": "TextSpan",
+ "description": "The token text."
+ }
+ },
+ "type": "object"
+ }
+ },
+ "servicePath": "",
+ "title": "Cloud Natural Language API",
+ "version": "v1beta1",
+ "version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/language.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/language.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..52da12633591c2fe3847263e92979eb8a9e0948d
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/language.v2.json
@@ -0,0 +1,5074 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-language": {
+"description": "Apply machine learning models to reveal the structure and meaning of text"
+},
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://language.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Natural Language",
+"description": "Provides natural language understanding technologies, such as sentiment analysis, entity recognition, entity sentiment analysis, and other text annotations, to developers.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/natural-language/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "language:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://language.mtls.googleapis.com/",
+"name": "language",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"documents": {
+"methods": {
+"analyzeEntities": {
+"description": "Finds named entities (currently proper names and common nouns) in the text along with entity types, probability, mentions for each entity, and other properties.",
+"flatPath": "v2/documents:analyzeEntities",
+"httpMethod": "POST",
+"id": "language.documents.analyzeEntities",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/documents:analyzeEntities",
+"request": {
+"$ref": "AnalyzeEntitiesRequest"
+},
+"response": {
+"$ref": "AnalyzeEntitiesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-language",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"analyzeSentiment": {
+"description": "Analyzes the sentiment of the provided text.",
+"flatPath": "v2/documents:analyzeSentiment",
+"httpMethod": "POST",
+"id": "language.documents.analyzeSentiment",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/documents:analyzeSentiment",
+"request": {
+"$ref": "AnalyzeSentimentRequest"
+},
+"response": {
+"$ref": "AnalyzeSentimentResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-language",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"annotateText": {
+"description": "A convenience method that provides all features in one call.",
+"flatPath": "v2/documents:annotateText",
+"httpMethod": "POST",
+"id": "language.documents.annotateText",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/documents:annotateText",
+"request": {
+"$ref": "AnnotateTextRequest"
+},
+"response": {
+"$ref": "AnnotateTextResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-language",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"classifyText": {
+"description": "Classifies a document into categories.",
+"flatPath": "v2/documents:classifyText",
+"httpMethod": "POST",
+"id": "language.documents.classifyText",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/documents:classifyText",
+"request": {
+"$ref": "ClassifyTextRequest"
+},
+"response": {
+"$ref": "ClassifyTextResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-language",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"moderateText": {
+"description": "Moderates a document for harmful and sensitive categories.",
+"flatPath": "v2/documents:moderateText",
+"httpMethod": "POST",
+"id": "language.documents.moderateText",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/documents:moderateText",
+"request": {
+"$ref": "ModerateTextRequest"
+},
+"response": {
+"$ref": "ModerateTextResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-language",
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+},
+"revision": "20250105",
+"rootUrl": "https://language.googleapis.com/",
+"schemas": {
+"AnalyzeEntitiesRequest": {
+"description": "The entity analysis request message.",
+"id": "AnalyzeEntitiesRequest",
+"properties": {
+"document": {
+"$ref": "Document",
+"description": "Required. Input document."
+},
+"encodingType": {
+"description": "The encoding type used by the API to calculate offsets.",
+"enum": [
+"NONE",
+"UTF8",
+"UTF16",
+"UTF32"
+],
+"enumDescriptions": [
+"If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and JavaScript are examples of languages that use this encoding natively.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzeEntitiesResponse": {
+"description": "The entity analysis response message.",
+"id": "AnalyzeEntitiesResponse",
+"properties": {
+"entities": {
+"description": "The recognized entities in the input document.",
+"items": {
+"$ref": "Entity"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language_code field for more details.",
+"type": "string"
+},
+"languageSupported": {
+"description": "Whether the language is officially supported. The API may still return a response when the language is not supported, but it is on a best effort basis.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"AnalyzeSentimentRequest": {
+"description": "The sentiment analysis request message.",
+"id": "AnalyzeSentimentRequest",
+"properties": {
+"document": {
+"$ref": "Document",
+"description": "Required. Input document."
+},
+"encodingType": {
+"description": "The encoding type used by the API to calculate sentence offsets.",
+"enum": [
+"NONE",
+"UTF8",
+"UTF16",
+"UTF32"
+],
+"enumDescriptions": [
+"If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and JavaScript are examples of languages that use this encoding natively.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzeSentimentResponse": {
+"description": "The sentiment analysis response message.",
+"id": "AnalyzeSentimentResponse",
+"properties": {
+"documentSentiment": {
+"$ref": "Sentiment",
+"description": "The overall sentiment of the input document."
+},
+"languageCode": {
+"description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language_code field for more details.",
+"type": "string"
+},
+"languageSupported": {
+"description": "Whether the language is officially supported. The API may still return a response when the language is not supported, but it is on a best effort basis.",
+"type": "boolean"
+},
+"sentences": {
+"description": "The sentiment for all the sentences in the document.",
+"items": {
+"$ref": "Sentence"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AnnotateTextRequest": {
+"description": "The request message for the text annotation API, which can perform multiple analysis types in one call.",
+"id": "AnnotateTextRequest",
+"properties": {
+"document": {
+"$ref": "Document",
+"description": "Required. Input document."
+},
+"encodingType": {
+"description": "The encoding type used by the API to calculate offsets.",
+"enum": [
+"NONE",
+"UTF8",
+"UTF16",
+"UTF32"
+],
+"enumDescriptions": [
+"If `EncodingType` is not specified, encoding-dependent information (such as `begin_offset`) will be set at `-1`.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-8 encoding of the input. C++ and Go are examples of languages that use this encoding natively.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-16 encoding of the input. Java and JavaScript are examples of languages that use this encoding natively.",
+"Encoding-dependent information (such as `begin_offset`) is calculated based on the UTF-32 encoding of the input. Python is an example of a language that uses this encoding natively."
+],
+"type": "string"
+},
+"features": {
+"$ref": "AnnotateTextRequestFeatures",
+"description": "Required. The enabled features."
+}
+},
+"type": "object"
+},
+"AnnotateTextRequestFeatures": {
+"description": "All available features. Setting each one to true will enable that specific analysis for the input.",
+"id": "AnnotateTextRequestFeatures",
+"properties": {
+"classifyText": {
+"description": "Optional. Classify the full document into categories.",
+"type": "boolean"
+},
+"extractDocumentSentiment": {
+"description": "Optional. Extract document-level sentiment.",
+"type": "boolean"
+},
+"extractEntities": {
+"description": "Optional. Extract entities.",
+"type": "boolean"
+},
+"moderateText": {
+"description": "Optional. Moderate the document for harmful and sensitive categories.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"AnnotateTextResponse": {
+"description": "The text annotations response message.",
+"id": "AnnotateTextResponse",
+"properties": {
+"categories": {
+"description": "Categories identified in the input document.",
+"items": {
+"$ref": "ClassificationCategory"
+},
+"type": "array"
+},
+"documentSentiment": {
+"$ref": "Sentiment",
+"description": "The overall sentiment for the document. Populated if the user enables AnnotateTextRequest.Features.extract_document_sentiment."
+},
+"entities": {
+"description": "Entities, along with their semantic information, in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_entities .",
+"items": {
+"$ref": "Entity"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language_code field for more details.",
+"type": "string"
+},
+"languageSupported": {
+"description": "Whether the language is officially supported by all requested features. The API may still return a response when the language is not supported, but it is on a best effort basis.",
+"type": "boolean"
+},
+"moderationCategories": {
+"description": "Harmful and sensitive categories identified in the input document.",
+"items": {
+"$ref": "ClassificationCategory"
+},
+"type": "array"
+},
+"sentences": {
+"description": "Sentences in the input document. Populated if the user enables AnnotateTextRequest.Features.extract_document_sentiment.",
+"items": {
+"$ref": "Sentence"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ClassificationCategory": {
+"description": "Represents a category returned from the text classifier.",
+"id": "ClassificationCategory",
+"properties": {
+"confidence": {
+"description": "The classifier's confidence of the category. Number represents how certain the classifier is that this category represents the given text.",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of the category representing the document.",
+"type": "string"
+},
+"severity": {
+"description": "Optional. The classifier's severity of the category. This is only present when the ModerateTextRequest.ModelVersion is set to MODEL_VERSION_2, and the corresponding category has a severity score.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"ClassifyTextRequest": {
+"description": "The document classification request message.",
+"id": "ClassifyTextRequest",
+"properties": {
+"document": {
+"$ref": "Document",
+"description": "Required. Input document."
+}
+},
+"type": "object"
+},
+"ClassifyTextResponse": {
+"description": "The document classification response message.",
+"id": "ClassifyTextResponse",
+"properties": {
+"categories": {
+"description": "Categories representing the input document.",
+"items": {
+"$ref": "ClassificationCategory"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language_code field for more details.",
+"type": "string"
+},
+"languageSupported": {
+"description": "Whether the language is officially supported. The API may still return a response when the language is not supported, but it is on a best effort basis.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Color": {
+"description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to and from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't have information about the absolute color space that should be used to interpret the RGB value\u2014for example, sRGB, Adobe RGB, DCI-P3, and BT.2020. By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most `1e-5`. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha <= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red << 16) | (green << 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i < missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...",
+"id": "Color",
+"properties": {
+"alpha": {
+"description": "The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is rendered as a solid color (as if the alpha value had been explicitly given a value of 1.0).",
+"format": "float",
+"type": "number"
+},
+"blue": {
+"description": "The amount of blue in the color as a value in the interval [0, 1].",
+"format": "float",
+"type": "number"
+},
+"green": {
+"description": "The amount of green in the color as a value in the interval [0, 1].",
+"format": "float",
+"type": "number"
+},
+"red": {
+"description": "The amount of red in the color as a value in the interval [0, 1].",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"CpuMetric": {
+"description": "Metric for billing reports.",
+"id": "CpuMetric",
+"properties": {
+"coreNumber": {
+"description": "Required. Number of CPU cores.",
+"format": "int64",
+"type": "string"
+},
+"coreSec": {
+"description": "Required. Total seconds of core usage, e.g. 4.",
+"format": "int64",
+"type": "string"
+},
+"cpuType": {
+"description": "Required. Type of cpu, e.g. N2.",
+"enum": [
+"UNKNOWN_CPU_TYPE",
+"A2",
+"A3",
+"C2",
+"C2D",
+"CUSTOM",
+"E2",
+"G2",
+"C3",
+"M2",
+"M1",
+"N1",
+"N2_CUSTOM",
+"N2",
+"N2D"
+],
+"enumDescriptions": [
+"",
+"GPU-based machine, skip quota reporting.",
+"GPU-based machine, skip quota reporting.",
+"COMPUTE_OPTIMIZED",
+"",
+"",
+"",
+"GPU-based machine, skip quota reporting.",
+"",
+"MEMORY_OPTIMIZED_UPGRADE_PREMIUM",
+"MEMORY_OPTIMIZED",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"machineSpec": {
+"description": "Required. Machine spec, e.g. N1_STANDARD_4.",
+"enum": [
+"UNKNOWN_MACHINE_SPEC",
+"N1_STANDARD_2",
+"N1_STANDARD_4",
+"N1_STANDARD_8",
+"N1_STANDARD_16",
+"N1_STANDARD_32",
+"N1_STANDARD_64",
+"N1_STANDARD_96",
+"N1_HIGHMEM_2",
+"N1_HIGHMEM_4",
+"N1_HIGHMEM_8",
+"N1_HIGHMEM_16",
+"N1_HIGHMEM_32",
+"N1_HIGHMEM_64",
+"N1_HIGHMEM_96",
+"N1_HIGHCPU_2",
+"N1_HIGHCPU_4",
+"N1_HIGHCPU_8",
+"N1_HIGHCPU_16",
+"N1_HIGHCPU_32",
+"N1_HIGHCPU_64",
+"N1_HIGHCPU_96",
+"A2_HIGHGPU_1G",
+"A2_HIGHGPU_2G",
+"A2_HIGHGPU_4G",
+"A2_HIGHGPU_8G",
+"A2_MEGAGPU_16G",
+"A2_ULTRAGPU_1G",
+"A2_ULTRAGPU_2G",
+"A2_ULTRAGPU_4G",
+"A2_ULTRAGPU_8G",
+"A3_HIGHGPU_1G",
+"A3_HIGHGPU_2G",
+"A3_HIGHGPU_4G",
+"A3_HIGHGPU_8G",
+"A3_MEGAGPU_8G",
+"A3_ULTRAGPU_8G",
+"E2_STANDARD_2",
+"E2_STANDARD_4",
+"E2_STANDARD_8",
+"E2_STANDARD_16",
+"E2_STANDARD_32",
+"E2_HIGHMEM_2",
+"E2_HIGHMEM_4",
+"E2_HIGHMEM_8",
+"E2_HIGHMEM_16",
+"E2_HIGHCPU_2",
+"E2_HIGHCPU_4",
+"E2_HIGHCPU_8",
+"E2_HIGHCPU_16",
+"E2_HIGHCPU_32",
+"N2_STANDARD_2",
+"N2_STANDARD_4",
+"N2_STANDARD_8",
+"N2_STANDARD_16",
+"N2_STANDARD_32",
+"N2_STANDARD_48",
+"N2_STANDARD_64",
+"N2_STANDARD_80",
+"N2_STANDARD_96",
+"N2_STANDARD_128",
+"N2_HIGHMEM_2",
+"N2_HIGHMEM_4",
+"N2_HIGHMEM_8",
+"N2_HIGHMEM_16",
+"N2_HIGHMEM_32",
+"N2_HIGHMEM_48",
+"N2_HIGHMEM_64",
+"N2_HIGHMEM_80",
+"N2_HIGHMEM_96",
+"N2_HIGHMEM_128",
+"N2_HIGHCPU_2",
+"N2_HIGHCPU_4",
+"N2_HIGHCPU_8",
+"N2_HIGHCPU_16",
+"N2_HIGHCPU_32",
+"N2_HIGHCPU_48",
+"N2_HIGHCPU_64",
+"N2_HIGHCPU_80",
+"N2_HIGHCPU_96",
+"N2D_STANDARD_2",
+"N2D_STANDARD_4",
+"N2D_STANDARD_8",
+"N2D_STANDARD_16",
+"N2D_STANDARD_32",
+"N2D_STANDARD_48",
+"N2D_STANDARD_64",
+"N2D_STANDARD_80",
+"N2D_STANDARD_96",
+"N2D_STANDARD_128",
+"N2D_STANDARD_224",
+"N2D_HIGHMEM_2",
+"N2D_HIGHMEM_4",
+"N2D_HIGHMEM_8",
+"N2D_HIGHMEM_16",
+"N2D_HIGHMEM_32",
+"N2D_HIGHMEM_48",
+"N2D_HIGHMEM_64",
+"N2D_HIGHMEM_80",
+"N2D_HIGHMEM_96",
+"N2D_HIGHCPU_2",
+"N2D_HIGHCPU_4",
+"N2D_HIGHCPU_8",
+"N2D_HIGHCPU_16",
+"N2D_HIGHCPU_32",
+"N2D_HIGHCPU_48",
+"N2D_HIGHCPU_64",
+"N2D_HIGHCPU_80",
+"N2D_HIGHCPU_96",
+"N2D_HIGHCPU_128",
+"N2D_HIGHCPU_224",
+"C2_STANDARD_4",
+"C2_STANDARD_8",
+"C2_STANDARD_16",
+"C2_STANDARD_30",
+"C2_STANDARD_60",
+"C2D_STANDARD_2",
+"C2D_STANDARD_4",
+"C2D_STANDARD_8",
+"C2D_STANDARD_16",
+"C2D_STANDARD_32",
+"C2D_STANDARD_56",
+"C2D_STANDARD_112",
+"C2D_HIGHCPU_2",
+"C2D_HIGHCPU_4",
+"C2D_HIGHCPU_8",
+"C2D_HIGHCPU_16",
+"C2D_HIGHCPU_32",
+"C2D_HIGHCPU_56",
+"C2D_HIGHCPU_112",
+"C2D_HIGHMEM_2",
+"C2D_HIGHMEM_4",
+"C2D_HIGHMEM_8",
+"C2D_HIGHMEM_16",
+"C2D_HIGHMEM_32",
+"C2D_HIGHMEM_56",
+"C2D_HIGHMEM_112",
+"G2_STANDARD_4",
+"G2_STANDARD_8",
+"G2_STANDARD_12",
+"G2_STANDARD_16",
+"G2_STANDARD_24",
+"G2_STANDARD_32",
+"G2_STANDARD_48",
+"G2_STANDARD_96",
+"C3_STANDARD_4",
+"C3_STANDARD_8",
+"C3_STANDARD_22",
+"C3_STANDARD_44",
+"C3_STANDARD_88",
+"C3_STANDARD_176",
+"C3_HIGHCPU_4",
+"C3_HIGHCPU_8",
+"C3_HIGHCPU_22",
+"C3_HIGHCPU_44",
+"C3_HIGHCPU_88",
+"C3_HIGHCPU_176",
+"C3_HIGHMEM_4",
+"C3_HIGHMEM_8",
+"C3_HIGHMEM_22",
+"C3_HIGHMEM_44",
+"C3_HIGHMEM_88",
+"C3_HIGHMEM_176"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"trackingLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Billing tracking labels. They do not contain any user data but only the labels set by Vertex Core Infra itself. Tracking labels' keys are defined with special format: goog-[\\p{Ll}\\p{N}]+ E.g. \"key\": \"goog-k8s-cluster-name\",\"value\": \"us-east1-b4rk\"",
+"type": "object"
+}
+},
+"type": "object"
+},
+"DiskMetric": {
+"id": "DiskMetric",
+"properties": {
+"diskType": {
+"description": "Required. Type of Disk, e.g. REGIONAL_SSD.",
+"enum": [
+"UNKNOWN_DISK_TYPE",
+"REGIONAL_SSD",
+"REGIONAL_STORAGE",
+"PD_SSD",
+"PD_STANDARD",
+"STORAGE_SNAPSHOT"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"gibSec": {
+"description": "Required. Seconds of physical disk usage, e.g. 3600.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Document": {
+"description": "Represents the input to API methods.",
+"id": "Document",
+"properties": {
+"content": {
+"description": "The content of the input in string format. Cloud audit logging exempt since it is based on user data.",
+"type": "string"
+},
+"gcsContentUri": {
+"description": "The Google Cloud Storage URI where the file content is located. This URI must be of the form: gs://bucket_name/object_name. For more details, see https://cloud.google.com/storage/docs/reference-uris. NOTE: Cloud Storage object versioning is not supported.",
+"type": "string"
+},
+"languageCode": {
+"description": "Optional. The language of the document (if not specified, the language is automatically detected). Both ISO and BCP-47 language codes are accepted. [Language Support](https://cloud.google.com/natural-language/docs/languages) lists currently supported languages for each API method. If the language (either specified by the caller or automatically detected) is not supported by the called API method, an `INVALID_ARGUMENT` error is returned.",
+"type": "string"
+},
+"type": {
+"description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`, returns an `INVALID_ARGUMENT` error.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"PLAIN_TEXT",
+"HTML"
+],
+"enumDescriptions": [
+"The content type is not specified.",
+"Plain text",
+"HTML"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Entity": {
+"description": "Represents a phrase in the text that is a known entity, such as a person, an organization, or location. The API associates information, such as probability and mentions, with entities.",
+"id": "Entity",
+"properties": {
+"mentions": {
+"description": "The mentions of this entity in the input document. The API currently supports proper noun mentions.",
+"items": {
+"$ref": "EntityMention"
+},
+"type": "array"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Metadata associated with the entity. For the metadata associated with other entity types, see the Type table below.",
+"type": "object"
+},
+"name": {
+"description": "The representative name for the entity.",
+"type": "string"
+},
+"sentiment": {
+"$ref": "Sentiment",
+"description": "For calls to AnalyzeEntitySentiment this field will contain the aggregate sentiment expressed for this entity in the provided document."
+},
+"type": {
+"description": "The entity type.",
+"enum": [
+"UNKNOWN",
+"PERSON",
+"LOCATION",
+"ORGANIZATION",
+"EVENT",
+"WORK_OF_ART",
+"CONSUMER_GOOD",
+"OTHER",
+"PHONE_NUMBER",
+"ADDRESS",
+"DATE",
+"NUMBER",
+"PRICE"
+],
+"enumDescriptions": [
+"Unknown",
+"Person",
+"Location",
+"Organization",
+"Event",
+"Artwork",
+"Consumer product",
+"Other types of entities",
+"Phone number The metadata lists the phone number, formatted according to local convention, plus whichever additional elements appear in the text: * `number` - the actual number, broken down into sections as per local convention * `national_prefix` - country code, if detected * `area_code` - region or area code, if detected * `extension` - phone extension (to be dialed after connection), if detected",
+"Address The metadata identifies the street number and locality plus whichever additional elements appear in the text: * `street_number` - street number * `locality` - city or town * `street_name` - street/route name, if detected * `postal_code` - postal code, if detected * `country` - country, if detected * `broad_region` - administrative area, such as the state, if detected * `narrow_region` - smaller administrative area, such as county, if detected * `sublocality` - used in Asian addresses to demark a district within a city, if detected",
+"Date The metadata identifies the components of the date: * `year` - four digit year, if detected * `month` - two digit month number, if detected * `day` - two digit day number, if detected",
+"Number The metadata is the number itself.",
+"Price The metadata identifies the `value` and `currency`."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"EntityMention": {
+"description": "Represents a mention for an entity in the text. Currently, proper noun mentions are supported.",
+"id": "EntityMention",
+"properties": {
+"probability": {
+"description": "Probability score associated with the entity. The score shows the probability of the entity mention being the entity type. The score is in (0, 1] range.",
+"format": "float",
+"type": "number"
+},
+"sentiment": {
+"$ref": "Sentiment",
+"description": "For calls to AnalyzeEntitySentiment this field will contain the sentiment expressed for this mention of the entity in the provided document."
+},
+"text": {
+"$ref": "TextSpan",
+"description": "The mention text."
+},
+"type": {
+"description": "The type of the entity mention.",
+"enum": [
+"TYPE_UNKNOWN",
+"PROPER",
+"COMMON"
+],
+"enumDescriptions": [
+"Unknown",
+"Proper name",
+"Common noun (or noun compound)"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GpuMetric": {
+"id": "GpuMetric",
+"properties": {
+"gpuSec": {
+"description": "Required. Seconds of GPU usage, e.g. 3600.",
+"format": "int64",
+"type": "string"
+},
+"gpuType": {
+"description": "Required. Type of GPU, e.g. NVIDIA_TESLA_V100.",
+"enum": [
+"UNKNOWN_GPU_TYPE",
+"NVIDIA_TESLA_A100",
+"NVIDIA_A100_80GB",
+"NVIDIA_TESLA_K80",
+"NVIDIA_L4",
+"NVIDIA_TESLA_P100",
+"NVIDIA_TESLA_P4",
+"NVIDIA_TESLA_T4",
+"NVIDIA_TESLA_V100",
+"NVIDIA_H100_80GB"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"machineSpec": {
+"description": "Required. Machine spec, e.g. N1_STANDARD_4.",
+"enum": [
+"UNKNOWN_MACHINE_SPEC",
+"N1_STANDARD_2",
+"N1_STANDARD_4",
+"N1_STANDARD_8",
+"N1_STANDARD_16",
+"N1_STANDARD_32",
+"N1_STANDARD_64",
+"N1_STANDARD_96",
+"N1_HIGHMEM_2",
+"N1_HIGHMEM_4",
+"N1_HIGHMEM_8",
+"N1_HIGHMEM_16",
+"N1_HIGHMEM_32",
+"N1_HIGHMEM_64",
+"N1_HIGHMEM_96",
+"N1_HIGHCPU_2",
+"N1_HIGHCPU_4",
+"N1_HIGHCPU_8",
+"N1_HIGHCPU_16",
+"N1_HIGHCPU_32",
+"N1_HIGHCPU_64",
+"N1_HIGHCPU_96",
+"A2_HIGHGPU_1G",
+"A2_HIGHGPU_2G",
+"A2_HIGHGPU_4G",
+"A2_HIGHGPU_8G",
+"A2_MEGAGPU_16G",
+"A2_ULTRAGPU_1G",
+"A2_ULTRAGPU_2G",
+"A2_ULTRAGPU_4G",
+"A2_ULTRAGPU_8G",
+"A3_HIGHGPU_1G",
+"A3_HIGHGPU_2G",
+"A3_HIGHGPU_4G",
+"A3_HIGHGPU_8G",
+"A3_MEGAGPU_8G",
+"A3_ULTRAGPU_8G",
+"E2_STANDARD_2",
+"E2_STANDARD_4",
+"E2_STANDARD_8",
+"E2_STANDARD_16",
+"E2_STANDARD_32",
+"E2_HIGHMEM_2",
+"E2_HIGHMEM_4",
+"E2_HIGHMEM_8",
+"E2_HIGHMEM_16",
+"E2_HIGHCPU_2",
+"E2_HIGHCPU_4",
+"E2_HIGHCPU_8",
+"E2_HIGHCPU_16",
+"E2_HIGHCPU_32",
+"N2_STANDARD_2",
+"N2_STANDARD_4",
+"N2_STANDARD_8",
+"N2_STANDARD_16",
+"N2_STANDARD_32",
+"N2_STANDARD_48",
+"N2_STANDARD_64",
+"N2_STANDARD_80",
+"N2_STANDARD_96",
+"N2_STANDARD_128",
+"N2_HIGHMEM_2",
+"N2_HIGHMEM_4",
+"N2_HIGHMEM_8",
+"N2_HIGHMEM_16",
+"N2_HIGHMEM_32",
+"N2_HIGHMEM_48",
+"N2_HIGHMEM_64",
+"N2_HIGHMEM_80",
+"N2_HIGHMEM_96",
+"N2_HIGHMEM_128",
+"N2_HIGHCPU_2",
+"N2_HIGHCPU_4",
+"N2_HIGHCPU_8",
+"N2_HIGHCPU_16",
+"N2_HIGHCPU_32",
+"N2_HIGHCPU_48",
+"N2_HIGHCPU_64",
+"N2_HIGHCPU_80",
+"N2_HIGHCPU_96",
+"N2D_STANDARD_2",
+"N2D_STANDARD_4",
+"N2D_STANDARD_8",
+"N2D_STANDARD_16",
+"N2D_STANDARD_32",
+"N2D_STANDARD_48",
+"N2D_STANDARD_64",
+"N2D_STANDARD_80",
+"N2D_STANDARD_96",
+"N2D_STANDARD_128",
+"N2D_STANDARD_224",
+"N2D_HIGHMEM_2",
+"N2D_HIGHMEM_4",
+"N2D_HIGHMEM_8",
+"N2D_HIGHMEM_16",
+"N2D_HIGHMEM_32",
+"N2D_HIGHMEM_48",
+"N2D_HIGHMEM_64",
+"N2D_HIGHMEM_80",
+"N2D_HIGHMEM_96",
+"N2D_HIGHCPU_2",
+"N2D_HIGHCPU_4",
+"N2D_HIGHCPU_8",
+"N2D_HIGHCPU_16",
+"N2D_HIGHCPU_32",
+"N2D_HIGHCPU_48",
+"N2D_HIGHCPU_64",
+"N2D_HIGHCPU_80",
+"N2D_HIGHCPU_96",
+"N2D_HIGHCPU_128",
+"N2D_HIGHCPU_224",
+"C2_STANDARD_4",
+"C2_STANDARD_8",
+"C2_STANDARD_16",
+"C2_STANDARD_30",
+"C2_STANDARD_60",
+"C2D_STANDARD_2",
+"C2D_STANDARD_4",
+"C2D_STANDARD_8",
+"C2D_STANDARD_16",
+"C2D_STANDARD_32",
+"C2D_STANDARD_56",
+"C2D_STANDARD_112",
+"C2D_HIGHCPU_2",
+"C2D_HIGHCPU_4",
+"C2D_HIGHCPU_8",
+"C2D_HIGHCPU_16",
+"C2D_HIGHCPU_32",
+"C2D_HIGHCPU_56",
+"C2D_HIGHCPU_112",
+"C2D_HIGHMEM_2",
+"C2D_HIGHMEM_4",
+"C2D_HIGHMEM_8",
+"C2D_HIGHMEM_16",
+"C2D_HIGHMEM_32",
+"C2D_HIGHMEM_56",
+"C2D_HIGHMEM_112",
+"G2_STANDARD_4",
+"G2_STANDARD_8",
+"G2_STANDARD_12",
+"G2_STANDARD_16",
+"G2_STANDARD_24",
+"G2_STANDARD_32",
+"G2_STANDARD_48",
+"G2_STANDARD_96",
+"C3_STANDARD_4",
+"C3_STANDARD_8",
+"C3_STANDARD_22",
+"C3_STANDARD_44",
+"C3_STANDARD_88",
+"C3_STANDARD_176",
+"C3_HIGHCPU_4",
+"C3_HIGHCPU_8",
+"C3_HIGHCPU_22",
+"C3_HIGHCPU_44",
+"C3_HIGHCPU_88",
+"C3_HIGHCPU_176",
+"C3_HIGHMEM_4",
+"C3_HIGHMEM_8",
+"C3_HIGHMEM_22",
+"C3_HIGHMEM_44",
+"C3_HIGHMEM_88",
+"C3_HIGHMEM_176"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"trackingLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Billing tracking labels. They do not contain any user data but only the labels set by Vertex Core Infra itself. Tracking labels' keys are defined with special format: goog-[\\p{Ll}\\p{N}]+ E.g. \"key\": \"goog-k8s-cluster-name\",\"value\": \"us-east1-b4rk\"",
+"type": "object"
+}
+},
+"type": "object"
+},
+"InfraUsage": {
+"description": "Infra Usage of billing metrics.",
+"id": "InfraUsage",
+"properties": {
+"cpuMetrics": {
+"description": "Aggregated core metrics since requested start_time.",
+"items": {
+"$ref": "CpuMetric"
+},
+"type": "array"
+},
+"diskMetrics": {
+"description": "Aggregated persistent disk metrics since requested start_time.",
+"items": {
+"$ref": "DiskMetric"
+},
+"type": "array"
+},
+"gpuMetrics": {
+"description": "Aggregated gpu metrics since requested start_time.",
+"items": {
+"$ref": "GpuMetric"
+},
+"type": "array"
+},
+"ramMetrics": {
+"description": "Aggregated ram metrics since requested start_time.",
+"items": {
+"$ref": "RamMetric"
+},
+"type": "array"
+},
+"tpuMetrics": {
+"description": "Aggregated tpu metrics since requested start_time.",
+"items": {
+"$ref": "TpuMetric"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ModerateTextRequest": {
+"description": "The document moderation request message.",
+"id": "ModerateTextRequest",
+"properties": {
+"document": {
+"$ref": "Document",
+"description": "Required. Input document."
+},
+"modelVersion": {
+"description": "Optional. The model version to use for ModerateText.",
+"enum": [
+"MODEL_VERSION_UNSPECIFIED",
+"MODEL_VERSION_1",
+"MODEL_VERSION_2"
+],
+"enumDescriptions": [
+"The default model version.",
+"Use the v1 model, this model is used by default when not provided. The v1 model only returns probability (confidence) score for each category.",
+"Use the v2 model. The v2 model only returns probability (confidence) score for each category, and returns severity score for a subset of the categories."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ModerateTextResponse": {
+"description": "The document moderation response message.",
+"id": "ModerateTextResponse",
+"properties": {
+"languageCode": {
+"description": "The language of the text, which will be the same as the language specified in the request or, if not specified, the automatically-detected language. See Document.language_code field for more details.",
+"type": "string"
+},
+"languageSupported": {
+"description": "Whether the language is officially supported. The API may still return a response when the language is not supported, but it is on a best effort basis.",
+"type": "boolean"
+},
+"moderationCategories": {
+"description": "Harmful and sensitive categories representing the input document.",
+"items": {
+"$ref": "ClassificationCategory"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"RamMetric": {
+"id": "RamMetric",
+"properties": {
+"gibSec": {
+"description": "Required. VM memory in Gigabyte second, e.g. 3600. Using int64 type to match billing metrics definition.",
+"format": "int64",
+"type": "string"
+},
+"machineSpec": {
+"description": "Required. Machine spec, e.g. N1_STANDARD_4.",
+"enum": [
+"UNKNOWN_MACHINE_SPEC",
+"N1_STANDARD_2",
+"N1_STANDARD_4",
+"N1_STANDARD_8",
+"N1_STANDARD_16",
+"N1_STANDARD_32",
+"N1_STANDARD_64",
+"N1_STANDARD_96",
+"N1_HIGHMEM_2",
+"N1_HIGHMEM_4",
+"N1_HIGHMEM_8",
+"N1_HIGHMEM_16",
+"N1_HIGHMEM_32",
+"N1_HIGHMEM_64",
+"N1_HIGHMEM_96",
+"N1_HIGHCPU_2",
+"N1_HIGHCPU_4",
+"N1_HIGHCPU_8",
+"N1_HIGHCPU_16",
+"N1_HIGHCPU_32",
+"N1_HIGHCPU_64",
+"N1_HIGHCPU_96",
+"A2_HIGHGPU_1G",
+"A2_HIGHGPU_2G",
+"A2_HIGHGPU_4G",
+"A2_HIGHGPU_8G",
+"A2_MEGAGPU_16G",
+"A2_ULTRAGPU_1G",
+"A2_ULTRAGPU_2G",
+"A2_ULTRAGPU_4G",
+"A2_ULTRAGPU_8G",
+"A3_HIGHGPU_1G",
+"A3_HIGHGPU_2G",
+"A3_HIGHGPU_4G",
+"A3_HIGHGPU_8G",
+"A3_MEGAGPU_8G",
+"A3_ULTRAGPU_8G",
+"E2_STANDARD_2",
+"E2_STANDARD_4",
+"E2_STANDARD_8",
+"E2_STANDARD_16",
+"E2_STANDARD_32",
+"E2_HIGHMEM_2",
+"E2_HIGHMEM_4",
+"E2_HIGHMEM_8",
+"E2_HIGHMEM_16",
+"E2_HIGHCPU_2",
+"E2_HIGHCPU_4",
+"E2_HIGHCPU_8",
+"E2_HIGHCPU_16",
+"E2_HIGHCPU_32",
+"N2_STANDARD_2",
+"N2_STANDARD_4",
+"N2_STANDARD_8",
+"N2_STANDARD_16",
+"N2_STANDARD_32",
+"N2_STANDARD_48",
+"N2_STANDARD_64",
+"N2_STANDARD_80",
+"N2_STANDARD_96",
+"N2_STANDARD_128",
+"N2_HIGHMEM_2",
+"N2_HIGHMEM_4",
+"N2_HIGHMEM_8",
+"N2_HIGHMEM_16",
+"N2_HIGHMEM_32",
+"N2_HIGHMEM_48",
+"N2_HIGHMEM_64",
+"N2_HIGHMEM_80",
+"N2_HIGHMEM_96",
+"N2_HIGHMEM_128",
+"N2_HIGHCPU_2",
+"N2_HIGHCPU_4",
+"N2_HIGHCPU_8",
+"N2_HIGHCPU_16",
+"N2_HIGHCPU_32",
+"N2_HIGHCPU_48",
+"N2_HIGHCPU_64",
+"N2_HIGHCPU_80",
+"N2_HIGHCPU_96",
+"N2D_STANDARD_2",
+"N2D_STANDARD_4",
+"N2D_STANDARD_8",
+"N2D_STANDARD_16",
+"N2D_STANDARD_32",
+"N2D_STANDARD_48",
+"N2D_STANDARD_64",
+"N2D_STANDARD_80",
+"N2D_STANDARD_96",
+"N2D_STANDARD_128",
+"N2D_STANDARD_224",
+"N2D_HIGHMEM_2",
+"N2D_HIGHMEM_4",
+"N2D_HIGHMEM_8",
+"N2D_HIGHMEM_16",
+"N2D_HIGHMEM_32",
+"N2D_HIGHMEM_48",
+"N2D_HIGHMEM_64",
+"N2D_HIGHMEM_80",
+"N2D_HIGHMEM_96",
+"N2D_HIGHCPU_2",
+"N2D_HIGHCPU_4",
+"N2D_HIGHCPU_8",
+"N2D_HIGHCPU_16",
+"N2D_HIGHCPU_32",
+"N2D_HIGHCPU_48",
+"N2D_HIGHCPU_64",
+"N2D_HIGHCPU_80",
+"N2D_HIGHCPU_96",
+"N2D_HIGHCPU_128",
+"N2D_HIGHCPU_224",
+"C2_STANDARD_4",
+"C2_STANDARD_8",
+"C2_STANDARD_16",
+"C2_STANDARD_30",
+"C2_STANDARD_60",
+"C2D_STANDARD_2",
+"C2D_STANDARD_4",
+"C2D_STANDARD_8",
+"C2D_STANDARD_16",
+"C2D_STANDARD_32",
+"C2D_STANDARD_56",
+"C2D_STANDARD_112",
+"C2D_HIGHCPU_2",
+"C2D_HIGHCPU_4",
+"C2D_HIGHCPU_8",
+"C2D_HIGHCPU_16",
+"C2D_HIGHCPU_32",
+"C2D_HIGHCPU_56",
+"C2D_HIGHCPU_112",
+"C2D_HIGHMEM_2",
+"C2D_HIGHMEM_4",
+"C2D_HIGHMEM_8",
+"C2D_HIGHMEM_16",
+"C2D_HIGHMEM_32",
+"C2D_HIGHMEM_56",
+"C2D_HIGHMEM_112",
+"G2_STANDARD_4",
+"G2_STANDARD_8",
+"G2_STANDARD_12",
+"G2_STANDARD_16",
+"G2_STANDARD_24",
+"G2_STANDARD_32",
+"G2_STANDARD_48",
+"G2_STANDARD_96",
+"C3_STANDARD_4",
+"C3_STANDARD_8",
+"C3_STANDARD_22",
+"C3_STANDARD_44",
+"C3_STANDARD_88",
+"C3_STANDARD_176",
+"C3_HIGHCPU_4",
+"C3_HIGHCPU_8",
+"C3_HIGHCPU_22",
+"C3_HIGHCPU_44",
+"C3_HIGHCPU_88",
+"C3_HIGHCPU_176",
+"C3_HIGHMEM_4",
+"C3_HIGHMEM_8",
+"C3_HIGHMEM_22",
+"C3_HIGHMEM_44",
+"C3_HIGHMEM_88",
+"C3_HIGHMEM_176"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"memories": {
+"description": "Required. VM memory in gb.",
+"format": "double",
+"type": "number"
+},
+"ramType": {
+"description": "Required. Type of ram.",
+"enum": [
+"UNKNOWN_RAM_TYPE",
+"A2",
+"A3",
+"C2",
+"C2D",
+"CUSTOM",
+"E2",
+"G2",
+"C3",
+"M2",
+"M1",
+"N1",
+"N2_CUSTOM",
+"N2",
+"N2D"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"COMPUTE_OPTIMIZED",
+"",
+"",
+"",
+"",
+"",
+"MEMORY_OPTIMIZED_UPGRADE_PREMIUM",
+"MEMORY_OPTIMIZED",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"trackingLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Billing tracking labels. They do not contain any user data but only the labels set by Vertex Core Infra itself. Tracking labels' keys are defined with special format: goog-[\\p{Ll}\\p{N}]+ E.g. \"key\": \"goog-k8s-cluster-name\",\"value\": \"us-east1-b4rk\"",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Sentence": {
+"description": "Represents a sentence in the input document.",
+"id": "Sentence",
+"properties": {
+"sentiment": {
+"$ref": "Sentiment",
+"description": "For calls to AnalyzeSentiment or if AnnotateTextRequest.Features.extract_document_sentiment is set to true, this field will contain the sentiment for the sentence."
+},
+"text": {
+"$ref": "TextSpan",
+"description": "The sentence text."
+}
+},
+"type": "object"
+},
+"Sentiment": {
+"description": "Represents the feeling associated with the entire text or entities in the text.",
+"id": "Sentiment",
+"properties": {
+"magnitude": {
+"description": "A non-negative number in the [0, +inf] range, which represents the absolute magnitude of sentiment regardless of score (positive or negative).",
+"format": "float",
+"type": "number"
+},
+"score": {
+"description": "Sentiment score between -1.0 (negative sentiment) and 1.0 (positive sentiment).",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TextSpan": {
+"description": "Represents a text span in the input document.",
+"id": "TextSpan",
+"properties": {
+"beginOffset": {
+"description": "The API calculates the beginning offset of the content in the original document according to the EncodingType specified in the API request.",
+"format": "int32",
+"type": "integer"
+},
+"content": {
+"description": "The content of the text span, which is a substring of the document.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TpuMetric": {
+"id": "TpuMetric",
+"properties": {
+"tpuSec": {
+"description": "Required. Seconds of TPU usage, e.g. 3600.",
+"format": "int64",
+"type": "string"
+},
+"tpuType": {
+"description": "Required. Type of TPU, e.g. TPU_V2, TPU_V3_POD.",
+"enum": [
+"UNKNOWN_TPU_TYPE",
+"TPU_V2_POD",
+"TPU_V2",
+"TPU_V3_POD",
+"TPU_V3",
+"TPU_V5_LITEPOD"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSArrayStats": {
+"description": "The data statistics of a series of ARRAY values.",
+"id": "XPSArrayStats",
+"properties": {
+"commonStats": {
+"$ref": "XPSCommonStats"
+},
+"memberStats": {
+"$ref": "XPSDataStats",
+"description": "Stats of all the values of all arrays, as if they were a single long series of data. The type depends on the element type of the array."
+}
+},
+"type": "object"
+},
+"XPSBatchPredictResponse": {
+"id": "XPSBatchPredictResponse",
+"properties": {
+"exampleSet": {
+"$ref": "XPSExampleSet",
+"description": "Examples for batch prediction result. Under full API implementation, results are stored in shared RecordIO of AnnotatedExample protobufs, the annotations field of which is populated by XPS backend."
+}
+},
+"type": "object"
+},
+"XPSBoundingBoxMetricsEntry": {
+"description": "Bounding box matching model metrics for a single intersection-over-union threshold and multiple label match confidence thresholds.",
+"id": "XPSBoundingBoxMetricsEntry",
+"properties": {
+"confidenceMetricsEntries": {
+"description": "Metrics for each label-match confidence_threshold from 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99.",
+"items": {
+"$ref": "XPSBoundingBoxMetricsEntryConfidenceMetricsEntry"
+},
+"type": "array"
+},
+"iouThreshold": {
+"description": "The intersection-over-union threshold value used to compute this metrics entry.",
+"format": "float",
+"type": "number"
+},
+"meanAveragePrecision": {
+"description": "The mean average precision.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSBoundingBoxMetricsEntryConfidenceMetricsEntry": {
+"description": "Metrics for a single confidence threshold.",
+"id": "XPSBoundingBoxMetricsEntryConfidenceMetricsEntry",
+"properties": {
+"confidenceThreshold": {
+"description": "The confidence threshold value used to compute the metrics.",
+"format": "float",
+"type": "number"
+},
+"f1Score": {
+"description": "The harmonic mean of recall and precision.",
+"format": "float",
+"type": "number"
+},
+"precision": {
+"description": "Precision for the given confidence threshold.",
+"format": "float",
+"type": "number"
+},
+"recall": {
+"description": "Recall for the given confidence threshold.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSCategoryStats": {
+"description": "The data statistics of a series of CATEGORY values.",
+"id": "XPSCategoryStats",
+"properties": {
+"commonStats": {
+"$ref": "XPSCommonStats"
+},
+"topCategoryStats": {
+"description": "The statistics of the top 20 CATEGORY values, ordered by CategoryStats.SingleCategoryStats.count.",
+"items": {
+"$ref": "XPSCategoryStatsSingleCategoryStats"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSCategoryStatsSingleCategoryStats": {
+"description": "The statistics of a single CATEGORY value.",
+"id": "XPSCategoryStatsSingleCategoryStats",
+"properties": {
+"count": {
+"description": "The number of occurrences of this value in the series.",
+"format": "int64",
+"type": "string"
+},
+"value": {
+"description": "The CATEGORY value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSClassificationEvaluationMetrics": {
+"description": "Model evaluation metrics for classification problems. It can be used for image and video classification. Next tag: 9.",
+"id": "XPSClassificationEvaluationMetrics",
+"properties": {
+"auPrc": {
+"description": "The Area under precision recall curve metric.",
+"format": "float",
+"type": "number"
+},
+"auRoc": {
+"description": "The Area Under Receiver Operating Characteristic curve metric. Micro-averaged for the overall evaluation.",
+"format": "float",
+"type": "number"
+},
+"baseAuPrc": {
+"description": "The Area under precision recall curve metric based on priors.",
+"format": "float",
+"type": "number"
+},
+"confidenceMetricsEntries": {
+"description": "Metrics that have confidence thresholds. Precision-recall curve can be derived from it.",
+"items": {
+"$ref": "XPSConfidenceMetricsEntry"
+},
+"type": "array"
+},
+"confusionMatrix": {
+"$ref": "XPSConfusionMatrix",
+"description": "Confusion matrix of the evaluation. Only set for MULTICLASS classification problems where number of annotation specs is no more than 10. Only set for model level evaluation, not for evaluation per label."
+},
+"evaluatedExamplesCount": {
+"description": "The number of examples used for model evaluation.",
+"format": "int32",
+"type": "integer"
+},
+"logLoss": {
+"description": "The Log Loss metric.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSColorMap": {
+"description": "Map from color to display name. Will only be used by Image Segmentation for uCAIP.",
+"id": "XPSColorMap",
+"properties": {
+"annotationSpecIdToken": {
+"description": "Should be used during training.",
+"type": "string"
+},
+"color": {
+"$ref": "Color",
+"deprecated": true,
+"description": "This type is deprecated in favor of the IntColor below. This is because google.type.Color represent color has a float which semantically does not reflect discrete classes/categories concept. Moreover, to handle it well we need to have some tolerance when converting to a discretized color. As such, the recommendation is to have API surface still use google.type.Color while internally IntColor is used."
+},
+"displayName": {
+"description": "Should be used during preprocessing.",
+"type": "string"
+},
+"intColor": {
+"$ref": "XPSColorMapIntColor"
+}
+},
+"type": "object"
+},
+"XPSColorMapIntColor": {
+"description": "RGB color and each channel is represented by an integer.",
+"id": "XPSColorMapIntColor",
+"properties": {
+"blue": {
+"description": "The value should be in range of [0, 255].",
+"format": "int32",
+"type": "integer"
+},
+"green": {
+"description": "The value should be in range of [0, 255].",
+"format": "int32",
+"type": "integer"
+},
+"red": {
+"description": "The value should be in range of [0, 255].",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"XPSColumnSpec": {
+"id": "XPSColumnSpec",
+"properties": {
+"columnId": {
+"description": "The unique id of the column. When Preprocess, the Tables BE will popuate the order id of the column, which reflects the order of the column inside the table, i.e. 0 means the first column in the table, N-1 means the last column. AutoML BE will persist this order id in Spanner and set the order id here when calling RefreshTablesStats and Train. Note: it's different than the column_spec_id that is generated in AutoML BE.",
+"format": "int32",
+"type": "integer"
+},
+"dataStats": {
+"$ref": "XPSDataStats",
+"description": "The data stats of the column. It's outputed in RefreshTablesStats and a required input for Train."
+},
+"dataType": {
+"$ref": "XPSDataType",
+"description": "The data type of the column. It's outputed in Preprocess rpc and a required input for RefreshTablesStats and Train."
+},
+"displayName": {
+"description": "The display name of the column. It's outputed in Preprocess and a required input for RefreshTablesStats and Train.",
+"type": "string"
+},
+"forecastingMetadata": {
+"$ref": "XPSColumnSpecForecastingMetadata"
+},
+"topCorrelatedColumns": {
+"description": "It's outputed in RefreshTablesStats, and a required input in Train.",
+"items": {
+"$ref": "XPSColumnSpecCorrelatedColumn"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSColumnSpecCorrelatedColumn": {
+"description": "Identifies a table's column, and its correlation with the column this ColumnSpec describes.",
+"id": "XPSColumnSpecCorrelatedColumn",
+"properties": {
+"columnId": {
+"format": "int32",
+"type": "integer"
+},
+"correlationStats": {
+"$ref": "XPSCorrelationStats"
+}
+},
+"type": "object"
+},
+"XPSColumnSpecForecastingMetadata": {
+"id": "XPSColumnSpecForecastingMetadata",
+"properties": {
+"columnType": {
+"description": "The type of the column for FORECASTING model training purposes.",
+"enum": [
+"COLUMN_TYPE_UNSPECIFIED",
+"KEY",
+"KEY_METADATA",
+"TIME_SERIES_AVAILABLE_PAST_ONLY",
+"TIME_SERIES_AVAILABLE_PAST_AND_FUTURE"
+],
+"enumDescriptions": [
+"An un-set value of this enum.",
+"Key columns are used to identify timeseries.",
+"This column contains information describing static properties of the entities identified by the key column(s) (e.g. city's ZIP code).",
+"This column contains information for the given entity, at any time poinrt, they are only available in the time series before.",
+"This column contains information for the given entity is known both for the past and the sufficiently far future."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSCommonStats": {
+"description": "Common statistics for a column with a specified data type.",
+"id": "XPSCommonStats",
+"properties": {
+"distinctValueCount": {
+"format": "int64",
+"type": "string"
+},
+"nullValueCount": {
+"format": "int64",
+"type": "string"
+},
+"validValueCount": {
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSConfidenceMetricsEntry": {
+"description": "ConfidenceMetricsEntry includes generic precision, recall, f1 score etc. Next tag: 16.",
+"id": "XPSConfidenceMetricsEntry",
+"properties": {
+"confidenceThreshold": {
+"description": "Metrics are computed with an assumption that the model never return predictions with score lower than this value.",
+"format": "float",
+"type": "number"
+},
+"f1Score": {
+"description": "The harmonic mean of recall and precision.",
+"format": "float",
+"type": "number"
+},
+"f1ScoreAt1": {
+"description": "The harmonic mean of recall_at1 and precision_at1.",
+"format": "float",
+"type": "number"
+},
+"falseNegativeCount": {
+"description": "The number of ground truth labels that are not matched by a model created label.",
+"format": "int64",
+"type": "string"
+},
+"falsePositiveCount": {
+"description": "The number of model created labels that do not match a ground truth label.",
+"format": "int64",
+"type": "string"
+},
+"falsePositiveRate": {
+"description": "False Positive Rate for the given confidence threshold.",
+"format": "float",
+"type": "number"
+},
+"falsePositiveRateAt1": {
+"description": "The False Positive Rate when only considering the label that has the highest prediction score and not below the confidence threshold for each example.",
+"format": "float",
+"type": "number"
+},
+"positionThreshold": {
+"description": "Metrics are computed with an assumption that the model always returns at most this many predictions (ordered by their score, descendingly), but they all still need to meet the confidence_threshold.",
+"format": "int32",
+"type": "integer"
+},
+"precision": {
+"description": "Precision for the given confidence threshold.",
+"format": "float",
+"type": "number"
+},
+"precisionAt1": {
+"description": "The precision when only considering the label that has the highest prediction score and not below the confidence threshold for each example.",
+"format": "float",
+"type": "number"
+},
+"recall": {
+"description": "Recall (true positive rate) for the given confidence threshold.",
+"format": "float",
+"type": "number"
+},
+"recallAt1": {
+"description": "The recall (true positive rate) when only considering the label that has the highest prediction score and not below the confidence threshold for each example.",
+"format": "float",
+"type": "number"
+},
+"trueNegativeCount": {
+"description": "The number of labels that were not created by the model, but if they would, they would not match a ground truth label.",
+"format": "int64",
+"type": "string"
+},
+"truePositiveCount": {
+"description": "The number of model created labels that match a ground truth label.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSConfusionMatrix": {
+"description": "Confusion matrix of the model running the classification.",
+"id": "XPSConfusionMatrix",
+"properties": {
+"annotationSpecIdToken": {
+"description": "For the following three repeated fields, only one is intended to be set. annotation_spec_id_token is preferable to be set. ID tokens of the annotation specs used in the confusion matrix.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"category": {
+"description": "Category (mainly for segmentation). Set only for image segmentation models. Note: uCAIP Image Segmentation should use annotation_spec_id_token.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"row": {
+"description": "Rows in the confusion matrix. The number of rows is equal to the size of `annotation_spec_id_token`. `row[i].value[j]` is the number of examples that have ground truth of the `annotation_spec_id_token[i]` and are predicted as `annotation_spec_id_token[j]` by the model being evaluated.",
+"items": {
+"$ref": "XPSConfusionMatrixRow"
+},
+"type": "array"
+},
+"sentimentLabel": {
+"description": "Sentiment labels used in the confusion matrix. Set only for text sentiment models. For AutoML Text Revamp, use `annotation_spec_id_token` instead and leave this field empty.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSConfusionMatrixRow": {
+"description": "A row in the confusion matrix.",
+"id": "XPSConfusionMatrixRow",
+"properties": {
+"count": {
+"description": "Same as above except intended to represent other counts (for e.g. for segmentation this is pixel count). NOTE(params): Only example_count or count is set (oneoff does not support repeated fields unless they are embedded inside another message).",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"exampleCount": {
+"description": "Value of the specific cell in the confusion matrix. The number of values each row has (i.e. the length of the row) is equal to the length of the annotation_spec_id_token field.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSCoreMlFormat": {
+"description": "A model format used for iOS mobile devices.",
+"id": "XPSCoreMlFormat",
+"properties": {},
+"type": "object"
+},
+"XPSCorrelationStats": {
+"description": "A correlation statistics between two series of DataType values. The series may have differing DataType-s, but within a single series the DataType must be the same.",
+"id": "XPSCorrelationStats",
+"properties": {
+"cramersV": {
+"description": "The correlation value using the Cramer's V measure.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSDataErrors": {
+"description": "Different types of errors and the stats associatesd with each error.",
+"id": "XPSDataErrors",
+"properties": {
+"count": {
+"description": "Number of records having errors associated with the enum.",
+"format": "int32",
+"type": "integer"
+},
+"errorType": {
+"description": "Type of the error.",
+"enum": [
+"ERROR_TYPE_UNSPECIFIED",
+"UNSUPPORTED_AUDIO_FORMAT",
+"FILE_EXTENSION_MISMATCH_WITH_AUDIO_FORMAT",
+"FILE_TOO_LARGE",
+"MISSING_TRANSCRIPTION"
+],
+"enumDescriptions": [
+"Not specified.",
+"Audio format not in the formats by cloud-speech AutoML. Currently only wav and flac file formats are supported.",
+"File format differnt from what is specified in the file name extension.",
+"File too large. Maximum allowed size is 50 MB.",
+"Transcript is missing."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSDataStats": {
+"description": "The data statistics of a series of values that share the same DataType.",
+"id": "XPSDataStats",
+"properties": {
+"arrayStats": {
+"$ref": "XPSArrayStats",
+"description": "The statistics for ARRAY DataType."
+},
+"categoryStats": {
+"$ref": "XPSCategoryStats",
+"description": "The statistics for CATEGORY DataType."
+},
+"distinctValueCount": {
+"description": "The number of distinct values.",
+"format": "int64",
+"type": "string"
+},
+"float64Stats": {
+"$ref": "XPSFloat64Stats",
+"description": "The statistics for FLOAT64 DataType."
+},
+"nullValueCount": {
+"description": "The number of values that are null.",
+"format": "int64",
+"type": "string"
+},
+"stringStats": {
+"$ref": "XPSStringStats",
+"description": "The statistics for STRING DataType."
+},
+"structStats": {
+"$ref": "XPSStructStats",
+"description": "The statistics for STRUCT DataType."
+},
+"timestampStats": {
+"$ref": "XPSTimestampStats",
+"description": "The statistics for TIMESTAMP DataType."
+},
+"validValueCount": {
+"description": "The number of values that are valid.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSDataType": {
+"description": "Indicated the type of data that can be stored in a structured data entity (e.g. a table).",
+"id": "XPSDataType",
+"properties": {
+"compatibleDataTypes": {
+"description": "The highly compatible data types to this data type.",
+"items": {
+"$ref": "XPSDataType"
+},
+"type": "array"
+},
+"listElementType": {
+"$ref": "XPSDataType",
+"description": "If type_code == ARRAY, then `list_element_type` is the type of the elements."
+},
+"nullable": {
+"description": "If true, this DataType can also be `null`.",
+"type": "boolean"
+},
+"structType": {
+"$ref": "XPSStructType",
+"description": "If type_code == STRUCT, then `struct_type` provides type information for the struct's fields."
+},
+"timeFormat": {
+"description": "If type_code == TIMESTAMP then `time_format` provides the format in which that time field is expressed. The time_format must be written in `strftime` syntax. If time_format is not set, then the default format as described on the field is used.",
+"type": "string"
+},
+"typeCode": {
+"description": "Required. The TypeCode for this type.",
+"enum": [
+"TYPE_CODE_UNSPECIFIED",
+"FLOAT64",
+"TIMESTAMP",
+"STRING",
+"ARRAY",
+"STRUCT",
+"CATEGORY"
+],
+"enumDescriptions": [
+"Not specified. Should not be used.",
+"Encoded as `number`, or the strings `\"NaN\"`, `\"Infinity\"`, or `\"-Infinity\"`.",
+"Must be between 0AD and 9999AD. Encoded as `string` according to time_format, or, if that format is not set, then in RFC 3339 `date-time` format, where `time-offset` = `\"Z\"` (e.g. 1985-04-12T23:20:50.52Z).",
+"Encoded as `string`.",
+"Encoded as `list`, where the list elements are represented according to list_element_type.",
+"Encoded as `struct`, where field values are represented according to struct_type.",
+"Values of this type are not further understood by AutoML, e.g. AutoML is unable to tell the order of values (as it could with FLOAT64), or is unable to say if one value contains another (as it could with STRING). Encoded as `string` (bytes should be base64-encoded, as described in RFC 4648, section 4)."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSDockerFormat": {
+"description": "A model format used for Docker containers. Use the params field to customize the container. The container is verified to work correctly on ubuntu 16.04 operating system.",
+"id": "XPSDockerFormat",
+"properties": {
+"cpuArchitecture": {
+"description": "Optional. Additional cpu information describing the requirements for the to be exported model files.",
+"enum": [
+"CPU_ARCHITECTURE_UNSPECIFIED",
+"CPU_ARCHITECTURE_X86_64"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"gpuArchitecture": {
+"description": "Optional. Additional gpu information describing the requirements for the to be exported model files.",
+"enum": [
+"GPU_ARCHITECTURE_UNSPECIFIED",
+"GPU_ARCHITECTURE_NVIDIA"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSEdgeTpuTfLiteFormat": {
+"description": "A model format used for [Edge TPU](https://cloud.google.com/edge-tpu/) devices.",
+"id": "XPSEdgeTpuTfLiteFormat",
+"properties": {},
+"type": "object"
+},
+"XPSEvaluationMetrics": {
+"description": "Contains xPS-specific model evaluation metrics either for a single annotation spec (label), or for the model overall. Next tag: 18.",
+"id": "XPSEvaluationMetrics",
+"properties": {
+"annotationSpecIdToken": {
+"description": "The annotation_spec for which this evaluation metrics instance had been created. Empty iff this is an overall model evaluation (like Tables evaluation metrics), i.e. aggregated across all labels. The value comes from the input annotations in AnnotatedExample. For MVP product or for text sentiment models where annotation_spec_id_token is not available, set label instead.",
+"type": "string"
+},
+"category": {
+"description": "The integer category label for which this evaluation metric instance had been created. Valid categories are 0 or higher. Overall model evaluation should set this to negative values (rather than implicit zero). Only used for Image Segmentation (prefer to set annotation_spec_id_token instead). Note: uCAIP Image Segmentation should use annotation_spec_id_token.",
+"format": "int32",
+"type": "integer"
+},
+"evaluatedExampleCount": {
+"description": "The number of examples used to create this evaluation metrics instance.",
+"format": "int32",
+"type": "integer"
+},
+"imageClassificationEvalMetrics": {
+"$ref": "XPSClassificationEvaluationMetrics"
+},
+"imageObjectDetectionEvalMetrics": {
+"$ref": "XPSImageObjectDetectionEvaluationMetrics"
+},
+"imageSegmentationEvalMetrics": {
+"$ref": "XPSImageSegmentationEvaluationMetrics"
+},
+"label": {
+"description": "The label for which this evaluation metrics instance had been created. Empty iff this is an overall model evaluation (like Tables evaluation metrics), i.e. aggregated across all labels. The label maps to AnnotationSpec.display_name in Public API protos. Only used by MVP implementation and text sentiment FULL implementation.",
+"type": "string"
+},
+"regressionEvalMetrics": {
+"$ref": "XPSRegressionEvaluationMetrics"
+},
+"tablesClassificationEvalMetrics": {
+"$ref": "XPSClassificationEvaluationMetrics"
+},
+"tablesEvalMetrics": {
+"$ref": "XPSTablesEvaluationMetrics"
+},
+"textClassificationEvalMetrics": {
+"$ref": "XPSClassificationEvaluationMetrics"
+},
+"textExtractionEvalMetrics": {
+"$ref": "XPSTextExtractionEvaluationMetrics"
+},
+"textSentimentEvalMetrics": {
+"$ref": "XPSTextSentimentEvaluationMetrics"
+},
+"translationEvalMetrics": {
+"$ref": "XPSTranslationEvaluationMetrics"
+},
+"videoActionRecognitionEvalMetrics": {
+"$ref": "XPSVideoActionRecognitionEvaluationMetrics"
+},
+"videoClassificationEvalMetrics": {
+"$ref": "XPSClassificationEvaluationMetrics"
+},
+"videoObjectTrackingEvalMetrics": {
+"$ref": "XPSVideoObjectTrackingEvaluationMetrics"
+}
+},
+"type": "object"
+},
+"XPSEvaluationMetricsSet": {
+"description": "Specifies location of model evaluation metrics.",
+"id": "XPSEvaluationMetricsSet",
+"properties": {
+"evaluationMetrics": {
+"description": "Inline EvaluationMetrics - should be relatively small. For passing large quantities of exhaustive metrics, use file_spec.",
+"items": {
+"$ref": "XPSEvaluationMetrics"
+},
+"type": "array"
+},
+"fileSpec": {
+"$ref": "XPSFileSpec",
+"description": "File spec containing evaluation metrics of a model, must point to RecordIO file(s) of intelligence.cloud.automl.xps.EvaluationMetrics messages."
+},
+"numEvaluationMetrics": {
+"description": "Number of the evaluation metrics (usually one per label plus overall).",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSExampleSet": {
+"description": "Set of examples or input sources.",
+"id": "XPSExampleSet",
+"properties": {
+"fileSpec": {
+"$ref": "XPSFileSpec",
+"description": "File spec of the examples or input sources."
+},
+"fingerprint": {
+"description": "Fingerprint of the example set.",
+"format": "int64",
+"type": "string"
+},
+"numExamples": {
+"description": "Number of examples.",
+"format": "int64",
+"type": "string"
+},
+"numInputSources": {
+"description": "Number of input sources.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSExportModelOutputConfig": {
+"id": "XPSExportModelOutputConfig",
+"properties": {
+"coreMlFormat": {
+"$ref": "XPSCoreMlFormat"
+},
+"dockerFormat": {
+"$ref": "XPSDockerFormat"
+},
+"edgeTpuTfLiteFormat": {
+"$ref": "XPSEdgeTpuTfLiteFormat"
+},
+"exportFirebaseAuxiliaryInfo": {
+"description": "For any model and format: If true, will additionally export FirebaseExportedModelInfo in a firebase.txt file.",
+"type": "boolean"
+},
+"outputGcrUri": {
+"description": "The Google Contained Registry path the exported files to be pushed to. This location is set if the exported format is DOCKDER.",
+"type": "string"
+},
+"outputGcsUri": {
+"description": "The Google Cloud Storage directory where XPS will output the exported models and related files. Format: gs://bucket/directory",
+"type": "string"
+},
+"tfJsFormat": {
+"$ref": "XPSTfJsFormat"
+},
+"tfLiteFormat": {
+"$ref": "XPSTfLiteFormat"
+},
+"tfSavedModelFormat": {
+"$ref": "XPSTfSavedModelFormat"
+}
+},
+"type": "object"
+},
+"XPSFileSpec": {
+"description": "Spec of input and output files, on external file systems (for example, Colossus Namespace System or Google Cloud Storage).",
+"id": "XPSFileSpec",
+"properties": {
+"directoryPath": {
+"deprecated": true,
+"description": "Deprecated. Use file_spec.",
+"type": "string"
+},
+"fileFormat": {
+"enum": [
+"FILE_FORMAT_UNKNOWN",
+"FILE_FORMAT_SSTABLE",
+"FILE_FORMAT_TRANSLATION_RKV",
+"FILE_FORMAT_RECORDIO",
+"FILE_FORMAT_RAW_CSV",
+"FILE_FORMAT_RAW_CAPACITOR"
+],
+"enumDeprecated": [
+false,
+true,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"",
+"",
+"Internal format for parallel text data used by Google Translate.",
+"",
+"Only the lexicographically first file described by the file_spec contains the header line.",
+""
+],
+"type": "string"
+},
+"fileSpec": {
+"description": "Single file path, or file pattern of format \"/path/to/file@shard_count\". E.g. /cns/cell-d/somewhere/file@2 is expanded to two files: /cns/cell-d/somewhere/file-00000-of-00002 and /cns/cell-d/somewhere/file-00001-of-00002.",
+"type": "string"
+},
+"singleFilePath": {
+"deprecated": true,
+"description": "Deprecated. Use file_spec.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSFloat64Stats": {
+"description": "The data statistics of a series of FLOAT64 values.",
+"id": "XPSFloat64Stats",
+"properties": {
+"commonStats": {
+"$ref": "XPSCommonStats"
+},
+"histogramBuckets": {
+"description": "Histogram buckets of the data series. Sorted by the min value of the bucket, ascendingly, and the number of the buckets is dynamically generated. The buckets are non-overlapping and completely cover whole FLOAT64 range with min of first bucket being `\"-Infinity\"`, and max of the last one being `\"Infinity\"`.",
+"items": {
+"$ref": "XPSFloat64StatsHistogramBucket"
+},
+"type": "array"
+},
+"mean": {
+"description": "The mean of the series.",
+"format": "double",
+"type": "number"
+},
+"quantiles": {
+"description": "Ordered from 0 to k k-quantile values of the data series of n values. The value at index i is, approximately, the i*n/k-th smallest value in the series; for i = 0 and i = k these are, respectively, the min and max values.",
+"items": {
+"format": "double",
+"type": "number"
+},
+"type": "array"
+},
+"standardDeviation": {
+"description": "The standard deviation of the series.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSFloat64StatsHistogramBucket": {
+"description": "A bucket of a histogram.",
+"id": "XPSFloat64StatsHistogramBucket",
+"properties": {
+"count": {
+"description": "The number of data values that are in the bucket, i.e. are between min and max values.",
+"format": "int64",
+"type": "string"
+},
+"max": {
+"description": "The maximum value of the bucket, exclusive unless max = `\"Infinity\"`, in which case it's inclusive.",
+"format": "double",
+"type": "number"
+},
+"min": {
+"description": "The minimum value of the bucket, inclusive.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSImageClassificationTrainResponse": {
+"id": "XPSImageClassificationTrainResponse",
+"properties": {
+"classCount": {
+"description": "Total number of classes.",
+"format": "int64",
+"type": "string"
+},
+"exportModelSpec": {
+"$ref": "XPSImageExportModelSpec",
+"description": "Information of downloadable models that are pre-generated as part of training flow and will be persisted in AutoMl backend. Populated for AutoMl requests."
+},
+"modelArtifactSpec": {
+"$ref": "XPSImageModelArtifactSpec",
+"description": "## The fields below are only populated under uCAIP request scope."
+},
+"modelServingSpec": {
+"$ref": "XPSImageModelServingSpec"
+},
+"stopReason": {
+"description": "Stop reason for training job, e.g. 'TRAIN_BUDGET_REACHED', 'MODEL_CONVERGED', 'MODEL_EARLY_STOPPED'.",
+"enum": [
+"TRAIN_STOP_REASON_UNSPECIFIED",
+"TRAIN_STOP_REASON_BUDGET_REACHED",
+"TRAIN_STOP_REASON_MODEL_CONVERGED",
+"TRAIN_STOP_REASON_MODEL_EARLY_STOPPED"
+],
+"enumDescriptions": [
+"",
+"",
+"Model fully converged, can not be resumbed training.",
+"Model early converged, can be further trained till full convergency."
+],
+"type": "string"
+},
+"trainCostInNodeTime": {
+"description": "The actual cost to create this model. - For edge type model, the cost is expressed in node hour. - For cloud type model,the cost is expressed in compute hour. - Populated for models created before GA. To be deprecated after GA.",
+"format": "google-duration",
+"type": "string"
+},
+"trainCostNodeSeconds": {
+"description": "The actual training cost, expressed in node seconds. Populated for models trained in node time.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSImageExportModelSpec": {
+"description": "Information of downloadable models that are pre-generated as part of training flow and will be persisted in AutoMl backend. Upon receiving ExportModel request from user, AutoMl backend can serve the pre-generated models to user if exists (by copying the files from internal path to user provided location), otherwise, AutoMl backend will call xPS ExportModel API to generate the model on the fly with the requesting format.",
+"id": "XPSImageExportModelSpec",
+"properties": {
+"exportModelOutputConfig": {
+"description": "Contains the model format and internal location of the model files to be exported/downloaded. Use the Google Cloud Storage bucket name which is provided via TrainRequest.gcs_bucket_name to store the model files.",
+"items": {
+"$ref": "XPSExportModelOutputConfig"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSImageModelArtifactSpec": {
+"description": "Stores the locations and related metadata of the model artifacts. Populated for uCAIP requests only.",
+"id": "XPSImageModelArtifactSpec",
+"properties": {
+"checkpointArtifact": {
+"$ref": "XPSModelArtifactItem",
+"description": "The Tensorflow checkpoint files. e.g. Used for resumable training."
+},
+"exportArtifact": {
+"description": "The model binary files in different formats for model export.",
+"items": {
+"$ref": "XPSModelArtifactItem"
+},
+"type": "array"
+},
+"labelGcsUri": {
+"description": "Google Cloud Storage URI of decoded labels file for model export 'dict.txt'.",
+"type": "string"
+},
+"servingArtifact": {
+"$ref": "XPSModelArtifactItem",
+"description": "The default model binary file used for serving (e.g. online predict, batch predict) via public Cloud AI Platform API."
+},
+"tfJsBinaryGcsPrefix": {
+"description": "Google Cloud Storage URI prefix of Tensorflow JavaScript binary files 'groupX-shardXofX.bin'. Deprecated.",
+"type": "string"
+},
+"tfLiteMetadataGcsUri": {
+"description": "Google Cloud Storage URI of Tensorflow Lite metadata 'tflite_metadata.json'.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSImageModelServingSpec": {
+"description": "Serving specification for image models.",
+"id": "XPSImageModelServingSpec",
+"properties": {
+"modelThroughputEstimation": {
+"description": "Populate under uCAIP request scope.",
+"items": {
+"$ref": "XPSImageModelServingSpecModelThroughputEstimation"
+},
+"type": "array"
+},
+"nodeQps": {
+"description": "An estimated value of how much traffic a node can serve. Populated for AutoMl request only.",
+"format": "double",
+"type": "number"
+},
+"tfRuntimeVersion": {
+"description": "## The fields below are only populated under uCAIP request scope. https://cloud.google.com/ml-engine/docs/runtime-version-list",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSImageModelServingSpecModelThroughputEstimation": {
+"id": "XPSImageModelServingSpecModelThroughputEstimation",
+"properties": {
+"computeEngineAcceleratorType": {
+"enum": [
+"UNSPECIFIED",
+"NVIDIA_TESLA_K80",
+"NVIDIA_TESLA_P100",
+"NVIDIA_TESLA_V100",
+"NVIDIA_TESLA_P4",
+"NVIDIA_TESLA_T4",
+"NVIDIA_TESLA_A100",
+"NVIDIA_A100_80GB",
+"NVIDIA_L4",
+"NVIDIA_H100_80GB",
+"NVIDIA_H100_MEGA_80GB",
+"NVIDIA_H200_141GB",
+"TPU_V2",
+"TPU_V3",
+"TPU_V4_POD",
+"TPU_V5_LITEPOD"
+],
+"enumDescriptions": [
+"",
+"Nvidia Tesla K80 GPU.",
+"Nvidia Tesla P100 GPU.",
+"Nvidia Tesla V100 GPU.",
+"Nvidia Tesla P4 GPU.",
+"Nvidia Tesla T4 GPU.",
+"Nvidia Tesla A100 GPU.",
+"Nvidia A100 80GB GPU.",
+"Nvidia L4 GPU.",
+"Nvidia H100 80Gb GPU.",
+"Nvidia H100 80Gb GPU.",
+"Nvidia H200 141Gb GPU.",
+"TPU v2 (JellyFish).",
+"TPU v3 (DragonFish).",
+"TPU_v4 (PufferFish).",
+"TPU v5 Lite Pods."
+],
+"type": "string"
+},
+"latencyInMilliseconds": {
+"description": "Estimated latency.",
+"format": "double",
+"type": "number"
+},
+"nodeQps": {
+"description": "The approximate qps a deployed node can serve.",
+"format": "double",
+"type": "number"
+},
+"servomaticPartitionType": {
+"enum": [
+"PARTITION_TYPE_UNSPECIFIED",
+"PARTITION_ZERO",
+"PARTITION_REDUCED_HOMING",
+"PARTITION_JELLYFISH",
+"PARTITION_CPU",
+"PARTITION_CUSTOM_STORAGE_CPU"
+],
+"enumDescriptions": [
+"",
+"The default partition.",
+"It has significantly lower replication than partition-0 and is located in the US only. It also has a larger model size limit and higher default RAM quota than partition-0. Customers with batch traffic, US-based traffic, or very large models should use this partition. Capacity in this partition is significantly cheaper than partition-0.",
+"To be used by customers with Jellyfish-accelerated ops.",
+"The partition used by regionalized servomatic cloud regions.",
+"The partition used for loading models from custom storage."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSImageObjectDetectionEvaluationMetrics": {
+"description": "Model evaluation metrics for image object detection problems. Evaluates prediction quality of labeled bounding boxes.",
+"id": "XPSImageObjectDetectionEvaluationMetrics",
+"properties": {
+"boundingBoxMeanAveragePrecision": {
+"description": "The single metric for bounding boxes evaluation: the mean_average_precision averaged over all bounding_box_metrics_entries.",
+"format": "float",
+"type": "number"
+},
+"boundingBoxMetricsEntries": {
+"description": "The bounding boxes match metrics for each Intersection-over-union threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99 and each label confidence threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99 pair.",
+"items": {
+"$ref": "XPSBoundingBoxMetricsEntry"
+},
+"type": "array"
+},
+"evaluatedBoundingBoxCount": {
+"description": "The total number of bounding boxes (i.e. summed over all images) the ground truth used to create this evaluation had.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"XPSImageObjectDetectionModelSpec": {
+"id": "XPSImageObjectDetectionModelSpec",
+"properties": {
+"classCount": {
+"description": "Total number of classes.",
+"format": "int64",
+"type": "string"
+},
+"exportModelSpec": {
+"$ref": "XPSImageExportModelSpec"
+},
+"maxBoundingBoxCount": {
+"description": "Max number of bounding box.",
+"format": "int64",
+"type": "string"
+},
+"modelArtifactSpec": {
+"$ref": "XPSImageModelArtifactSpec",
+"description": "## The fields below are only populated under uCAIP request scope."
+},
+"modelServingSpec": {
+"$ref": "XPSImageModelServingSpec"
+},
+"stopReason": {
+"description": "Stop reason for training job, e.g. 'TRAIN_BUDGET_REACHED', 'MODEL_CONVERGED'.",
+"enum": [
+"TRAIN_STOP_REASON_UNSPECIFIED",
+"TRAIN_STOP_REASON_BUDGET_REACHED",
+"TRAIN_STOP_REASON_MODEL_CONVERGED",
+"TRAIN_STOP_REASON_MODEL_EARLY_STOPPED"
+],
+"enumDescriptions": [
+"",
+"",
+"Model fully converged, can not be resumbed training.",
+"Model early converged, can be further trained till full convergency."
+],
+"type": "string"
+},
+"trainCostNodeSeconds": {
+"description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSImageSegmentationEvaluationMetrics": {
+"description": "Model evaluation metrics for image segmentation problems. Next tag: 4.",
+"id": "XPSImageSegmentationEvaluationMetrics",
+"properties": {
+"confidenceMetricsEntries": {
+"description": "Metrics that have confidence thresholds. Precision-recall curve can be derived from it.",
+"items": {
+"$ref": "XPSImageSegmentationEvaluationMetricsConfidenceMetricsEntry"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSImageSegmentationEvaluationMetricsConfidenceMetricsEntry": {
+"description": "Metrics for a single confidence threshold.",
+"id": "XPSImageSegmentationEvaluationMetricsConfidenceMetricsEntry",
+"properties": {
+"confidenceThreshold": {
+"description": "The confidence threshold value used to compute the metrics.",
+"format": "float",
+"type": "number"
+},
+"confusionMatrix": {
+"$ref": "XPSConfusionMatrix",
+"description": "Confusion matrix of the per confidence_threshold evaluation. Pixel counts are set here. Only set for model level evaluation, not for evaluation per label."
+},
+"diceScoreCoefficient": {
+"description": "DSC or the F1 score: The harmonic mean of recall and precision.",
+"format": "float",
+"type": "number"
+},
+"iouScore": {
+"description": "IOU score.",
+"format": "float",
+"type": "number"
+},
+"precision": {
+"description": "Precision for the given confidence threshold.",
+"format": "float",
+"type": "number"
+},
+"recall": {
+"description": "Recall for the given confidence threshold.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSImageSegmentationTrainResponse": {
+"id": "XPSImageSegmentationTrainResponse",
+"properties": {
+"colorMaps": {
+"description": "Color map of the model.",
+"items": {
+"$ref": "XPSColorMap"
+},
+"type": "array"
+},
+"exportModelSpec": {
+"$ref": "XPSImageExportModelSpec",
+"description": "NOTE: These fields are not used/needed in EAP but will be set later."
+},
+"modelArtifactSpec": {
+"$ref": "XPSImageModelArtifactSpec",
+"description": "## The fields below are only populated under uCAIP request scope. Model artifact spec stores and model gcs pathes and related metadata"
+},
+"modelServingSpec": {
+"$ref": "XPSImageModelServingSpec"
+},
+"stopReason": {
+"description": "Stop reason for training job, e.g. 'TRAIN_BUDGET_REACHED', 'MODEL_CONVERGED'.",
+"enum": [
+"TRAIN_STOP_REASON_UNSPECIFIED",
+"TRAIN_STOP_REASON_BUDGET_REACHED",
+"TRAIN_STOP_REASON_MODEL_CONVERGED",
+"TRAIN_STOP_REASON_MODEL_EARLY_STOPPED"
+],
+"enumDescriptions": [
+"",
+"",
+"Model fully converged, can not be resumbed training.",
+"Model early converged, can be further trained till full convergency."
+],
+"type": "string"
+},
+"trainCostNodeSeconds": {
+"description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSIntegratedGradientsAttribution": {
+"deprecated": true,
+"description": "An attribution method that computes the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
+"id": "XPSIntegratedGradientsAttribution",
+"properties": {
+"stepCount": {
+"description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is within the desired error range. Valid range of its value is [1, 100], inclusively.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"XPSMetricEntry": {
+"id": "XPSMetricEntry",
+"properties": {
+"argentumMetricId": {
+"description": "For billing metrics that are using legacy sku's, set the legacy billing metric id here. This will be sent to Chemist as the \"cloudbilling.googleapis.com/argentum_metric_id\" label. Otherwise leave empty.",
+"type": "string"
+},
+"doubleValue": {
+"description": "A double value.",
+"format": "double",
+"type": "number"
+},
+"int64Value": {
+"description": "A signed 64-bit integer value.",
+"format": "int64",
+"type": "string"
+},
+"metricName": {
+"description": "The metric name defined in the service configuration.",
+"type": "string"
+},
+"systemLabels": {
+"description": "Billing system labels for this (metric, value) pair.",
+"items": {
+"$ref": "XPSMetricEntryLabel"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSMetricEntryLabel": {
+"id": "XPSMetricEntryLabel",
+"properties": {
+"labelName": {
+"description": "The name of the label.",
+"type": "string"
+},
+"labelValue": {
+"description": "The value of the label.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSModelArtifactItem": {
+"description": "A single model artifact item.",
+"id": "XPSModelArtifactItem",
+"properties": {
+"artifactFormat": {
+"description": "The model artifact format.",
+"enum": [
+"ARTIFACT_FORMAT_UNSPECIFIED",
+"TF_CHECKPOINT",
+"TF_SAVED_MODEL",
+"TF_LITE",
+"EDGE_TPU_TF_LITE",
+"TF_JS",
+"CORE_ML"
+],
+"enumDescriptions": [
+"Should not be used.",
+"The Tensorflow checkpoints. See https://www.tensorflow.org/guide/checkpoint.",
+"The Tensorflow SavedModel binary.",
+"Model artifact in generic TensorFlow Lite (.tflite) format. See https://www.tensorflow.org/lite.",
+"Used for [Edge TPU](https://cloud.google.com/edge-tpu/) devices.",
+"A [TensorFlow.js](https://www.tensorflow.org/js) model that can be used in the browser and in Node.js using JavaScript.",
+"Used for iOS mobile devices in (.mlmodel) format. See https://developer.apple.com/documentation/coreml"
+],
+"type": "string"
+},
+"gcsUri": {
+"description": "The Google Cloud Storage URI that stores the model binary files.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSPreprocessResponse": {
+"id": "XPSPreprocessResponse",
+"properties": {
+"outputExampleSet": {
+"$ref": "XPSExampleSet",
+"description": "Preprocessed examples, that are to be imported into AutoML storage. This should point to RecordIO file(s) of PreprocessedExample messages. The PreprocessedExample.mvp_training_data-s returned here are later verbatim passed to Train() call in TrainExample.mvp_training_data."
+},
+"speechPreprocessResp": {
+"$ref": "XPSSpeechPreprocessResponse"
+},
+"tablesPreprocessResponse": {
+"$ref": "XPSTablesPreprocessResponse"
+},
+"translationPreprocessResp": {
+"$ref": "XPSTranslationPreprocessResponse"
+}
+},
+"type": "object"
+},
+"XPSRegressionEvaluationMetrics": {
+"description": "Model evaluation metrics for regression problems. It can be used for Tables.",
+"id": "XPSRegressionEvaluationMetrics",
+"properties": {
+"meanAbsoluteError": {
+"description": "Mean Absolute Error (MAE).",
+"format": "float",
+"type": "number"
+},
+"meanAbsolutePercentageError": {
+"description": "Mean absolute percentage error. Only set if all ground truth values are positive.",
+"format": "float",
+"type": "number"
+},
+"rSquared": {
+"description": "R squared.",
+"format": "float",
+"type": "number"
+},
+"regressionMetricsEntries": {
+"description": "A list of actual versus predicted points for the model being evaluated.",
+"items": {
+"$ref": "XPSRegressionMetricsEntry"
+},
+"type": "array"
+},
+"rootMeanSquaredError": {
+"description": "Root Mean Squared Error (RMSE).",
+"format": "float",
+"type": "number"
+},
+"rootMeanSquaredLogError": {
+"description": "Root mean squared log error.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSRegressionMetricsEntry": {
+"description": "A pair of actual & observed values for the model being evaluated.",
+"id": "XPSRegressionMetricsEntry",
+"properties": {
+"predictedValue": {
+"description": "The observed value for a row in the dataset.",
+"format": "float",
+"type": "number"
+},
+"trueValue": {
+"description": "The actual target value for a row in the dataset.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSReportingMetrics": {
+"id": "XPSReportingMetrics",
+"properties": {
+"effectiveTrainingDuration": {
+"deprecated": true,
+"description": "The effective time training used. If set, this is used for quota management and billing. Deprecated. AutoML BE doesn't use this. Don't set.",
+"format": "google-duration",
+"type": "string"
+},
+"metricEntries": {
+"description": "One entry per metric name. The values must be aggregated per metric name.",
+"items": {
+"$ref": "XPSMetricEntry"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSResponseExplanationMetadata": {
+"deprecated": true,
+"id": "XPSResponseExplanationMetadata",
+"properties": {
+"inputs": {
+"additionalProperties": {
+"$ref": "XPSResponseExplanationMetadataInputMetadata"
+},
+"description": "Metadata of the input.",
+"type": "object"
+},
+"outputs": {
+"additionalProperties": {
+"$ref": "XPSResponseExplanationMetadataOutputMetadata"
+},
+"description": "Metadata of the output.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"XPSResponseExplanationMetadataInputMetadata": {
+"description": "Metadata of the input of a feature.",
+"id": "XPSResponseExplanationMetadataInputMetadata",
+"properties": {
+"inputTensorName": {
+"description": "Name of the input tensor for this model. Only needed in train response.",
+"type": "string"
+},
+"modality": {
+"description": "Modality of the feature. Valid values are: numeric, image. Defaults to numeric.",
+"enum": [
+"MODALITY_UNSPECIFIED",
+"NUMERIC",
+"IMAGE",
+"CATEGORICAL"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"visualizationConfig": {
+"$ref": "XPSVisualization",
+"description": "Visualization configurations for image explanation."
+}
+},
+"type": "object"
+},
+"XPSResponseExplanationMetadataOutputMetadata": {
+"description": "Metadata of the prediction output to be explained.",
+"id": "XPSResponseExplanationMetadataOutputMetadata",
+"properties": {
+"outputTensorName": {
+"description": "Name of the output tensor. Only needed in train response.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSResponseExplanationParameters": {
+"deprecated": true,
+"id": "XPSResponseExplanationParameters",
+"properties": {
+"integratedGradientsAttribution": {
+"$ref": "XPSIntegratedGradientsAttribution",
+"description": "An attribution method that computes Aumann-Shapley values taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365"
+},
+"xraiAttribution": {
+"$ref": "XPSXraiAttribution",
+"description": "An attribution method that redistributes Integrated Gradients attribution to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 XRAI currently performs better on natural images, like a picture of a house or an animal. If the images are taken in artificial environments, like a lab or manufacturing line, or from diagnostic equipment, like x-rays or quality-control cameras, use Integrated Gradients instead."
+}
+},
+"type": "object"
+},
+"XPSResponseExplanationSpec": {
+"deprecated": true,
+"description": "Specification of Model explanation. Feature-based XAI in AutoML Vision ICN is deprecated.",
+"id": "XPSResponseExplanationSpec",
+"properties": {
+"explanationType": {
+"description": "Explanation type. For AutoML Image Classification models, possible values are: * `image-integrated-gradients` * `image-xrai`",
+"type": "string"
+},
+"metadata": {
+"$ref": "XPSResponseExplanationMetadata",
+"description": "Metadata describing the Model's input and output for explanation."
+},
+"parameters": {
+"$ref": "XPSResponseExplanationParameters",
+"description": "Parameters that configure explaining of the Model's predictions."
+}
+},
+"type": "object"
+},
+"XPSRow": {
+"id": "XPSRow",
+"properties": {
+"columnIds": {
+"description": "The ids of the columns. Note: The below `values` field must match order of this field, if this field is set.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"values": {
+"description": "The values of the row cells, given in the same order as the column_ids. If column_ids is not set, then in the same order as the input_feature_column_ids in TablesModelMetadata.",
+"items": {
+"type": "any"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSSpeechEvaluationMetrics": {
+"id": "XPSSpeechEvaluationMetrics",
+"properties": {
+"subModelEvaluationMetrics": {
+"description": "Evaluation metrics for all submodels contained in this model.",
+"items": {
+"$ref": "XPSSpeechEvaluationMetricsSubModelEvaluationMetric"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSSpeechEvaluationMetricsSubModelEvaluationMetric": {
+"id": "XPSSpeechEvaluationMetricsSubModelEvaluationMetric",
+"properties": {
+"biasingModelType": {
+"description": "Type of the biasing model.",
+"enum": [
+"BIASING_MODEL_TYPE_UNSPECIFIED",
+"COMMAND_AND_SEARCH",
+"PHONE_CALL",
+"VIDEO",
+"DEFAULT"
+],
+"enumDescriptions": [
+"",
+"Build biasing model on top of COMMAND_AND_SEARCH model",
+"Build biasing model on top of PHONE_CALL model",
+"Build biasing model on top of VIDEO model",
+"Build biasing model on top of DEFAULT model"
+],
+"type": "string"
+},
+"isEnhancedModel": {
+"description": "If true then it means we have an enhanced version of the biasing models.",
+"type": "boolean"
+},
+"numDeletions": {
+"format": "int32",
+"type": "integer"
+},
+"numInsertions": {
+"format": "int32",
+"type": "integer"
+},
+"numSubstitutions": {
+"format": "int32",
+"type": "integer"
+},
+"numUtterances": {
+"description": "Number of utterances used in the wer computation.",
+"format": "int32",
+"type": "integer"
+},
+"numWords": {
+"description": "Number of words over which the word error rate was computed.",
+"format": "int32",
+"type": "integer"
+},
+"sentenceAccuracy": {
+"description": "Below fields are used for debugging purposes",
+"format": "double",
+"type": "number"
+},
+"wer": {
+"description": "Word error rate (standard error metric used for speech recognition).",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSSpeechModelSpec": {
+"id": "XPSSpeechModelSpec",
+"properties": {
+"datasetId": {
+"description": "Required for speech xps backend. Speech xps has to use dataset_id and model_id as the primary key in db so that speech API can query the db directly.",
+"format": "int64",
+"type": "string"
+},
+"language": {
+"type": "string"
+},
+"subModelSpecs": {
+"description": "Model specs for all submodels contained in this model.",
+"items": {
+"$ref": "XPSSpeechModelSpecSubModelSpec"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSSpeechModelSpecSubModelSpec": {
+"id": "XPSSpeechModelSpecSubModelSpec",
+"properties": {
+"biasingModelType": {
+"description": "Type of the biasing model.",
+"enum": [
+"BIASING_MODEL_TYPE_UNSPECIFIED",
+"COMMAND_AND_SEARCH",
+"PHONE_CALL",
+"VIDEO",
+"DEFAULT"
+],
+"enumDescriptions": [
+"",
+"Build biasing model on top of COMMAND_AND_SEARCH model",
+"Build biasing model on top of PHONE_CALL model",
+"Build biasing model on top of VIDEO model",
+"Build biasing model on top of DEFAULT model"
+],
+"type": "string"
+},
+"clientId": {
+"description": "In S3, Recognition ClientContextId.client_id",
+"type": "string"
+},
+"contextId": {
+"description": "In S3, Recognition ClientContextId.context_id",
+"type": "string"
+},
+"isEnhancedModel": {
+"description": "If true then it means we have an enhanced version of the biasing models.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"XPSSpeechPreprocessResponse": {
+"id": "XPSSpeechPreprocessResponse",
+"properties": {
+"cnsTestDataPath": {
+"description": "Location od shards of sstables (test data) of DataUtterance protos.",
+"type": "string"
+},
+"cnsTrainDataPath": {
+"description": "Location of shards of sstables (training data) of DataUtterance protos.",
+"type": "string"
+},
+"prebuiltModelEvaluationMetrics": {
+"$ref": "XPSSpeechEvaluationMetrics",
+"description": "The metrics for prebuilt speech models. They are included here because there is no prebuilt speech models stored in the AutoML."
+},
+"speechPreprocessStats": {
+"$ref": "XPSSpeechPreprocessStats",
+"description": "Stats associated with the data."
+}
+},
+"type": "object"
+},
+"XPSSpeechPreprocessStats": {
+"id": "XPSSpeechPreprocessStats",
+"properties": {
+"dataErrors": {
+"description": "Different types of data errors and the counts associated with them.",
+"items": {
+"$ref": "XPSDataErrors"
+},
+"type": "array"
+},
+"numHumanLabeledExamples": {
+"description": "The number of rows marked HUMAN_LABELLED",
+"format": "int32",
+"type": "integer"
+},
+"numLogsExamples": {
+"description": "The number of samples found in the previously recorded logs data.",
+"format": "int32",
+"type": "integer"
+},
+"numMachineTranscribedExamples": {
+"description": "The number of rows marked as MACHINE_TRANSCRIBED",
+"format": "int32",
+"type": "integer"
+},
+"testExamplesCount": {
+"description": "The number of examples labelled as TEST by Speech xps server.",
+"format": "int32",
+"type": "integer"
+},
+"testSentencesCount": {
+"description": "The number of sentences in the test data set.",
+"format": "int32",
+"type": "integer"
+},
+"testWordsCount": {
+"description": "The number of words in the test data set.",
+"format": "int32",
+"type": "integer"
+},
+"trainExamplesCount": {
+"description": "The number of examples labeled as TRAIN by Speech xps server.",
+"format": "int32",
+"type": "integer"
+},
+"trainSentencesCount": {
+"description": "The number of sentences in the training data set.",
+"format": "int32",
+"type": "integer"
+},
+"trainWordsCount": {
+"description": "The number of words in the training data set.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"XPSStringStats": {
+"description": "The data statistics of a series of STRING values.",
+"id": "XPSStringStats",
+"properties": {
+"commonStats": {
+"$ref": "XPSCommonStats"
+},
+"topUnigramStats": {
+"description": "The statistics of the top 20 unigrams, ordered by StringStats.UnigramStats.count.",
+"items": {
+"$ref": "XPSStringStatsUnigramStats"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSStringStatsUnigramStats": {
+"description": "The statistics of a unigram.",
+"id": "XPSStringStatsUnigramStats",
+"properties": {
+"count": {
+"description": "The number of occurrences of this unigram in the series.",
+"format": "int64",
+"type": "string"
+},
+"value": {
+"description": "The unigram.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSStructStats": {
+"description": "The data statistics of a series of STRUCT values.",
+"id": "XPSStructStats",
+"properties": {
+"commonStats": {
+"$ref": "XPSCommonStats"
+},
+"fieldStats": {
+"additionalProperties": {
+"$ref": "XPSDataStats"
+},
+"description": "Map from a field name of the struct to data stats aggregated over series of all data in that field across all the structs.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"XPSStructType": {
+"description": "`StructType` defines the DataType-s of a STRUCT type.",
+"id": "XPSStructType",
+"properties": {
+"fields": {
+"additionalProperties": {
+"$ref": "XPSDataType"
+},
+"description": "Unordered map of struct field names to their data types.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"XPSTableSpec": {
+"id": "XPSTableSpec",
+"properties": {
+"columnSpecs": {
+"additionalProperties": {
+"$ref": "XPSColumnSpec"
+},
+"description": "Mapping from column id to column spec.",
+"type": "object"
+},
+"importedDataSizeInBytes": {
+"description": "The total size of imported data of the table.",
+"format": "int64",
+"type": "string"
+},
+"rowCount": {
+"description": "The number of rows in the table.",
+"format": "int64",
+"type": "string"
+},
+"timeColumnId": {
+"description": "The id of the time column.",
+"format": "int32",
+"type": "integer"
+},
+"validRowCount": {
+"description": "The number of valid rows.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTablesClassificationMetrics": {
+"description": "Metrics for Tables classification problems.",
+"id": "XPSTablesClassificationMetrics",
+"properties": {
+"curveMetrics": {
+"description": "Metrics building a curve.",
+"items": {
+"$ref": "XPSTablesClassificationMetricsCurveMetrics"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSTablesClassificationMetricsCurveMetrics": {
+"description": "Metrics curve data point for a single value.",
+"id": "XPSTablesClassificationMetricsCurveMetrics",
+"properties": {
+"aucPr": {
+"description": "The area under the precision-recall curve.",
+"format": "double",
+"type": "number"
+},
+"aucRoc": {
+"description": "The area under receiver operating characteristic curve.",
+"format": "double",
+"type": "number"
+},
+"confidenceMetricsEntries": {
+"description": "Metrics that have confidence thresholds. Precision-recall curve and ROC curve can be derived from them.",
+"items": {
+"$ref": "XPSTablesConfidenceMetricsEntry"
+},
+"type": "array"
+},
+"logLoss": {
+"description": "The Log loss metric.",
+"format": "double",
+"type": "number"
+},
+"positionThreshold": {
+"description": "The position threshold value used to compute the metrics.",
+"format": "int32",
+"type": "integer"
+},
+"value": {
+"description": "The CATEGORY row value (for ARRAY unnested) the curve metrics are for.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTablesConfidenceMetricsEntry": {
+"description": "Metrics for a single confidence threshold.",
+"id": "XPSTablesConfidenceMetricsEntry",
+"properties": {
+"confidenceThreshold": {
+"description": "The confidence threshold value used to compute the metrics.",
+"format": "double",
+"type": "number"
+},
+"f1Score": {
+"description": "The harmonic mean of recall and precision. (2 * precision * recall) / (precision + recall)",
+"format": "double",
+"type": "number"
+},
+"falseNegativeCount": {
+"description": "False negative count.",
+"format": "int64",
+"type": "string"
+},
+"falsePositiveCount": {
+"description": "False positive count.",
+"format": "int64",
+"type": "string"
+},
+"falsePositiveRate": {
+"description": "FPR = #false positives / (#false positives + #true negatives)",
+"format": "double",
+"type": "number"
+},
+"precision": {
+"description": "Precision = #true positives / (#true positives + #false positives).",
+"format": "double",
+"type": "number"
+},
+"recall": {
+"description": "Recall = #true positives / (#true positives + #false negatives).",
+"format": "double",
+"type": "number"
+},
+"trueNegativeCount": {
+"description": "True negative count.",
+"format": "int64",
+"type": "string"
+},
+"truePositiveCount": {
+"description": "True positive count.",
+"format": "int64",
+"type": "string"
+},
+"truePositiveRate": {
+"description": "TPR = #true positives / (#true positives + #false negatvies)",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSTablesDatasetMetadata": {
+"description": "Metadata for a dataset used for AutoML Tables.",
+"id": "XPSTablesDatasetMetadata",
+"properties": {
+"mlUseColumnId": {
+"description": "Id the column to split the table.",
+"format": "int32",
+"type": "integer"
+},
+"primaryTableSpec": {
+"$ref": "XPSTableSpec",
+"description": "Primary table."
+},
+"targetColumnCorrelations": {
+"additionalProperties": {
+"$ref": "XPSCorrelationStats"
+},
+"description": "(the column id : its CorrelationStats with target column).",
+"type": "object"
+},
+"targetColumnId": {
+"description": "Id of the primary table column that should be used as the training label.",
+"format": "int32",
+"type": "integer"
+},
+"weightColumnId": {
+"description": "Id of the primary table column that should be used as the weight column.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"XPSTablesEvaluationMetrics": {
+"id": "XPSTablesEvaluationMetrics",
+"properties": {
+"classificationMetrics": {
+"$ref": "XPSTablesClassificationMetrics",
+"description": "Classification metrics."
+},
+"regressionMetrics": {
+"$ref": "XPSTablesRegressionMetrics",
+"description": "Regression metrics."
+}
+},
+"type": "object"
+},
+"XPSTablesModelColumnInfo": {
+"description": "An information specific to given column and Tables Model, in context of the Model and the predictions created by it.",
+"id": "XPSTablesModelColumnInfo",
+"properties": {
+"columnId": {
+"description": "The ID of the column.",
+"format": "int32",
+"type": "integer"
+},
+"featureImportance": {
+"description": "When given as part of a Model: Measurement of how much model predictions correctness on the TEST data depend on values in this column. A value between 0 and 1, higher means higher influence. These values are normalized - for all input feature columns of a given model they add to 1. When given back by Predict or Batch Predict: Measurement of how impactful for the prediction returned for the given row the value in this column was. Specifically, the feature importance specifies the marginal contribution that the feature made to the prediction score compared to the baseline score. These values are computed using the Sampled Shapley method.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSTablesModelStructure": {
+"description": "A description of Tables model structure.",
+"id": "XPSTablesModelStructure",
+"properties": {
+"modelParameters": {
+"description": "A list of models.",
+"items": {
+"$ref": "XPSTablesModelStructureModelParameters"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSTablesModelStructureModelParameters": {
+"description": "Model hyper-parameters for a model.",
+"id": "XPSTablesModelStructureModelParameters",
+"properties": {
+"hyperparameters": {
+"items": {
+"$ref": "XPSTablesModelStructureModelParametersParameter"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSTablesModelStructureModelParametersParameter": {
+"id": "XPSTablesModelStructureModelParametersParameter",
+"properties": {
+"floatValue": {
+"description": "Float type parameter value.",
+"format": "double",
+"type": "number"
+},
+"intValue": {
+"description": "Integer type parameter value.",
+"format": "int64",
+"type": "string"
+},
+"name": {
+"description": "Parameter name.",
+"type": "string"
+},
+"stringValue": {
+"description": "String type parameter value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTablesPreprocessResponse": {
+"id": "XPSTablesPreprocessResponse",
+"properties": {
+"tablesDatasetMetadata": {
+"$ref": "XPSTablesDatasetMetadata",
+"description": "The table/column id, column_name and the DataTypes of the columns will be populated."
+}
+},
+"type": "object"
+},
+"XPSTablesRegressionMetrics": {
+"description": "Metrics for Tables regression problems.",
+"id": "XPSTablesRegressionMetrics",
+"properties": {
+"meanAbsoluteError": {
+"description": "Mean absolute error.",
+"format": "double",
+"type": "number"
+},
+"meanAbsolutePercentageError": {
+"description": "Mean absolute percentage error, only set if all of the target column's values are positive.",
+"format": "double",
+"type": "number"
+},
+"rSquared": {
+"description": "R squared.",
+"format": "double",
+"type": "number"
+},
+"regressionMetricsEntries": {
+"description": "A list of actual versus predicted points for the model being evaluated.",
+"items": {
+"$ref": "XPSRegressionMetricsEntry"
+},
+"type": "array"
+},
+"rootMeanSquaredError": {
+"description": "Root mean squared error.",
+"format": "double",
+"type": "number"
+},
+"rootMeanSquaredLogError": {
+"description": "Root mean squared log error.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSTablesTrainResponse": {
+"id": "XPSTablesTrainResponse",
+"properties": {
+"modelStructure": {
+"$ref": "XPSTablesModelStructure"
+},
+"predictionSampleRows": {
+"description": "Sample rows from the dataset this model was trained.",
+"items": {
+"$ref": "XPSRow"
+},
+"type": "array"
+},
+"tablesModelColumnInfo": {
+"description": "Output only. Auxiliary information for each of the input_feature_column_specs, with respect to this particular model.",
+"items": {
+"$ref": "XPSTablesModelColumnInfo"
+},
+"type": "array"
+},
+"trainCostMilliNodeHours": {
+"description": "The actual training cost of the model, expressed in milli node hours, i.e. 1,000 value in this field means 1 node hour. Guaranteed to not exceed the train budget.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTablesTrainingOperationMetadata": {
+"id": "XPSTablesTrainingOperationMetadata",
+"properties": {
+"createModelStage": {
+"description": "Current stage of creating model.",
+"enum": [
+"CREATE_MODEL_STAGE_UNSPECIFIED",
+"DATA_PREPROCESSING",
+"TRAINING",
+"EVALUATING",
+"MODEL_POST_PROCESSING"
+],
+"enumDescriptions": [
+"Unspecified stage.",
+"Prepare the model training pipeline and run data processing.",
+"Training model.",
+"Run evaluation.",
+"Finalizing model training pipeline."
+],
+"type": "string"
+},
+"optimizationObjective": {
+"description": "The optimization objective for model.",
+"type": "string"
+},
+"topTrials": {
+"description": "This field is for training. When the operation is terminated successfully, AutoML Backend post this field to operation metadata in spanner. If the metadata has no trials returned, the training operation is supposed to be a failure.",
+"items": {
+"$ref": "XPSTuningTrial"
+},
+"type": "array"
+},
+"trainBudgetMilliNodeHours": {
+"description": "Creating model budget.",
+"format": "int64",
+"type": "string"
+},
+"trainingObjectivePoints": {
+"description": "This field records the training objective value with respect to time, giving insight into how the model architecture search is performing as training time elapses.",
+"items": {
+"$ref": "XPSTrainingObjectivePoint"
+},
+"type": "array"
+},
+"trainingStartTime": {
+"description": "Timestamp when training process starts.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTextComponentModel": {
+"description": "Component model.",
+"id": "XPSTextComponentModel",
+"properties": {
+"batchPredictionModelGcsUri": {
+"description": "The Cloud Storage resource path to hold batch prediction model.",
+"type": "string"
+},
+"onlinePredictionModelGcsUri": {
+"description": "The Cloud Storage resource path to hold online prediction model.",
+"type": "string"
+},
+"partition": {
+"description": "The partition where the model is deployed. Populated by uCAIP BE as part of online PredictRequest.",
+"enum": [
+"PARTITION_TYPE_UNSPECIFIED",
+"PARTITION_ZERO",
+"PARTITION_REDUCED_HOMING",
+"PARTITION_JELLYFISH",
+"PARTITION_CPU",
+"PARTITION_CUSTOM_STORAGE_CPU"
+],
+"enumDescriptions": [
+"",
+"The default partition.",
+"It has significantly lower replication than partition-0 and is located in the US only. It also has a larger model size limit and higher default RAM quota than partition-0. Customers with batch traffic, US-based traffic, or very large models should use this partition. Capacity in this partition is significantly cheaper than partition-0.",
+"To be used by customers with Jellyfish-accelerated ops.",
+"The partition used by regionalized servomatic cloud regions.",
+"The partition used for loading models from custom storage."
+],
+"type": "string"
+},
+"servingArtifact": {
+"$ref": "XPSModelArtifactItem",
+"description": "The default model binary file used for serving (e.g. online predict, batch predict) via public Cloud Ai Platform API."
+},
+"servoModelName": {
+"description": "The name of servo model. Populated by uCAIP BE as part of online PredictRequest.",
+"type": "string"
+},
+"submodelName": {
+"description": "The name of the trained NL submodel.",
+"type": "string"
+},
+"submodelType": {
+"description": "The type of trained NL submodel",
+"enum": [
+"TEXT_MODEL_TYPE_UNSPECIFIED",
+"TEXT_MODEL_TYPE_DEFAULT",
+"TEXT_MODEL_TYPE_META_ARCHITECT",
+"TEXT_MODEL_TYPE_ATC",
+"TEXT_MODEL_TYPE_CLARA2",
+"TEXT_MODEL_TYPE_CHATBASE",
+"TEXT_MODEL_TYPE_SAFT_SPAN_LABELING",
+"TEXT_MODEL_TYPE_TEXT_EXTRACTION",
+"TEXT_MODEL_TYPE_RELATIONSHIP_EXTRACTION",
+"TEXT_MODEL_TYPE_COMPOSITE",
+"TEXT_MODEL_TYPE_ALL_MODELS",
+"TEXT_MODEL_TYPE_BERT",
+"TEXT_MODEL_TYPE_ENC_PALM"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+"",
+"",
+"Model type for entity extraction.",
+"Model type for relationship extraction.",
+"A composite model represents a set of component models that have to be used together for prediction. A composite model appears to be a single model to the model user. It may contain only one component model.",
+"Model type used to train default, MA, and ATC models in a single batch worker pipeline.",
+"BERT pipeline needs a specific model type, since it uses a different TFX configuration compared with DEFAULT (despite sharing most of the code).",
+"Model type for EncPaLM."
+],
+"type": "string"
+},
+"tfRuntimeVersion": {
+"description": "## The fields below are only populated under uCAIP request scope. https://cloud.google.com/ml-engine/docs/runtime-version-list",
+"type": "string"
+},
+"versionNumber": {
+"description": "The servomatic model version number. Populated by uCAIP BE as part of online PredictRequest.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTextExtractionEvaluationMetrics": {
+"id": "XPSTextExtractionEvaluationMetrics",
+"properties": {
+"bestF1ConfidenceMetrics": {
+"$ref": "XPSConfidenceMetricsEntry",
+"deprecated": true,
+"description": "Values are at the highest F1 score on the precision-recall curve. Only confidence_threshold, recall, precision, and f1_score will be set."
+},
+"confidenceMetricsEntries": {
+"description": "If the enclosing EvaluationMetrics.label is empty, confidence_metrics_entries is an evaluation of the entire model across all labels. If the enclosing EvaluationMetrics.label is set, confidence_metrics_entries applies to that label.",
+"items": {
+"$ref": "XPSConfidenceMetricsEntry"
+},
+"type": "array"
+},
+"confusionMatrix": {
+"$ref": "XPSConfusionMatrix",
+"description": "Confusion matrix of the model, at the default confidence threshold (0.0). Only set for whole-model evaluation, not for evaluation per label."
+},
+"perLabelConfidenceMetrics": {
+"additionalProperties": {
+"$ref": "XPSConfidenceMetricsEntry"
+},
+"deprecated": true,
+"description": "Only recall, precision, and f1_score will be set.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"XPSTextSentimentEvaluationMetrics": {
+"description": "Model evaluation metrics for text sentiment problems.",
+"id": "XPSTextSentimentEvaluationMetrics",
+"properties": {
+"confusionMatrix": {
+"$ref": "XPSConfusionMatrix",
+"description": "Output only. Confusion matrix of the evaluation. Only set for the overall model evaluation, not for evaluation of a single annotation spec."
+},
+"f1Score": {
+"description": "Output only. The harmonic mean of recall and precision.",
+"format": "float",
+"type": "number"
+},
+"linearKappa": {
+"description": "Output only. Linear weighted kappa. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
+"format": "float",
+"type": "number"
+},
+"meanAbsoluteError": {
+"description": "Output only. Mean absolute error. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
+"format": "float",
+"type": "number"
+},
+"meanSquaredError": {
+"description": "Output only. Mean squared error. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
+"format": "float",
+"type": "number"
+},
+"precision": {
+"description": "Output only. Precision.",
+"format": "float",
+"type": "number"
+},
+"quadraticKappa": {
+"description": "Output only. Quadratic weighted kappa. Only set for the overall model evaluation, not for evaluation of a single annotation spec.",
+"format": "float",
+"type": "number"
+},
+"recall": {
+"description": "Output only. Recall.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSTextToSpeechTrainResponse": {
+"description": "TextToSpeech train response",
+"id": "XPSTextToSpeechTrainResponse",
+"properties": {},
+"type": "object"
+},
+"XPSTextTrainResponse": {
+"id": "XPSTextTrainResponse",
+"properties": {
+"componentModel": {
+"description": "Component submodels.",
+"items": {
+"$ref": "XPSTextComponentModel"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSTfJsFormat": {
+"description": "A [TensorFlow.js](https://www.tensorflow.org/js) model that can be used in the browser and in Node.js using JavaScript.",
+"id": "XPSTfJsFormat",
+"properties": {},
+"type": "object"
+},
+"XPSTfLiteFormat": {
+"description": "LINT.IfChange A model format used for mobile and IoT devices. See https://www.tensorflow.org/lite.",
+"id": "XPSTfLiteFormat",
+"properties": {},
+"type": "object"
+},
+"XPSTfSavedModelFormat": {
+"description": "A tensorflow model format in SavedModel format.",
+"id": "XPSTfSavedModelFormat",
+"properties": {},
+"type": "object"
+},
+"XPSTimestampStats": {
+"description": "The data statistics of a series of TIMESTAMP values.",
+"id": "XPSTimestampStats",
+"properties": {
+"commonStats": {
+"$ref": "XPSCommonStats"
+},
+"granularStats": {
+"additionalProperties": {
+"$ref": "XPSTimestampStatsGranularStats"
+},
+"description": "The string key is the pre-defined granularity. Currently supported: hour_of_day, day_of_week, month_of_year. Granularities finer that the granularity of timestamp data are not populated (e.g. if timestamps are at day granularity, then hour_of_day is not populated).",
+"type": "object"
+},
+"medianTimestampNanos": {
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTimestampStatsGranularStats": {
+"description": "Stats split by a defined in context granularity.",
+"id": "XPSTimestampStatsGranularStats",
+"properties": {
+"buckets": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "A map from granularity key to example count for that key. E.g. for hour_of_day `13` means 1pm, or for month_of_year `5` means May).",
+"type": "object"
+}
+},
+"type": "object"
+},
+"XPSTrackMetricsEntry": {
+"description": "Track matching model metrics for a single track match threshold and multiple label match confidence thresholds. Next tag: 6.",
+"id": "XPSTrackMetricsEntry",
+"properties": {
+"confidenceMetricsEntries": {
+"description": "Output only. Metrics for each label-match confidence_threshold from 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99. Precision-recall curve is derived from them.",
+"items": {
+"$ref": "XPSTrackMetricsEntryConfidenceMetricsEntry"
+},
+"type": "array"
+},
+"iouThreshold": {
+"description": "Output only. The intersection-over-union threshold value between bounding boxes across frames used to compute this metric entry.",
+"format": "float",
+"type": "number"
+},
+"meanBoundingBoxIou": {
+"description": "Output only. The mean bounding box iou over all confidence thresholds.",
+"format": "float",
+"type": "number"
+},
+"meanMismatchRate": {
+"description": "Output only. The mean mismatch rate over all confidence thresholds.",
+"format": "float",
+"type": "number"
+},
+"meanTrackingAveragePrecision": {
+"description": "Output only. The mean average precision over all confidence thresholds.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSTrackMetricsEntryConfidenceMetricsEntry": {
+"description": "Metrics for a single confidence threshold. Next tag: 6.",
+"id": "XPSTrackMetricsEntryConfidenceMetricsEntry",
+"properties": {
+"boundingBoxIou": {
+"description": "Output only. Bounding box intersection-over-union precision. Measures how well the bounding boxes overlap between each other (e.g. complete overlap or just barely above iou_threshold).",
+"format": "float",
+"type": "number"
+},
+"confidenceThreshold": {
+"description": "Output only. The confidence threshold value used to compute the metrics.",
+"format": "float",
+"type": "number"
+},
+"mismatchRate": {
+"description": "Output only. Mismatch rate, which measures the tracking consistency, i.e. correctness of instance ID continuity.",
+"format": "float",
+"type": "number"
+},
+"trackingPrecision": {
+"description": "Output only. Tracking precision.",
+"format": "float",
+"type": "number"
+},
+"trackingRecall": {
+"description": "Output only. Tracking recall.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSTrainResponse": {
+"id": "XPSTrainResponse",
+"properties": {
+"deployedModelSizeBytes": {
+"description": "Estimated model size in bytes once deployed.",
+"format": "int64",
+"type": "string"
+},
+"errorAnalysisConfigs": {
+"description": "Optional vision model error analysis configuration. The field is set when model error analysis is enabled in the training request. The results of error analysis will be binded together with evaluation results (in the format of AnnotatedExample).",
+"items": {
+"$ref": "XPSVisionErrorAnalysisConfig"
+},
+"type": "array"
+},
+"evaluatedExampleSet": {
+"$ref": "XPSExampleSet",
+"description": "Examples used to evaluate the model (usually the test set), with the predicted annotations. The file_spec should point to recordio file(s) of AnnotatedExample. For each returned example, the example_id_token and annotations predicted by the model must be set. The example payload can and is recommended to be omitted."
+},
+"evaluationMetricsSet": {
+"$ref": "XPSEvaluationMetricsSet",
+"description": "The trained model evaluation metrics. This can be optionally returned."
+},
+"explanationConfigs": {
+"deprecated": true,
+"description": "VisionExplanationConfig for XAI on test set. Optional for when XAI is enable in training request.",
+"items": {
+"$ref": "XPSResponseExplanationSpec"
+},
+"type": "array"
+},
+"imageClassificationTrainResp": {
+"$ref": "XPSImageClassificationTrainResponse"
+},
+"imageObjectDetectionTrainResp": {
+"$ref": "XPSImageObjectDetectionModelSpec"
+},
+"imageSegmentationTrainResp": {
+"$ref": "XPSImageSegmentationTrainResponse"
+},
+"modelToken": {
+"description": "Token that represents the trained model. This is considered immutable and is persisted in AutoML. xPS can put their own proto in the byte string, to e.g. point to the model checkpoints. The token is passed to other xPS APIs to refer to the model.",
+"format": "byte",
+"type": "string"
+},
+"speechTrainResp": {
+"$ref": "XPSSpeechModelSpec"
+},
+"tablesTrainResp": {
+"$ref": "XPSTablesTrainResponse"
+},
+"textToSpeechTrainResp": {
+"$ref": "XPSTextToSpeechTrainResponse"
+},
+"textTrainResp": {
+"$ref": "XPSTextTrainResponse",
+"description": "Will only be needed for uCAIP from Beta."
+},
+"translationTrainResp": {
+"$ref": "XPSTranslationTrainResponse"
+},
+"videoActionRecognitionTrainResp": {
+"$ref": "XPSVideoActionRecognitionTrainResponse"
+},
+"videoClassificationTrainResp": {
+"$ref": "XPSVideoClassificationTrainResponse"
+},
+"videoObjectTrackingTrainResp": {
+"$ref": "XPSVideoObjectTrackingTrainResponse"
+}
+},
+"type": "object"
+},
+"XPSTrainingObjectivePoint": {
+"id": "XPSTrainingObjectivePoint",
+"properties": {
+"createTime": {
+"description": "The time at which this point was recorded.",
+"format": "google-datetime",
+"type": "string"
+},
+"value": {
+"description": "The objective value when this point was recorded.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSTranslationEvaluationMetrics": {
+"description": "Evaluation metrics for the dataset.",
+"id": "XPSTranslationEvaluationMetrics",
+"properties": {
+"baseBleuScore": {
+"description": "BLEU score for base model.",
+"format": "double",
+"type": "number"
+},
+"bleuScore": {
+"description": "BLEU score.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSTranslationPreprocessResponse": {
+"description": "Translation preprocess response.",
+"id": "XPSTranslationPreprocessResponse",
+"properties": {
+"parsedExampleCount": {
+"description": "Total example count parsed.",
+"format": "int64",
+"type": "string"
+},
+"validExampleCount": {
+"description": "Total valid example count.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTranslationTrainResponse": {
+"description": "Train response for translation.",
+"id": "XPSTranslationTrainResponse",
+"properties": {
+"modelType": {
+"description": "Type of the model.",
+"enum": [
+"MODEL_TYPE_UNSPECIFIED",
+"LEGACY",
+"CURRENT"
+],
+"enumDescriptions": [
+"Default",
+"Legacy model. Will be deprecated.",
+"Current model."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSTuningTrial": {
+"description": "Metrics for a tuning job generated, will get forwarded to Stackdriver as model tuning logs. Setting this as a standalone message out of CreateModelMetadata to avoid confusion as we expose this message only to users.",
+"id": "XPSTuningTrial",
+"properties": {
+"modelStructure": {
+"$ref": "XPSTablesModelStructure",
+"description": "Model parameters for the trial."
+},
+"trainingObjectivePoint": {
+"$ref": "XPSTrainingObjectivePoint",
+"description": "The optimization objective evaluation of the eval split data."
+}
+},
+"type": "object"
+},
+"XPSVideoActionMetricsEntry": {
+"description": "The Evaluation metrics entry given a specific precision_window_length.",
+"id": "XPSVideoActionMetricsEntry",
+"properties": {
+"confidenceMetricsEntries": {
+"description": "Metrics for each label-match confidence_threshold from 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99.",
+"items": {
+"$ref": "XPSVideoActionMetricsEntryConfidenceMetricsEntry"
+},
+"type": "array"
+},
+"meanAveragePrecision": {
+"description": "The mean average precision.",
+"format": "float",
+"type": "number"
+},
+"precisionWindowLength": {
+"description": "This VideoActionMetricsEntry is calculated based on this prediction window length. If the predicted action's timestamp is inside the time window whose center is the ground truth action's timestamp with this specific length, the prediction result is treated as a true positive.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSVideoActionMetricsEntryConfidenceMetricsEntry": {
+"description": "Metrics for a single confidence threshold.",
+"id": "XPSVideoActionMetricsEntryConfidenceMetricsEntry",
+"properties": {
+"confidenceThreshold": {
+"description": "Output only. The confidence threshold value used to compute the metrics.",
+"format": "float",
+"type": "number"
+},
+"f1Score": {
+"description": "Output only. The harmonic mean of recall and precision.",
+"format": "float",
+"type": "number"
+},
+"precision": {
+"description": "Output only. Precision for the given confidence threshold.",
+"format": "float",
+"type": "number"
+},
+"recall": {
+"description": "Output only. Recall for the given confidence threshold.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"XPSVideoActionRecognitionEvaluationMetrics": {
+"description": "Model evaluation metrics for video action recognition.",
+"id": "XPSVideoActionRecognitionEvaluationMetrics",
+"properties": {
+"evaluatedActionCount": {
+"description": "Output only. The number of ground truth actions used to create this evaluation.",
+"format": "int32",
+"type": "integer"
+},
+"videoActionMetricsEntries": {
+"description": "Output only. The metric entries for precision window lengths: 1s,2s,3s,4s, 5s.",
+"items": {
+"$ref": "XPSVideoActionMetricsEntry"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSVideoActionRecognitionTrainResponse": {
+"id": "XPSVideoActionRecognitionTrainResponse",
+"properties": {
+"modelArtifactSpec": {
+"$ref": "XPSVideoModelArtifactSpec",
+"description": "## The fields below are only populated under uCAIP request scope."
+},
+"trainCostNodeSeconds": {
+"description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSVideoBatchPredictOperationMetadata": {
+"id": "XPSVideoBatchPredictOperationMetadata",
+"properties": {
+"outputExamples": {
+"description": "All the partial batch prediction results that are completed at the moment. Output examples are sorted by completion time. The order will not be changed. Each output example should be the path of a single RecordIO file of AnnotatedExamples.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSVideoClassificationTrainResponse": {
+"id": "XPSVideoClassificationTrainResponse",
+"properties": {
+"modelArtifactSpec": {
+"$ref": "XPSVideoModelArtifactSpec",
+"description": "## The fields below are only populated under uCAIP request scope."
+},
+"trainCostNodeSeconds": {
+"description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSVideoExportModelSpec": {
+"description": "Information of downloadable models that are pre-generated as part of training flow and will be persisted in AutoMl backend. Upon receiving ExportModel request from user, AutoMl backend can serve the pre-generated models to user if exists (by copying the files from internal path to user provided location), otherwise, AutoMl backend will call xPS ExportModel API to generate the model on the fly with the requesting format.",
+"id": "XPSVideoExportModelSpec",
+"properties": {
+"exportModelOutputConfig": {
+"description": "Contains the model format and internal location of the model files to be exported/downloaded. Use the Google Cloud Storage bucket name which is provided via TrainRequest.gcs_bucket_name to store the model files.",
+"items": {
+"$ref": "XPSExportModelOutputConfig"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSVideoModelArtifactSpec": {
+"id": "XPSVideoModelArtifactSpec",
+"properties": {
+"exportArtifact": {
+"description": "The model binary files in different formats for model export.",
+"items": {
+"$ref": "XPSModelArtifactItem"
+},
+"type": "array"
+},
+"servingArtifact": {
+"$ref": "XPSModelArtifactItem",
+"description": "The default model binary file used for serving (e.g. batch predict) via public Cloud AI Platform API."
+}
+},
+"type": "object"
+},
+"XPSVideoObjectTrackingEvaluationMetrics": {
+"description": "Model evaluation metrics for ObjectTracking problems. Next tag: 10.",
+"id": "XPSVideoObjectTrackingEvaluationMetrics",
+"properties": {
+"boundingBoxMeanAveragePrecision": {
+"description": "Output only. The single metric for bounding boxes evaluation: the mean_average_precision averaged over all bounding_box_metrics_entries.",
+"format": "float",
+"type": "number"
+},
+"boundingBoxMetricsEntries": {
+"description": "Output only. The bounding boxes match metrics for each Intersection-over-union threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99.",
+"items": {
+"$ref": "XPSBoundingBoxMetricsEntry"
+},
+"type": "array"
+},
+"evaluatedBoundingboxCount": {
+"description": "The number of bounding boxes used for model evaluation.",
+"format": "int32",
+"type": "integer"
+},
+"evaluatedFrameCount": {
+"description": "The number of video frames used for model evaluation.",
+"format": "int32",
+"type": "integer"
+},
+"evaluatedTrackCount": {
+"description": "The number of tracks used for model evaluation.",
+"format": "int32",
+"type": "integer"
+},
+"trackMeanAveragePrecision": {
+"description": "Output only. The single metric for tracks accuracy evaluation: the mean_average_precision averaged over all track_metrics_entries.",
+"format": "float",
+"type": "number"
+},
+"trackMeanBoundingBoxIou": {
+"description": "Output only. The single metric for tracks bounding box iou evaluation: the mean_bounding_box_iou averaged over all track_metrics_entries.",
+"format": "float",
+"type": "number"
+},
+"trackMeanMismatchRate": {
+"description": "Output only. The single metric for tracking consistency evaluation: the mean_mismatch_rate averaged over all track_metrics_entries.",
+"format": "float",
+"type": "number"
+},
+"trackMetricsEntries": {
+"description": "Output only. The tracks match metrics for each Intersection-over-union threshold 0.05,0.10,...,0.95,0.96,0.97,0.98,0.99.",
+"items": {
+"$ref": "XPSTrackMetricsEntry"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"XPSVideoObjectTrackingTrainResponse": {
+"id": "XPSVideoObjectTrackingTrainResponse",
+"properties": {
+"exportModelSpec": {
+"$ref": "XPSVideoExportModelSpec",
+"description": "Populated for AutoML request only."
+},
+"modelArtifactSpec": {
+"$ref": "XPSVideoModelArtifactSpec",
+"description": "## The fields below are only populated under uCAIP request scope."
+},
+"trainCostNodeSeconds": {
+"description": "The actual train cost of creating this model, expressed in node seconds, i.e. 3,600 value in this field means 1 node hour.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSVideoTrainingOperationMetadata": {
+"id": "XPSVideoTrainingOperationMetadata",
+"properties": {
+"trainCostMilliNodeHour": {
+"description": "This is an estimation of the node hours necessary for training a model, expressed in milli node hours (i.e. 1,000 value in this field means 1 node hour). A node hour represents the time a virtual machine spends running your training job. The cost of one node running for one hour is a node hour.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSVisionErrorAnalysisConfig": {
+"description": "The vision model error analysis configuration. Next tag: 3",
+"id": "XPSVisionErrorAnalysisConfig",
+"properties": {
+"exampleCount": {
+"description": "The number of query examples in error analysis.",
+"format": "int32",
+"type": "integer"
+},
+"queryType": {
+"description": "The query type used in retrieval. The enum values are frozen in the foreseeable future.",
+"enum": [
+"QUERY_TYPE_UNSPECIFIED",
+"QUERY_TYPE_ALL_SIMILAR",
+"QUERY_TYPE_SAME_CLASS_SIMILAR",
+"QUERY_TYPE_SAME_CLASS_DISSIMILAR"
+],
+"enumDescriptions": [
+"Unspecified query type for model error analysis.",
+"Query similar samples across all classes in the dataset.",
+"Query similar samples from the same class of the input sample.",
+"Query dissimilar samples from the same class of the input sample."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSVisionTrainingOperationMetadata": {
+"deprecated": true,
+"id": "XPSVisionTrainingOperationMetadata",
+"properties": {
+"explanationUsage": {
+"$ref": "InfraUsage",
+"description": "Aggregated infra usage within certain time period, for billing report purpose if XAI is enable in training request."
+}
+},
+"type": "object"
+},
+"XPSVisualization": {
+"deprecated": true,
+"description": "Visualization configurations for image explanation.",
+"id": "XPSVisualization",
+"properties": {
+"clipPercentLowerbound": {
+"description": "Excludes attributions below the specified percentile, from the highlighted areas. Defaults to 62.",
+"format": "float",
+"type": "number"
+},
+"clipPercentUpperbound": {
+"description": "Excludes attributions above the specified percentile from the highlighted areas. Using the clip_percent_upperbound and clip_percent_lowerbound together can be useful for filtering out noise and making it easier to see areas of strong attribution. Defaults to 99.9.",
+"format": "float",
+"type": "number"
+},
+"colorMap": {
+"description": "The color scheme used for the highlighted areas. Defaults to PINK_GREEN for Integrated Gradients attribution, which shows positive attributions in green and negative in pink. Defaults to VIRIDIS for XRAI attribution, which highlights the most influential regions in yellow and the least influential in blue.",
+"enum": [
+"COLOR_MAP_UNSPECIFIED",
+"PINK_GREEN",
+"VIRIDIS",
+"RED",
+"GREEN",
+"RED_GREEN",
+"PINK_WHITE_GREEN"
+],
+"enumDescriptions": [
+"Should not be used.",
+"Positive: green. Negative: pink.",
+"Viridis color map: A perceptually uniform color mapping which is easier to see by those with colorblindness and progresses from yellow to green to blue. Positive: yellow. Negative: blue.",
+"Positive: red. Negative: red.",
+"Positive: green. Negative: green.",
+"Positive: green. Negative: red.",
+"PiYG palette."
+],
+"type": "string"
+},
+"overlayType": {
+"description": "How the original image is displayed in the visualization. Adjusting the overlay can help increase visual clarity if the original image makes it difficult to view the visualization. Defaults to NONE.",
+"enum": [
+"OVERLAY_TYPE_UNSPECIFIED",
+"NONE",
+"ORIGINAL",
+"GRAYSCALE",
+"MASK_BLACK"
+],
+"enumDescriptions": [
+"Default value. This is the same as NONE.",
+"No overlay.",
+"The attributions are shown on top of the original image.",
+"The attributions are shown on top of grayscaled version of the original image.",
+"The attributions are used as a mask to reveal predictive parts of the image and hide the un-predictive parts."
+],
+"type": "string"
+},
+"polarity": {
+"description": "Whether to only highlight pixels with positive contributions, negative or both. Defaults to POSITIVE.",
+"enum": [
+"POLARITY_UNSPECIFIED",
+"POSITIVE",
+"NEGATIVE",
+"BOTH"
+],
+"enumDescriptions": [
+"Default value. This is the same as POSITIVE.",
+"Highlights the pixels/outlines that were most influential to the model's prediction.",
+"Setting polarity to negative highlights areas that does not lead to the models's current prediction.",
+"Shows both positive and negative attributions."
+],
+"type": "string"
+},
+"type": {
+"description": "Type of the image visualization. Only applicable to Integrated Gradients attribution. OUTLINES shows regions of attribution, while PIXELS shows per-pixel attribution. Defaults to OUTLINES.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"PIXELS",
+"OUTLINES"
+],
+"enumDescriptions": [
+"Should not be used.",
+"Shows which pixel contributed to the image prediction.",
+"Shows which region contributed to the image prediction by outlining the region."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"XPSXpsOperationMetadata": {
+"id": "XPSXpsOperationMetadata",
+"properties": {
+"exampleCount": {
+"description": "Optional. XPS server can opt to provide example count of the long running operation (e.g. training, data importing, batch prediction).",
+"format": "int64",
+"type": "string"
+},
+"reportingMetrics": {
+"$ref": "XPSReportingMetrics",
+"description": "Metrics for the operation. By the time the operation is terminated (whether succeeded or failed) as returned from XPS, AutoML BE assumes the metrics are finalized. AutoML BE transparently posts the metrics to Chemist if it's not empty, regardless of the response content or error type. If user is supposed to be charged in case of cancellation/error, this field should be set. In the case where the type of LRO doesn't require any billing, this field should be left unset."
+},
+"tablesTrainingOperationMetadata": {
+"$ref": "XPSTablesTrainingOperationMetadata"
+},
+"videoBatchPredictOperationMetadata": {
+"$ref": "XPSVideoBatchPredictOperationMetadata"
+},
+"videoTrainingOperationMetadata": {
+"$ref": "XPSVideoTrainingOperationMetadata"
+},
+"visionTrainingOperationMetadata": {
+"$ref": "XPSVisionTrainingOperationMetadata"
+}
+},
+"type": "object"
+},
+"XPSXraiAttribution": {
+"deprecated": true,
+"description": "An explanation method that redistributes Integrated Gradients attributions to segmented regions, taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Only supports image Models (modality is IMAGE).",
+"id": "XPSXraiAttribution",
+"properties": {
+"stepCount": {
+"description": "The number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range. Valid range of its value is [1, 100], inclusively.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Natural Language API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/meet.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/meet.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..b6050c5f8ae872fe799e7002981afe1e12a37a12
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/meet.v2.json
@@ -0,0 +1,1146 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/meetings.space.created": {
+"description": "Create, edit, and see information about your Google Meet conferences created by the app."
+},
+"https://www.googleapis.com/auth/meetings.space.readonly": {
+"description": "Read information about any of your Google Meet conferences"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://meet.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Meet",
+"description": "Create and manage meetings in Google Meet.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/meet/api",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "meet:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://meet.mtls.googleapis.com/",
+"name": "meet",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"conferenceRecords": {
+"methods": {
+"get": {
+"description": "Gets a conference record by conference ID.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the conference.",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "ConferenceRecord"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+},
+"list": {
+"description": "Lists the conference records. By default, ordered by start time and in descending order.",
+"flatPath": "v2/conferenceRecords",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "Optional. User specified filtering condition in [EBNF format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). The following are the filterable fields: * `space.meeting_code` * `space.name` * `start_time` * `end_time` For example, consider the following filters: * `space.name = \"spaces/NAME\"` * `space.meeting_code = \"abc-mnop-xyz\"` * `start_time>=\"2024-01-01T00:00:00.000Z\" AND start_time<=\"2024-01-02T00:00:00.000Z\"` * `end_time IS NULL`",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Maximum number of conference records to return. The service might return fewer than this value. If unspecified, at most 25 conference records are returned. The maximum value is 100; values above 100 are coerced to 100. Maximum might change in the future.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. Page token returned from previous List Call.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/conferenceRecords",
+"response": {
+"$ref": "ListConferenceRecordsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+}
+},
+"resources": {
+"participants": {
+"methods": {
+"get": {
+"description": "Gets a participant by participant ID.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/participants/{participantsId}",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.participants.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the participant.",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Participant"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+},
+"list": {
+"description": "Lists the participants in a conference record. By default, ordered by join time and in descending order. This API supports `fields` as standard parameters like every other API. However, when the `fields` request parameter is omitted, this API defaults to `'participants/*, next_page_token'`.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/participants",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.participants.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. User specified filtering condition in [EBNF format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). The following are the filterable fields: * `earliest_start_time` * `latest_end_time` For example, `latest_end_time IS NULL` returns active participants in the conference.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Maximum number of participants to return. The service might return fewer than this value. If unspecified, at most 100 participants are returned. The maximum value is 250; values above 250 are coerced to 250. Maximum might change in the future.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token returned from previous List Call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Format: `conferenceRecords/{conference_record}`",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/participants",
+"response": {
+"$ref": "ListParticipantsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+}
+},
+"resources": {
+"participantSessions": {
+"methods": {
+"get": {
+"description": "Gets a participant session by participant session ID.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/participants/{participantsId}/participantSessions/{participantSessionsId}",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.participants.participantSessions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the participant.",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+/participants/[^/]+/participantSessions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "ParticipantSession"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+},
+"list": {
+"description": "Lists the participant sessions of a participant in a conference record. By default, ordered by join time and in descending order. This API supports `fields` as standard parameters like every other API. However, when the `fields` request parameter is omitted this API defaults to `'participantsessions/*, next_page_token'`.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/participants/{participantsId}/participantSessions",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.participants.participantSessions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. User specified filtering condition in [EBNF format](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form). The following are the filterable fields: * `start_time` * `end_time` For example, `end_time IS NULL` returns active participant sessions in the conference record.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Maximum number of participant sessions to return. The service might return fewer than this value. If unspecified, at most 100 participants are returned. The maximum value is 250; values above 250 are coerced to 250. Maximum might change in the future.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. Page token returned from previous List Call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Format: `conferenceRecords/{conference_record}/participants/{participant}`",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+/participants/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/participantSessions",
+"response": {
+"$ref": "ListParticipantSessionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+}
+}
+}
+}
+},
+"recordings": {
+"methods": {
+"get": {
+"description": "Gets a recording by recording ID.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/recordings/{recordingsId}",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.recordings.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the recording.",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+/recordings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Recording"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+},
+"list": {
+"description": "Lists the recording resources from the conference record. By default, ordered by start time and in ascending order.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/recordings",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.recordings.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of recordings to return. The service might return fewer than this value. If unspecified, at most 10 recordings are returned. The maximum value is 100; values above 100 are coerced to 100. Maximum might change in the future.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token returned from previous List Call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Format: `conferenceRecords/{conference_record}`",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/recordings",
+"response": {
+"$ref": "ListRecordingsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+}
+}
+},
+"transcripts": {
+"methods": {
+"get": {
+"description": "Gets a transcript by transcript ID.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/transcripts/{transcriptsId}",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.transcripts.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the transcript.",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+/transcripts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Transcript"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+},
+"list": {
+"description": "Lists the set of transcripts from the conference record. By default, ordered by start time and in ascending order.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/transcripts",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.transcripts.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of transcripts to return. The service might return fewer than this value. If unspecified, at most 10 transcripts are returned. The maximum value is 100; values above 100 are coerced to 100. Maximum might change in the future.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token returned from previous List Call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Format: `conferenceRecords/{conference_record}`",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/transcripts",
+"response": {
+"$ref": "ListTranscriptsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+}
+},
+"resources": {
+"entries": {
+"methods": {
+"get": {
+"description": "Gets a `TranscriptEntry` resource by entry ID. Note: The transcript entries returned by the Google Meet API might not match the transcription found in the Google Docs transcript file. This can occur when the Google Docs transcript file is modified after generation.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/transcripts/{transcriptsId}/entries/{entriesId}",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.transcripts.entries.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the `TranscriptEntry`.",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+/transcripts/[^/]+/entries/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "TranscriptEntry"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+},
+"list": {
+"description": "Lists the structured transcript entries per transcript. By default, ordered by start time and in ascending order. Note: The transcript entries returned by the Google Meet API might not match the transcription found in the Google Docs transcript file. This can occur when the Google Docs transcript file is modified after generation.",
+"flatPath": "v2/conferenceRecords/{conferenceRecordsId}/transcripts/{transcriptsId}/entries",
+"httpMethod": "GET",
+"id": "meet.conferenceRecords.transcripts.entries.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of entries to return. The service might return fewer than this value. If unspecified, at most 10 entries are returned. The maximum value is 100; values above 100 are coerced to 100. Maximum might change in the future.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token returned from previous List Call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Format: `conferenceRecords/{conference_record}/transcripts/{transcript}`",
+"location": "path",
+"pattern": "^conferenceRecords/[^/]+/transcripts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/entries",
+"response": {
+"$ref": "ListTranscriptEntriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+}
+}
+}
+}
+}
+}
+},
+"spaces": {
+"methods": {
+"create": {
+"description": "Creates a space.",
+"flatPath": "v2/spaces",
+"httpMethod": "POST",
+"id": "meet.spaces.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/spaces",
+"request": {
+"$ref": "Space"
+},
+"response": {
+"$ref": "Space"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created"
+]
+},
+"endActiveConference": {
+"description": "Ends an active conference (if there's one). For an example, see [End active conference](https://developers.google.com/meet/api/guides/meeting-spaces#end-active-conference).",
+"flatPath": "v2/spaces/{spacesId}:endActiveConference",
+"httpMethod": "POST",
+"id": "meet.spaces.endActiveConference",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the space. Format: `spaces/{space}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. For example, `jQCFfuBOdN5z`. For more information, see [How Meet identifies a meeting space](https://developers.google.com/meet/api/guides/meeting-spaces#identify-meeting-space).",
+"location": "path",
+"pattern": "^spaces/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:endActiveConference",
+"request": {
+"$ref": "EndActiveConferenceRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created"
+]
+},
+"get": {
+"description": "Gets details about a meeting space. For an example, see [Get a meeting space](https://developers.google.com/meet/api/guides/meeting-spaces#get-meeting-space).",
+"flatPath": "v2/spaces/{spacesId}",
+"httpMethod": "GET",
+"id": "meet.spaces.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the space. Format: `spaces/{space}` or `spaces/{meetingCode}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. For example, `jQCFfuBOdN5z`. `{meetingCode}` is an alias for the space. It's a typeable, unique character string and is non-case sensitive. For example, `abc-mnop-xyz`. The maximum length is 128 characters. A `meetingCode` shouldn't be stored long term as it can become dissociated from a meeting space and can be reused for different meeting spaces in the future. Generally, a `meetingCode` expires 365 days after last use. For more information, see [Learn about meeting codes in Google Meet](https://support.google.com/meet/answer/10710509). For more information, see [How Meet identifies a meeting space](https://developers.google.com/meet/api/guides/meeting-spaces#identify-meeting-space).",
+"location": "path",
+"pattern": "^spaces/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Space"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created",
+"https://www.googleapis.com/auth/meetings.space.readonly"
+]
+},
+"patch": {
+"description": "Updates details about a meeting space. For an example, see [Update a meeting space](https://developers.google.com/meet/api/guides/meeting-spaces#update-meeting-space).",
+"flatPath": "v2/spaces/{spacesId}",
+"httpMethod": "PATCH",
+"id": "meet.spaces.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. Resource name of the space. Format: `spaces/{space}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. For example, `jQCFfuBOdN5z`. For more information, see [How Meet identifies a meeting space](https://developers.google.com/meet/api/guides/meeting-spaces#identify-meeting-space).",
+"location": "path",
+"pattern": "^spaces/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask used to specify the fields to be updated in the space. If update_mask isn't provided(not set, set with empty paths, or only has \"\" as paths), it defaults to update all fields provided with values in the request. Using \"*\" as update_mask will update all fields, including deleting fields not set in the request.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "Space"
+},
+"response": {
+"$ref": "Space"
+},
+"scopes": [
+"https://www.googleapis.com/auth/meetings.space.created"
+]
+}
+}
+}
+},
+"revision": "20240808",
+"rootUrl": "https://meet.googleapis.com/",
+"schemas": {
+"ActiveConference": {
+"description": "Active conference.",
+"id": "ActiveConference",
+"properties": {
+"conferenceRecord": {
+"description": "Output only. Reference to 'ConferenceRecord' resource. Format: `conferenceRecords/{conference_record}` where `{conference_record}` is a unique ID for each instance of a call within a space.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnonymousUser": {
+"description": "User who joins anonymously (meaning not signed into a Google Account).",
+"id": "AnonymousUser",
+"properties": {
+"displayName": {
+"description": "Output only. User provided name when they join a conference anonymously.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ConferenceRecord": {
+"description": "Single instance of a meeting held in a space.",
+"id": "ConferenceRecord",
+"properties": {
+"endTime": {
+"description": "Output only. Timestamp when the conference ended. Set for past conferences. Unset if the conference is ongoing.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"expireTime": {
+"description": "Output only. Server enforced expiration time for when this conference record resource is deleted. The resource is deleted 30 days after the conference ends.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Identifier. Resource name of the conference record. Format: `conferenceRecords/{conference_record}` where `{conference_record}` is a unique ID for each instance of a call within a space.",
+"type": "string"
+},
+"space": {
+"description": "Output only. The space where the conference was held.",
+"readOnly": true,
+"type": "string"
+},
+"startTime": {
+"description": "Output only. Timestamp when the conference started. Always set.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"DocsDestination": {
+"description": "Google Docs location where the transcript file is saved.",
+"id": "DocsDestination",
+"properties": {
+"document": {
+"description": "Output only. The document ID for the underlying Google Docs transcript file. For example, \"1kuceFZohVoCh6FulBHxwy6I15Ogpc4hP\". Use the `documents.get` method of the Google Docs API (https://developers.google.com/docs/api/reference/rest/v1/documents/get) to fetch the content.",
+"readOnly": true,
+"type": "string"
+},
+"exportUri": {
+"description": "Output only. URI for the Google Docs transcript file. Use `https://docs.google.com/document/d/{$DocumentId}/view` to browse the transcript in the browser.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"DriveDestination": {
+"description": "Export location where a recording file is saved in Google Drive.",
+"id": "DriveDestination",
+"properties": {
+"exportUri": {
+"description": "Output only. Link used to play back the recording file in the browser. For example, `https://drive.google.com/file/d/{$fileId}/view`.",
+"readOnly": true,
+"type": "string"
+},
+"file": {
+"description": "Output only. The `fileId` for the underlying MP4 file. For example, \"1kuceFZohVoCh6FulBHxwy6I15Ogpc4hP\". Use `$ GET https://www.googleapis.com/drive/v3/files/{$fileId}?alt=media` to download the blob. For more information, see https://developers.google.com/drive/api/v3/reference/files/get.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"EndActiveConferenceRequest": {
+"description": "Request to end an ongoing conference of a space.",
+"id": "EndActiveConferenceRequest",
+"properties": {},
+"type": "object"
+},
+"ListConferenceRecordsResponse": {
+"description": "Response of ListConferenceRecords method.",
+"id": "ListConferenceRecordsResponse",
+"properties": {
+"conferenceRecords": {
+"description": "List of conferences in one page.",
+"items": {
+"$ref": "ConferenceRecord"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Token to be circulated back for further List call if current List does NOT include all the Conferences. Unset if all conferences have been returned.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListParticipantSessionsResponse": {
+"description": "Response of ListParticipants method.",
+"id": "ListParticipantSessionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to be circulated back for further List call if current List doesn't include all the participants. Unset if all participants are returned.",
+"type": "string"
+},
+"participantSessions": {
+"description": "List of participants in one page.",
+"items": {
+"$ref": "ParticipantSession"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListParticipantsResponse": {
+"description": "Response of ListParticipants method.",
+"id": "ListParticipantsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to be circulated back for further List call if current List doesn't include all the participants. Unset if all participants are returned.",
+"type": "string"
+},
+"participants": {
+"description": "List of participants in one page.",
+"items": {
+"$ref": "Participant"
+},
+"type": "array"
+},
+"totalSize": {
+"description": "Total, exact number of `participants`. By default, this field isn't included in the response. Set the field mask in [SystemParameterContext](https://cloud.google.com/apis/docs/system-parameters) to receive this field in the response.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ListRecordingsResponse": {
+"description": "Response for ListRecordings method.",
+"id": "ListRecordingsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to be circulated back for further List call if current List doesn't include all the recordings. Unset if all recordings are returned.",
+"type": "string"
+},
+"recordings": {
+"description": "List of recordings in one page.",
+"items": {
+"$ref": "Recording"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTranscriptEntriesResponse": {
+"description": "Response for ListTranscriptEntries method.",
+"id": "ListTranscriptEntriesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to be circulated back for further List call if current List doesn't include all the transcript entries. Unset if all entries are returned.",
+"type": "string"
+},
+"transcriptEntries": {
+"description": "List of TranscriptEntries in one page.",
+"items": {
+"$ref": "TranscriptEntry"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTranscriptsResponse": {
+"description": "Response for ListTranscripts method.",
+"id": "ListTranscriptsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token to be circulated back for further List call if current List doesn't include all the transcripts. Unset if all transcripts are returned.",
+"type": "string"
+},
+"transcripts": {
+"description": "List of transcripts in one page.",
+"items": {
+"$ref": "Transcript"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Participant": {
+"description": "User who attended or is attending a conference.",
+"id": "Participant",
+"properties": {
+"anonymousUser": {
+"$ref": "AnonymousUser",
+"description": "Anonymous user."
+},
+"earliestStartTime": {
+"description": "Output only. Time when the participant first joined the meeting.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"latestEndTime": {
+"description": "Output only. Time when the participant left the meeting for the last time. This can be null if it's an active meeting.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of the participant. Format: `conferenceRecords/{conference_record}/participants/{participant}`",
+"readOnly": true,
+"type": "string"
+},
+"phoneUser": {
+"$ref": "PhoneUser",
+"description": "User calling from their phone."
+},
+"signedinUser": {
+"$ref": "SignedinUser",
+"description": "Signed-in user."
+}
+},
+"type": "object"
+},
+"ParticipantSession": {
+"description": "Refers to each unique join or leave session when a user joins a conference from a device. Note that any time a user joins the conference a new unique ID is assigned. That means if a user joins a space multiple times from the same device, they're assigned different IDs, and are also be treated as different participant sessions.",
+"id": "ParticipantSession",
+"properties": {
+"endTime": {
+"description": "Output only. Timestamp when the user session ends. Unset if the user session hasn\u2019t ended.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Identifier. Session id.",
+"type": "string"
+},
+"startTime": {
+"description": "Output only. Timestamp when the user session starts.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PhoneUser": {
+"description": "User dialing in from a phone where the user's identity is unknown because they haven't signed in with a Google Account.",
+"id": "PhoneUser",
+"properties": {
+"displayName": {
+"description": "Output only. Partially redacted user's phone number when calling.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Recording": {
+"description": "Metadata about a recording created during a conference.",
+"id": "Recording",
+"properties": {
+"driveDestination": {
+"$ref": "DriveDestination",
+"description": "Output only. Recording is saved to Google Drive as an MP4 file. The `drive_destination` includes the Drive `fileId` that can be used to download the file using the `files.get` method of the Drive API.",
+"readOnly": true
+},
+"endTime": {
+"description": "Output only. Timestamp when the recording ended.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of the recording. Format: `conferenceRecords/{conference_record}/recordings/{recording}` where `{recording}` is a 1:1 mapping to each unique recording session during the conference.",
+"readOnly": true,
+"type": "string"
+},
+"startTime": {
+"description": "Output only. Timestamp when the recording started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. Current state.",
+"enum": [
+"STATE_UNSPECIFIED",
+"STARTED",
+"ENDED",
+"FILE_GENERATED"
+],
+"enumDescriptions": [
+"Default, never used.",
+"An active recording session has started.",
+"This recording session has ended, but the recording file hasn't been generated yet.",
+"Recording file is generated and ready to download."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"SignedinUser": {
+"description": "A signed-in user can be: a) An individual joining from a personal computer, mobile device, or through companion mode. b) A robot account used by conference room devices.",
+"id": "SignedinUser",
+"properties": {
+"displayName": {
+"description": "Output only. For a personal device, it's the user's first name and last name. For a robot account, it's the administrator-specified device name. For example, \"Altostrat Room\".",
+"readOnly": true,
+"type": "string"
+},
+"user": {
+"description": "Output only. Unique ID for the user. Interoperable with Admin SDK API and People API. Format: `users/{user}`",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Space": {
+"description": "Virtual place where conferences are held. Only one active conference can be held in one space at any given time.",
+"id": "Space",
+"properties": {
+"activeConference": {
+"$ref": "ActiveConference",
+"description": "Active conference, if it exists."
+},
+"config": {
+"$ref": "SpaceConfig",
+"description": "Configuration pertaining to the meeting space."
+},
+"meetingCode": {
+"description": "Output only. Type friendly unique string used to join the meeting. Format: `[a-z]+-[a-z]+-[a-z]+`. For example, `abc-mnop-xyz`. The maximum length is 128 characters. Can only be used as an alias of the space name to get the space.",
+"readOnly": true,
+"type": "string"
+},
+"meetingUri": {
+"description": "Output only. URI used to join meetings consisting of `https://meet.google.com/` followed by the `meeting_code`. For example, `https://meet.google.com/abc-mnop-xyz`.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Immutable. Resource name of the space. Format: `spaces/{space}`. `{space}` is the resource identifier for the space. It's a unique, server-generated ID and is case sensitive. For example, `jQCFfuBOdN5z`. For more information, see [How Meet identifies a meeting space](https://developers.google.com/meet/api/guides/meeting-spaces#identify-meeting-space).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SpaceConfig": {
+"description": "The configuration pertaining to a meeting space.",
+"id": "SpaceConfig",
+"properties": {
+"accessType": {
+"description": "Access type of the meeting space that determines who can join without knocking. Default: The user's default access settings. Controlled by the user's admin for enterprise users or RESTRICTED.",
+"enum": [
+"ACCESS_TYPE_UNSPECIFIED",
+"OPEN",
+"TRUSTED",
+"RESTRICTED"
+],
+"enumDescriptions": [
+"Default value specified by the user's organization. Note: This is never returned, as the configured access type is returned instead.",
+"Anyone with the join information (for example, the URL or phone access information) can join without knocking.",
+"Members of the host's organization, invited external users, and dial-in users can join without knocking. Everyone else must knock.",
+"Only invitees can join without knocking. Everyone else must knock."
+],
+"type": "string"
+},
+"entryPointAccess": {
+"description": "Defines the entry points that can be used to join meetings hosted in this meeting space. Default: EntryPointAccess.ALL",
+"enum": [
+"ENTRY_POINT_ACCESS_UNSPECIFIED",
+"ALL",
+"CREATOR_APP_ONLY"
+],
+"enumDescriptions": [
+"Unused.",
+"All entry points are allowed.",
+"Only entry points owned by the Google Cloud project that created the space can be used to join meetings in this space. Apps can use the Meet Embed SDK Web or mobile Meet SDKs to create owned entry points."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Transcript": {
+"description": "Metadata for a transcript generated from a conference. It refers to the ASR (Automatic Speech Recognition) result of user's speech during the conference.",
+"id": "Transcript",
+"properties": {
+"docsDestination": {
+"$ref": "DocsDestination",
+"description": "Output only. Where the Google Docs transcript is saved.",
+"readOnly": true
+},
+"endTime": {
+"description": "Output only. Timestamp when the transcript stopped.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of the transcript. Format: `conferenceRecords/{conference_record}/transcripts/{transcript}`, where `{transcript}` is a 1:1 mapping to each unique transcription session of the conference.",
+"readOnly": true,
+"type": "string"
+},
+"startTime": {
+"description": "Output only. Timestamp when the transcript started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. Current state.",
+"enum": [
+"STATE_UNSPECIFIED",
+"STARTED",
+"ENDED",
+"FILE_GENERATED"
+],
+"enumDescriptions": [
+"Default, never used.",
+"An active transcript session has started.",
+"This transcript session has ended, but the transcript file hasn't been generated yet.",
+"Transcript file is generated and ready to download."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"TranscriptEntry": {
+"description": "Single entry for one user\u2019s speech during a transcript session.",
+"id": "TranscriptEntry",
+"properties": {
+"endTime": {
+"description": "Output only. Timestamp when the transcript entry ended.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"languageCode": {
+"description": "Output only. Language of spoken text, such as \"en-US\". IETF BCP 47 syntax (https://tools.ietf.org/html/bcp47)",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. Resource name of the entry. Format: \"conferenceRecords/{conference_record}/transcripts/{transcript}/entries/{entry}\"",
+"readOnly": true,
+"type": "string"
+},
+"participant": {
+"description": "Output only. Refers to the participant who speaks.",
+"readOnly": true,
+"type": "string"
+},
+"startTime": {
+"description": "Output only. Timestamp when the transcript entry started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"text": {
+"description": "Output only. The transcribed text of the participant's voice, at maximum 10K words. Note that the limit is subject to change.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Google Meet API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/merchantapi.notifications_v1beta.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/merchantapi.notifications_v1beta.json
new file mode 100644
index 0000000000000000000000000000000000000000..28a9455d64e1914c0e00c1d695982999d1d201c9
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/merchantapi.notifications_v1beta.json
@@ -0,0 +1,475 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/content": {
+"description": "Manage your product listings and accounts for Google Shopping"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://merchantapi.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Merchant",
+"description": "Programmatically manage your Merchant Center Accounts.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.devsite.corp.google.com/merchant/api",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "merchantapi:notifications_v1beta",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://merchantapi.mtls.googleapis.com/",
+"name": "merchantapi",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"accounts": {
+"resources": {
+"notificationsubscriptions": {
+"methods": {
+"create": {
+"description": "Creates a notification subscription for a business. For standalone or subaccounts accounts, the business can create a subscription for self. For MCAs, the business can create a subscription for all managed accounts or for a specific subaccount. We will allow the following types of notification subscriptions to exist together (per business as a subscriber per event type): 1. Subscription for all managed accounts + subscription for self. 2. Multiple \"partial\" subscriptions for managed accounts + subscription for self. we will not allow (per business as a subscriber per event type): 1. Multiple self subscriptions. 2. Multiple \"all managed accounts\" subscriptions. 3. \"All managed accounts\" subscription and partial subscriptions at the same time. 4. Multiple partial subscriptions for the same target account.",
+"flatPath": "notifications/v1beta/accounts/{accountsId}/notificationsubscriptions",
+"httpMethod": "POST",
+"id": "merchantapi.accounts.notificationsubscriptions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The merchant account that owns the new notification subscription. Format: `accounts/{account}`",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "notifications/v1beta/{+parent}/notificationsubscriptions",
+"request": {
+"$ref": "NotificationSubscription"
+},
+"response": {
+"$ref": "NotificationSubscription"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"delete": {
+"description": "Deletes a notification subscription for a merchant.",
+"flatPath": "notifications/v1beta/accounts/{accountsId}/notificationsubscriptions/{notificationsubscriptionsId}",
+"httpMethod": "DELETE",
+"id": "merchantapi.accounts.notificationsubscriptions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the notification subscription to be deleted.",
+"location": "path",
+"pattern": "^accounts/[^/]+/notificationsubscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "notifications/v1beta/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"get": {
+"description": "Gets notification subscriptions for an account.",
+"flatPath": "notifications/v1beta/accounts/{accountsId}/notificationsubscriptions/{notificationsubscriptionsId}",
+"httpMethod": "GET",
+"id": "merchantapi.accounts.notificationsubscriptions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The `name` of the notification subscription.",
+"location": "path",
+"pattern": "^accounts/[^/]+/notificationsubscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "notifications/v1beta/{+name}",
+"response": {
+"$ref": "NotificationSubscription"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"list": {
+"description": "Gets all the notification subscriptions for a merchant.",
+"flatPath": "notifications/v1beta/accounts/{accountsId}/notificationsubscriptions",
+"httpMethod": "GET",
+"id": "merchantapi.accounts.notificationsubscriptions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of notification subscriptions to return in a page. The default value for `page_size` is 100. The maximum value is `200`. Values above `200` will be coerced to `200`.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token (if provided) to retrieve the subsequent page. All other parameters must match the original call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The merchant account who owns the notification subscriptions. Format: `accounts/{account}`",
+"location": "path",
+"pattern": "^accounts/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "notifications/v1beta/{+parent}/notificationsubscriptions",
+"response": {
+"$ref": "ListNotificationSubscriptionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+},
+"patch": {
+"description": "Updates an existing notification subscription for a merchant.",
+"flatPath": "notifications/v1beta/accounts/{accountsId}/notificationsubscriptions/{notificationsubscriptionsId}",
+"httpMethod": "PATCH",
+"id": "merchantapi.accounts.notificationsubscriptions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The `name` of the notification configuration. Generated by the Content API upon creation of a new `NotificationSubscription`. The `account` represents the merchant ID of the merchant that owns the configuration. Format: `accounts/{account}/notificationsubscriptions/{notification_subscription}`",
+"location": "path",
+"pattern": "^accounts/[^/]+/notificationsubscriptions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "List of fields being updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "notifications/v1beta/{+name}",
+"request": {
+"$ref": "NotificationSubscription"
+},
+"response": {
+"$ref": "NotificationSubscription"
+},
+"scopes": [
+"https://www.googleapis.com/auth/content"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20241119",
+"rootUrl": "https://merchantapi.googleapis.com/",
+"schemas": {
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"ListNotificationSubscriptionsResponse": {
+"description": "Response message for the ListNotificationSubscription method.",
+"id": "ListNotificationSubscriptionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"notificationSubscriptions": {
+"description": "The list of notification subscriptions requested by the merchant.",
+"items": {
+"$ref": "NotificationSubscription"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"NotificationSubscription": {
+"description": "Represents a notification subscription owned by a Merchant account.",
+"id": "NotificationSubscription",
+"properties": {
+"allManagedAccounts": {
+"description": "If this value is true, the requesting account is notified of the specified event for all managed accounts (can be subaccounts or other linked accounts) including newly added accounts on a daily basis.",
+"type": "boolean"
+},
+"callBackUri": {
+"description": "URL to be used to push the notification to the merchant.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The `name` of the notification configuration. Generated by the Content API upon creation of a new `NotificationSubscription`. The `account` represents the merchant ID of the merchant that owns the configuration. Format: `accounts/{account}/notificationsubscriptions/{notification_subscription}`",
+"readOnly": true,
+"type": "string"
+},
+"registeredEvent": {
+"description": "The event that the merchant wants to be notified about.",
+"enum": [
+"NOTIFICATION_EVENT_TYPE_UNSPECIFIED",
+"PRODUCT_STATUS_CHANGE"
+],
+"enumDescriptions": [
+"Notifications event type is unspecified.",
+"Notification of product status changes, for example when product becomes disapproved."
+],
+"type": "string"
+},
+"targetAccount": {
+"description": "The `name` of the account you want to receive notifications for. Format: `accounts/{account}`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProductChange": {
+"description": "The change that happened to the product including old value, new value, country code as the region code and reporting context.",
+"id": "ProductChange",
+"properties": {
+"newValue": {
+"description": "The new value of the changed resource or attribute.",
+"type": "string"
+},
+"oldValue": {
+"description": "The old value of the changed resource or attribute.",
+"type": "string"
+},
+"regionCode": {
+"description": "Countries that have the change (if applicable)",
+"type": "string"
+},
+"reportingContext": {
+"description": "Reporting contexts that have the change (if applicable)",
+"enum": [
+"REPORTING_CONTEXT_ENUM_UNSPECIFIED",
+"SHOPPING_ADS",
+"DISCOVERY_ADS",
+"DEMAND_GEN_ADS",
+"DEMAND_GEN_ADS_DISCOVER_SURFACE",
+"VIDEO_ADS",
+"DISPLAY_ADS",
+"LOCAL_INVENTORY_ADS",
+"VEHICLE_INVENTORY_ADS",
+"FREE_LISTINGS",
+"FREE_LOCAL_LISTINGS",
+"FREE_LOCAL_VEHICLE_LISTINGS",
+"YOUTUBE_SHOPPING",
+"CLOUD_RETAIL",
+"LOCAL_CLOUD_RETAIL",
+"PRODUCT_REVIEWS",
+"MERCHANT_REVIEWS",
+"YOUTUBE_CHECKOUT"
+],
+"enumDeprecated": [
+false,
+false,
+true,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false,
+false
+],
+"enumDescriptions": [
+"Not specified.",
+"[Shopping ads](https://support.google.com/merchants/answer/6149970).",
+"Deprecated: Use `DEMAND_GEN_ADS` instead. [Discovery and Demand Gen ads](https://support.google.com/merchants/answer/13389785).",
+"[Demand Gen ads](https://support.google.com/merchants/answer/13389785).",
+"[Demand Gen ads on Discover surface](https://support.google.com/merchants/answer/13389785).",
+"[Video ads](https://support.google.com/google-ads/answer/6340491).",
+"[Display ads](https://support.google.com/merchants/answer/6069387).",
+"[Local inventory ads](https://support.google.com/merchants/answer/3271956).",
+"[Vehicle inventory ads](https://support.google.com/merchants/answer/11544533).",
+"[Free product listings](https://support.google.com/merchants/answer/9199328).",
+"[Free local product listings](https://support.google.com/merchants/answer/9825611).",
+"[Free local vehicle listings](https://support.google.com/merchants/answer/11544533).",
+"[YouTube Shopping](https://support.google.com/merchants/answer/13478370).",
+"[Cloud retail](https://cloud.google.com/solutions/retail).",
+"[Local cloud retail](https://cloud.google.com/solutions/retail).",
+"[Product Reviews](https://support.google.com/merchants/answer/14620732).",
+"[Merchant Reviews](https://developers.google.com/merchant-review-feeds).",
+"[YouTube Checkout]("
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProductStatusChangeMessage": {
+"description": "The message that the merchant will receive to notify about product status change event",
+"id": "ProductStatusChangeMessage",
+"properties": {
+"account": {
+"description": "The target account that owns the entity that changed. Format : `accounts/{merchant_id}`",
+"type": "string"
+},
+"attribute": {
+"description": "The attribute in the resource that changed, in this case it will be always `Status`.",
+"enum": [
+"ATTRIBUTE_UNSPECIFIED",
+"STATUS"
+],
+"enumDescriptions": [
+"Unspecified attribute",
+"Status of the changed entity"
+],
+"type": "string"
+},
+"changes": {
+"description": "A message to describe the change that happened to the product",
+"items": {
+"$ref": "ProductChange"
+},
+"type": "array"
+},
+"expirationTime": {
+"description": "The product expiration time. This field will not bet set if the notification is sent for a product deletion event.",
+"format": "google-datetime",
+"type": "string"
+},
+"managingAccount": {
+"description": "The account that manages the merchant's account. can be the same as merchant id if it is standalone account. Format : `accounts/{service_provider_id}`",
+"type": "string"
+},
+"resource": {
+"description": "The product name. Format: `{product.name=accounts/{account}/products/{product}}`",
+"type": "string"
+},
+"resourceId": {
+"description": "The product id.",
+"type": "string"
+},
+"resourceType": {
+"description": "The resource that changed, in this case it will always be `Product`.",
+"enum": [
+"RESOURCE_UNSPECIFIED",
+"PRODUCT"
+],
+"enumDescriptions": [
+"Unspecified resource",
+"Resource type : product"
+],
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Merchant API",
+"version": "notifications_v1beta",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/metastore.v2alpha.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/metastore.v2alpha.json
new file mode 100644
index 0000000000000000000000000000000000000000..df6eb7ff27a2fa8a5228050bdc3423deae1c84dc
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/metastore.v2alpha.json
@@ -0,0 +1,2313 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://metastore.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Dataproc Metastore",
+"description": "The Dataproc Metastore API is used to manage the lifecycle and configuration of metastore services.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/dataproc-metastore/docs",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "metastore:v2alpha",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://metastore.mtls.googleapis.com/",
+"name": "metastore",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"services": {
+"methods": {
+"alterLocation": {
+"description": "Alter metadata resource location. The metadata resource can be a database, table, or partition. This functionality only updates the parent directory for the respective metadata resource and does not transfer any existing data to the new location.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:alterLocation",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.alterLocation",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the metastore service to mutate metadata, in the following format:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:alterLocation",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaAlterMetadataResourceLocationRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"alterTableProperties": {
+"description": "Alter metadata table properties.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:alterTableProperties",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.alterTableProperties",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the Dataproc Metastore service that's being used to mutate metadata table properties, in the following format:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:alterTableProperties",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaAlterTablePropertiesRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"cancelMigration": {
+"description": "Cancels the ongoing Managed Migration process.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:cancelMigration",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.cancelMigration",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the metastore service to cancel the ongoing migration to, in the following format:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:cancelMigration",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaCancelMigrationRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"completeMigration": {
+"description": "Completes the managed migration process. The Dataproc Metastore service will switch to using its own backend database after successful migration.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:completeMigration",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.completeMigration",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the metastore service to complete the migration to, in the following format:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:completeMigration",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaCompleteMigrationRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a metastore service in a project and location.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The relative resource name of the location in which to create a metastore service, in the following form:projects/{project_number}/locations/{location_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"location": "query",
+"type": "string"
+},
+"serviceId": {
+"description": "Required. The ID of the metastore service, which is used as the final component of the metastore service's name.This value must be between 2 and 63 characters long inclusive, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2alpha/{+parent}/services",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaService"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single service.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}",
+"httpMethod": "DELETE",
+"id": "metastore.projects.locations.services.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The relative resource name of the metastore service to delete, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2alpha/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"exportMetadata": {
+"description": "Exports metadata from a service.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:exportMetadata",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.exportMetadata",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the metastore service to run export, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:exportMetadata",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaExportMetadataRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the details of a single service.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}",
+"httpMethod": "GET",
+"id": "metastore.projects.locations.services.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The relative resource name of the metastore service to retrieve, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+name}",
+"response": {
+"$ref": "GoogleCloudMetastoreV2alphaService"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"importMetadata": {
+"description": "Imports Metadata into a Dataproc Metastore service.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:importMetadata",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.importMetadata",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The relative resource name of the metastore service to run import, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+name}:importMetadata",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaImportMetadataRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists services in a project and location.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services",
+"httpMethod": "GET",
+"id": "metastore.projects.locations.services.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter to apply to list results.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Specify the ordering of results as described in Sorting Order (https://cloud.google.com/apis/design/design_patterns#sorting_order). If not specified, the results will be sorted in the default order.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of services to return. The response may contain less than the maximum number. If unspecified, no more than 500 services are returned. The maximum value is 1000; values above 1000 are changed to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous DataprocMetastore.ListServices call. Provide this token to retrieve the subsequent page.To retrieve the first page, supply an empty page token.When paginating, other parameters provided to DataprocMetastore.ListServices must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The relative resource name of the location of metastore services to list, in the following form:projects/{project_number}/locations/{location_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+parent}/services",
+"response": {
+"$ref": "GoogleCloudMetastoreV2alphaListServicesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"moveTableToDatabase": {
+"description": "Move a table to another database.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:moveTableToDatabase",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.moveTableToDatabase",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the metastore service to mutate metadata, in the following format:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:moveTableToDatabase",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaMoveTableToDatabaseRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single service.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}",
+"httpMethod": "PATCH",
+"id": "metastore.projects.locations.services.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Required. A field mask used to specify the fields to be overwritten in the metastore service resource by the update. Fields specified in the update_mask are relative to the resource (not to the full request). A field is overwritten if it is in the mask.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2alpha/{+name}",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaService"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"queryMetadata": {
+"description": "Query Dataproc Metastore metadata.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:queryMetadata",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.queryMetadata",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the metastore service to query metadata, in the following format:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:queryMetadata",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaQueryMetadataRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"removeIamPolicy": {
+"description": "Removes the attached IAM policies for a resource",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/{servicesId1}:removeIamPolicy",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.removeIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "Required. The relative resource name of the dataplane resource to remove IAM policy, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}/databases/{database_id} or projects/{project_id}/locations/{location_id}/services/{service_id}/databases/{database_id}/tables/{table_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+resource}:removeIamPolicy",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaRemoveIamPolicyRequest"
+},
+"response": {
+"$ref": "GoogleCloudMetastoreV2alphaRemoveIamPolicyResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"restore": {
+"description": "Restores a service from a backup.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:restore",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.restore",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the metastore service to run restore, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:restore",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaRestoreServiceRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"startMigration": {
+"description": "Starts the Managed Migration process.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}:startMigration",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.startMigration",
+"parameterOrder": [
+"service"
+],
+"parameters": {
+"service": {
+"description": "Required. The relative resource name of the metastore service to start migrating to, in the following format:projects/{project_id}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+service}:startMigration",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaStartMigrationRequest"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"backups": {
+"methods": {
+"create": {
+"description": "Creates a new backup in a given project and location.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/backups",
+"httpMethod": "POST",
+"id": "metastore.projects.locations.services.backups.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"backupId": {
+"description": "Required. The ID of the backup, which is used as the final component of the backup's name.This value must be between 1 and 64 characters long, begin with a letter, end with a letter or number, and consist of alpha-numeric ASCII characters or hyphens.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The relative resource name of the service in which to create a backup of the following form:projects/{project_number}/locations/{location_id}/services/{service_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2alpha/{+parent}/backups",
+"request": {
+"$ref": "GoogleCloudMetastoreV2alphaBackup"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single backup.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/backups/{backupsId}",
+"httpMethod": "DELETE",
+"id": "metastore.projects.locations.services.backups.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The relative resource name of the backup to delete, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/backups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2alpha/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single backup.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/backups/{backupsId}",
+"httpMethod": "GET",
+"id": "metastore.projects.locations.services.backups.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The relative resource name of the backup to retrieve, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/backups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+name}",
+"response": {
+"$ref": "GoogleCloudMetastoreV2alphaBackup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists backups in a service.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/backups",
+"httpMethod": "GET",
+"id": "metastore.projects.locations.services.backups.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter to apply to list results.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Specify the ordering of results as described in Sorting Order (https://cloud.google.com/apis/design/design_patterns#sorting_order). If not specified, the results will be sorted in the default order.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of backups to return. The response may contain less than the maximum number. If unspecified, no more than 500 backups are returned. The maximum value is 1000; values above 1000 are changed to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous DataprocMetastore.ListBackups call. Provide this token to retrieve the subsequent page.To retrieve the first page, supply an empty page token.When paginating, other parameters provided to DataprocMetastore.ListBackups must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The relative resource name of the service whose backups to list, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+parent}/backups",
+"response": {
+"$ref": "GoogleCloudMetastoreV2alphaListBackupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"migrationExecutions": {
+"methods": {
+"delete": {
+"description": "Deletes a single migration execution.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/migrationExecutions/{migrationExecutionsId}",
+"httpMethod": "DELETE",
+"id": "metastore.projects.locations.services.migrationExecutions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The relative resource name of the migrationExecution to delete, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/migrationExecutions/{migration_execution_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/migrationExecutions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2alpha/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single migration execution.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/migrationExecutions/{migrationExecutionsId}",
+"httpMethod": "GET",
+"id": "metastore.projects.locations.services.migrationExecutions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The relative resource name of the migration execution to retrieve, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/migrationExecutions/{migration_execution_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+/migrationExecutions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+name}",
+"response": {
+"$ref": "GoogleCloudMetastoreV2alphaMigrationExecution"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists migration executions on a service.",
+"flatPath": "v2alpha/projects/{projectsId}/locations/{locationsId}/services/{servicesId}/migrationExecutions",
+"httpMethod": "GET",
+"id": "metastore.projects.locations.services.migrationExecutions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter to apply to list results.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Specify the ordering of results as described in Sorting Order (https://cloud.google.com/apis/design/design_patterns#sorting_order). If not specified, the results will be sorted in the default order.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of migration executions to return. The response may contain less than the maximum number. If unspecified, no more than 500 migration executions are returned. The maximum value is 1000; values above 1000 are changed to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous DataprocMetastore.ListMigrationExecutions call. Provide this token to retrieve the subsequent page.To retrieve the first page, supply an empty page token.When paginating, other parameters provided to DataprocMetastore.ListMigrationExecutions must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The relative resource name of the service whose migration executions to list, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/migrationExecutions.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2alpha/{+parent}/migrationExecutions",
+"response": {
+"$ref": "GoogleCloudMetastoreV2alphaListMigrationExecutionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241203",
+"rootUrl": "https://metastore.googleapis.com/",
+"schemas": {
+"GoogleCloudMetastoreV1AlterMetadataResourceLocationResponse": {
+"description": "Response message for DataprocMetastore.AlterMetadataResourceLocation.",
+"id": "GoogleCloudMetastoreV1AlterMetadataResourceLocationResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV1CustomRegionMetadata": {
+"description": "Metadata about a custom region. This is only populated if the region is a custom region. For single/multi regions, it will be empty.",
+"id": "GoogleCloudMetastoreV1CustomRegionMetadata",
+"properties": {
+"optionalReadOnlyRegions": {
+"description": "The read-only regions for this custom region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"requiredReadWriteRegions": {
+"description": "The read-write regions for this custom region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"witnessRegion": {
+"description": "The Spanner witness region for this custom region.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1ErrorDetails": {
+"description": "Error details in public error message for DataprocMetastore.QueryMetadata.",
+"id": "GoogleCloudMetastoreV1ErrorDetails",
+"properties": {
+"details": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Additional structured details about this error.Keys define the failure items. Value describes the exception or details of the item.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1HiveMetastoreVersion": {
+"description": "A specification of a supported version of the Hive Metastore software.",
+"id": "GoogleCloudMetastoreV1HiveMetastoreVersion",
+"properties": {
+"isDefault": {
+"description": "Whether version will be chosen by the server if a metastore service is created with a HiveMetastoreConfig that omits the version.",
+"type": "boolean"
+},
+"version": {
+"description": "The semantic version of the Hive Metastore software.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1LocationMetadata": {
+"description": "Metadata about the service in a location.",
+"id": "GoogleCloudMetastoreV1LocationMetadata",
+"properties": {
+"customRegionMetadata": {
+"description": "Possible configurations supported if the current region is a custom region.",
+"items": {
+"$ref": "GoogleCloudMetastoreV1CustomRegionMetadata"
+},
+"type": "array"
+},
+"multiRegionMetadata": {
+"$ref": "GoogleCloudMetastoreV1MultiRegionMetadata",
+"description": "The multi-region metadata if the current region is a multi-region."
+},
+"supportedHiveMetastoreVersions": {
+"description": "The versions of Hive Metastore that can be used when creating a new metastore service in this location. The server guarantees that exactly one HiveMetastoreVersion in the list will set is_default.",
+"items": {
+"$ref": "GoogleCloudMetastoreV1HiveMetastoreVersion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1MoveTableToDatabaseResponse": {
+"description": "Response message for DataprocMetastore.MoveTableToDatabase.",
+"id": "GoogleCloudMetastoreV1MoveTableToDatabaseResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV1MultiRegionMetadata": {
+"description": "The metadata for the multi-region that includes the constituent regions. The metadata is only populated if the region is multi-region. For single region or custom dual region, it will be empty.",
+"id": "GoogleCloudMetastoreV1MultiRegionMetadata",
+"properties": {
+"constituentRegions": {
+"description": "The regions constituting the multi-region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1OperationMetadata": {
+"description": "Represents the metadata of a long-running operation.",
+"id": "GoogleCloudMetastoreV1OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the caller has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1QueryMetadataResponse": {
+"description": "Response message for DataprocMetastore.QueryMetadata.",
+"id": "GoogleCloudMetastoreV1QueryMetadataResponse",
+"properties": {
+"resultManifestUri": {
+"description": "The manifest URI is link to a JSON instance in Cloud Storage. This instance manifests immediately along with QueryMetadataResponse. The content of the URI is not retriable until the long-running operation query against the metadata finishes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaAlterMetadataResourceLocationResponse": {
+"description": "Response message for DataprocMetastore.AlterMetadataResourceLocation.",
+"id": "GoogleCloudMetastoreV1alphaAlterMetadataResourceLocationResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaCancelMigrationResponse": {
+"description": "Response message for DataprocMetastore.CancelMigration.",
+"id": "GoogleCloudMetastoreV1alphaCancelMigrationResponse",
+"properties": {
+"migrationExecution": {
+"description": "The relative resource name of the migration execution, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/migrationExecutions/{migration_execution_id}.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaCompleteMigrationResponse": {
+"description": "Response message for DataprocMetastore.CompleteMigration.",
+"id": "GoogleCloudMetastoreV1alphaCompleteMigrationResponse",
+"properties": {
+"migrationExecution": {
+"description": "The relative resource name of the migration execution, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/migrationExecutions/{migration_execution_id}.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaCustomRegionMetadata": {
+"description": "Metadata about a custom region. This is only populated if the region is a custom region. For single/multi regions, it will be empty.",
+"id": "GoogleCloudMetastoreV1alphaCustomRegionMetadata",
+"properties": {
+"optionalReadOnlyRegions": {
+"description": "The read-only regions for this custom region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"requiredReadWriteRegions": {
+"description": "The read-write regions for this custom region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"witnessRegion": {
+"description": "The Spanner witness region for this custom region.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaErrorDetails": {
+"description": "Error details in public error message for DataprocMetastore.QueryMetadata.",
+"id": "GoogleCloudMetastoreV1alphaErrorDetails",
+"properties": {
+"details": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Additional structured details about this error.Keys define the failure items. Value describes the exception or details of the item.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaHiveMetastoreVersion": {
+"description": "A specification of a supported version of the Hive Metastore software.",
+"id": "GoogleCloudMetastoreV1alphaHiveMetastoreVersion",
+"properties": {
+"isDefault": {
+"description": "Whether version will be chosen by the server if a metastore service is created with a HiveMetastoreConfig that omits the version.",
+"type": "boolean"
+},
+"version": {
+"description": "The semantic version of the Hive Metastore software.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaLocationMetadata": {
+"description": "Metadata about the service in a location.",
+"id": "GoogleCloudMetastoreV1alphaLocationMetadata",
+"properties": {
+"customRegionMetadata": {
+"description": "Possible configurations supported if the current region is a custom region.",
+"items": {
+"$ref": "GoogleCloudMetastoreV1alphaCustomRegionMetadata"
+},
+"type": "array"
+},
+"multiRegionMetadata": {
+"$ref": "GoogleCloudMetastoreV1alphaMultiRegionMetadata",
+"description": "The multi-region metadata if the current region is a multi-region."
+},
+"supportedHiveMetastoreVersions": {
+"description": "The versions of Hive Metastore that can be used when creating a new metastore service in this location. The server guarantees that exactly one HiveMetastoreVersion in the list will set is_default.",
+"items": {
+"$ref": "GoogleCloudMetastoreV1alphaHiveMetastoreVersion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaMoveTableToDatabaseResponse": {
+"description": "Response message for DataprocMetastore.MoveTableToDatabase.",
+"id": "GoogleCloudMetastoreV1alphaMoveTableToDatabaseResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaMultiRegionMetadata": {
+"description": "The metadata for the multi-region that includes the constituent regions. The metadata is only populated if the region is multi-region. For single region or custom dual region, it will be empty.",
+"id": "GoogleCloudMetastoreV1alphaMultiRegionMetadata",
+"properties": {
+"constituentRegions": {
+"description": "The regions constituting the multi-region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaOperationMetadata": {
+"description": "Represents the metadata of a long-running operation.",
+"id": "GoogleCloudMetastoreV1alphaOperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the caller has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1alphaQueryMetadataResponse": {
+"description": "Response message for DataprocMetastore.QueryMetadata.",
+"id": "GoogleCloudMetastoreV1alphaQueryMetadataResponse",
+"properties": {
+"resultManifestUri": {
+"description": "The manifest URI is link to a JSON instance in Cloud Storage. This instance manifests immediately along with QueryMetadataResponse. The content of the URI is not retriable until the long-running operation query against the metadata finishes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaAlterMetadataResourceLocationResponse": {
+"description": "Response message for DataprocMetastore.AlterMetadataResourceLocation.",
+"id": "GoogleCloudMetastoreV1betaAlterMetadataResourceLocationResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaCancelMigrationResponse": {
+"description": "Response message for DataprocMetastore.CancelMigration.",
+"id": "GoogleCloudMetastoreV1betaCancelMigrationResponse",
+"properties": {
+"migrationExecution": {
+"description": "The relative resource name of the migration execution, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/migrationExecutions/{migration_execution_id}.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaCompleteMigrationResponse": {
+"description": "Response message for DataprocMetastore.CompleteMigration.",
+"id": "GoogleCloudMetastoreV1betaCompleteMigrationResponse",
+"properties": {
+"migrationExecution": {
+"description": "The relative resource name of the migration execution, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/migrationExecutions/{migration_execution_id}.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaCustomRegionMetadata": {
+"description": "Metadata about a custom region. This is only populated if the region is a custom region. For single/multi regions, it will be empty.",
+"id": "GoogleCloudMetastoreV1betaCustomRegionMetadata",
+"properties": {
+"optionalReadOnlyRegions": {
+"description": "The read-only regions for this custom region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"requiredReadWriteRegions": {
+"description": "The read-write regions for this custom region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"witnessRegion": {
+"description": "The Spanner witness region for this custom region.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaErrorDetails": {
+"description": "Error details in public error message for DataprocMetastore.QueryMetadata.",
+"id": "GoogleCloudMetastoreV1betaErrorDetails",
+"properties": {
+"details": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Additional structured details about this error.Keys define the failure items. Value describes the exception or details of the item.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaHiveMetastoreVersion": {
+"description": "A specification of a supported version of the Hive Metastore software.",
+"id": "GoogleCloudMetastoreV1betaHiveMetastoreVersion",
+"properties": {
+"isDefault": {
+"description": "Whether version will be chosen by the server if a metastore service is created with a HiveMetastoreConfig that omits the version.",
+"type": "boolean"
+},
+"version": {
+"description": "The semantic version of the Hive Metastore software.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaLocationMetadata": {
+"description": "Metadata about the service in a location.",
+"id": "GoogleCloudMetastoreV1betaLocationMetadata",
+"properties": {
+"customRegionMetadata": {
+"description": "Possible configurations supported if the current region is a custom region.",
+"items": {
+"$ref": "GoogleCloudMetastoreV1betaCustomRegionMetadata"
+},
+"type": "array"
+},
+"multiRegionMetadata": {
+"$ref": "GoogleCloudMetastoreV1betaMultiRegionMetadata",
+"description": "The multi-region metadata if the current region is a multi-region."
+},
+"supportedHiveMetastoreVersions": {
+"description": "The versions of Hive Metastore that can be used when creating a new metastore service in this location. The server guarantees that exactly one HiveMetastoreVersion in the list will set is_default.",
+"items": {
+"$ref": "GoogleCloudMetastoreV1betaHiveMetastoreVersion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaMoveTableToDatabaseResponse": {
+"description": "Response message for DataprocMetastore.MoveTableToDatabase.",
+"id": "GoogleCloudMetastoreV1betaMoveTableToDatabaseResponse",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaMultiRegionMetadata": {
+"description": "The metadata for the multi-region that includes the constituent regions. The metadata is only populated if the region is multi-region. For single region or custom dual region, it will be empty.",
+"id": "GoogleCloudMetastoreV1betaMultiRegionMetadata",
+"properties": {
+"constituentRegions": {
+"description": "The regions constituting the multi-region.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaOperationMetadata": {
+"description": "Represents the metadata of a long-running operation.",
+"id": "GoogleCloudMetastoreV1betaOperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the caller has requested cancellation of the operation. Operations that have successfully been cancelled have google.longrunning.Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV1betaQueryMetadataResponse": {
+"description": "Response message for DataprocMetastore.QueryMetadata.",
+"id": "GoogleCloudMetastoreV1betaQueryMetadataResponse",
+"properties": {
+"resultManifestUri": {
+"description": "The manifest URI is link to a JSON instance in Cloud Storage. This instance manifests immediately along with QueryMetadataResponse. The content of the URI is not retriable until the long-running operation query against the metadata finishes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaAlterMetadataResourceLocationRequest": {
+"description": "Request message for DataprocMetastore.AlterMetadataResourceLocation.",
+"id": "GoogleCloudMetastoreV2alphaAlterMetadataResourceLocationRequest",
+"properties": {
+"locationUri": {
+"description": "Required. The new location URI for the metadata resource.",
+"type": "string"
+},
+"resourceName": {
+"description": "Required. The relative metadata resource name in the following format.databases/{database_id} or databases/{database_id}/tables/{table_id} or databases/{database_id}/tables/{table_id}/partitions/{partition_id}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaAlterTablePropertiesRequest": {
+"description": "Request message for DataprocMetastore.AlterTableProperties.",
+"id": "GoogleCloudMetastoreV2alphaAlterTablePropertiesRequest",
+"properties": {
+"properties": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map that describes the desired values to mutate. If update_mask is empty, the properties will not update. Otherwise, the properties only alters the value whose associated paths exist in the update mask",
+"type": "object"
+},
+"tableName": {
+"description": "Required. The name of the table containing the properties you're altering in the following format.databases/{database_id}/tables/{table_id}",
+"type": "string"
+},
+"updateMask": {
+"description": "A field mask that specifies the metadata table properties that are overwritten by the update. Fields specified in the update_mask are relative to the resource (not to the full request). A field is overwritten if it is in the mask.For example, given the target properties: properties { a: 1 b: 2 } And an update properties: properties { a: 2 b: 3 c: 4 } then if the field mask is:paths: \"properties.b\", \"properties.c\"then the result will be: properties { a: 1 b: 3 c: 4 } ",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaAutoscalingConfig": {
+"description": "Represents the autoscaling configuration of a metastore service.",
+"id": "GoogleCloudMetastoreV2alphaAutoscalingConfig",
+"properties": {
+"autoscalingEnabled": {
+"description": "Optional. Whether or not autoscaling is enabled for this service.",
+"type": "boolean"
+},
+"autoscalingFactor": {
+"description": "Output only. The scaling factor of a service with autoscaling enabled.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"limitConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaLimitConfig",
+"description": "Optional. The LimitConfig of the service."
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaAuxiliaryVersionConfig": {
+"description": "Configuration information for the auxiliary service versions.",
+"id": "GoogleCloudMetastoreV2alphaAuxiliaryVersionConfig",
+"properties": {
+"configOverrides": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A mapping of Hive metastore configuration key-value pairs to apply to the auxiliary Hive metastore (configured in hive-site.xml) in addition to the primary version's overrides. If keys are present in both the auxiliary version's overrides and the primary version's overrides, the value from the auxiliary version's overrides takes precedence.",
+"type": "object"
+},
+"endpoints": {
+"description": "Output only. The list of endpoints used to access the auxiliary metastore service, includes version and region data.",
+"items": {
+"$ref": "GoogleCloudMetastoreV2alphaEndpoint"
+},
+"readOnly": true,
+"type": "array"
+},
+"version": {
+"description": "The Hive metastore version of the auxiliary service. It must be less than the primary Hive metastore service's version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaBackup": {
+"description": "The details of a backup resource.",
+"id": "GoogleCloudMetastoreV2alphaBackup",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the backup was started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "The description of the backup.",
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time when the backup finished creating.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Immutable. The relative resource name of the backup, in the following form:projects/{project_number}/locations/{location_id}/services/{service_id}/backups/{backup_id}",
+"type": "string"
+},
+"restoringServices": {
+"description": "Output only. Services that are restoring from the backup.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"serviceRevision": {
+"$ref": "GoogleCloudMetastoreV2alphaService",
+"description": "Output only. The revision of the service at the time of backup.",
+"readOnly": true
+},
+"state": {
+"description": "Output only. The current state of the backup.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"DELETING",
+"ACTIVE",
+"FAILED",
+"RESTORING"
+],
+"enumDescriptions": [
+"The state of the backup is unknown.",
+"The backup is being created.",
+"The backup is being deleted.",
+"The backup is active and ready to use.",
+"The backup failed.",
+"The backup is being restored."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaCancelMigrationRequest": {
+"description": "Request message for DataprocMetastore.CancelMigration.",
+"id": "GoogleCloudMetastoreV2alphaCancelMigrationRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaCdcConfig": {
+"description": "Configuration information to start the Change Data Capture (CDC) streams from customer database to backend database of Dataproc Metastore.",
+"id": "GoogleCloudMetastoreV2alphaCdcConfig",
+"properties": {
+"bucket": {
+"description": "Optional. The bucket to write the intermediate stream event data in. The bucket name must be without any prefix like \"gs://\". See the bucket naming requirements (https://cloud.google.com/storage/docs/buckets#naming). This field is optional. If not set, the Artifacts Cloud Storage bucket will be used.",
+"type": "string"
+},
+"password": {
+"description": "Required. Input only. The password for the user that Datastream service should use for the MySQL connection. This field is not returned on request.",
+"type": "string"
+},
+"reverseProxySubnet": {
+"description": "Required. The URL of the subnetwork resource to create the VM instance hosting the reverse proxy in. More context in https://cloud.google.com/datastream/docs/private-connectivity#reverse-csql-proxy The subnetwork should reside in the network provided in the request that Datastream will peer to and should be in the same region as Datastream, in the following format. projects/{project_id}/regions/{region_id}/subnetworks/{subnetwork_id}",
+"type": "string"
+},
+"rootPath": {
+"description": "Optional. The root path inside the Cloud Storage bucket. The stream event data will be written to this path. The default value is /migration.",
+"type": "string"
+},
+"subnetIpRange": {
+"description": "Required. A /29 CIDR IP range for peering with datastream.",
+"type": "string"
+},
+"username": {
+"description": "Required. The username that the Datastream service should use for the MySQL connection.",
+"type": "string"
+},
+"vpcNetwork": {
+"description": "Required. Fully qualified name of the Cloud SQL instance's VPC network or the shared VPC network that Datastream will peer to, in the following format: projects/{project_id}/locations/global/networks/{network_id}. More context in https://cloud.google.com/datastream/docs/network-connectivity-options#privateconnectivity",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaCloudSQLConnectionConfig": {
+"description": "Configuration information to establish customer database connection before the cutover phase of migration",
+"id": "GoogleCloudMetastoreV2alphaCloudSQLConnectionConfig",
+"properties": {
+"hiveDatabaseName": {
+"description": "Required. The hive database name.",
+"type": "string"
+},
+"instanceConnectionName": {
+"description": "Required. Cloud SQL database connection name (project_id:region:instance_name)",
+"type": "string"
+},
+"ipAddress": {
+"description": "Required. The private IP address of the Cloud SQL instance.",
+"type": "string"
+},
+"natSubnet": {
+"description": "Required. The relative resource name of the subnetwork to be used for Private Service Connect. Note that this cannot be a regular subnet and is used only for NAT. (https://cloud.google.com/vpc/docs/about-vpc-hosted-services#psc-subnets) This subnet is used to publish the SOCKS5 proxy service. The subnet size must be at least /29 and it should reside in a network through which the Cloud SQL instance is accessible. The resource name should be in the format, projects/{project_id}/regions/{region_id}/subnetworks/{subnetwork_id}",
+"type": "string"
+},
+"password": {
+"description": "Required. Input only. The password for the user that Dataproc Metastore service will be using to connect to the database. This field is not returned on request.",
+"type": "string"
+},
+"port": {
+"description": "Required. The network port of the database.",
+"format": "int32",
+"type": "integer"
+},
+"proxySubnet": {
+"description": "Required. The relative resource name of the subnetwork to deploy the SOCKS5 proxy service in. The subnetwork should reside in a network through which the Cloud SQL instance is accessible. The resource name should be in the format, projects/{project_id}/regions/{region_id}/subnetworks/{subnetwork_id}",
+"type": "string"
+},
+"username": {
+"description": "Required. The username that Dataproc Metastore service will use to connect to the database.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaCloudSQLMigrationConfig": {
+"description": "Configuration information for migrating from self-managed hive metastore on Google Cloud using Cloud SQL as the backend database to Dataproc Metastore.",
+"id": "GoogleCloudMetastoreV2alphaCloudSQLMigrationConfig",
+"properties": {
+"cdcConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaCdcConfig",
+"description": "Required. Configuration information to start the Change Data Capture (CDC) streams from customer database to backend database of Dataproc Metastore. Dataproc Metastore switches to using its backend database after the cutover phase of migration."
+},
+"cloudSqlConnectionConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaCloudSQLConnectionConfig",
+"description": "Required. Configuration information to establish customer database connection before the cutover phase of migration"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaCompleteMigrationRequest": {
+"description": "Request message for DataprocMetastore.CompleteMigration.",
+"id": "GoogleCloudMetastoreV2alphaCompleteMigrationRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaDataCatalogConfig": {
+"description": "Specifies how metastore metadata should be integrated with the Data Catalog service.",
+"id": "GoogleCloudMetastoreV2alphaDataCatalogConfig",
+"properties": {
+"enabled": {
+"description": "Optional. Defines whether the metastore metadata should be synced to Data Catalog. The default value is to disable syncing metastore metadata to Data Catalog.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaDatabaseDump": {
+"description": "A specification of the location of and metadata about a database dump from a relational database management system.",
+"id": "GoogleCloudMetastoreV2alphaDatabaseDump",
+"properties": {
+"gcsUri": {
+"description": "Required. A Cloud Storage object or folder URI that specifies the source from which to import metadata. It must begin with gs://.",
+"type": "string"
+},
+"type": {
+"description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"MYSQL",
+"AVRO"
+],
+"enumDescriptions": [
+"The type of the database dump is unknown.",
+"Database dump is a MySQL dump file.",
+"Database dump contains Avro files."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaEncryptionConfig": {
+"description": "Encryption settings for the service.",
+"id": "GoogleCloudMetastoreV2alphaEncryptionConfig",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaEndpoint": {
+"description": "An endpoint used to access the metastore service.",
+"id": "GoogleCloudMetastoreV2alphaEndpoint",
+"properties": {
+"endpointUri": {
+"description": "Output only. The URI of the endpoint used to access the metastore service.",
+"readOnly": true,
+"type": "string"
+},
+"region": {
+"description": "Output only. The region where the endpoint is located.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaExportMetadataRequest": {
+"description": "Request message for DataprocMetastore.ExportMetadata.",
+"id": "GoogleCloudMetastoreV2alphaExportMetadataRequest",
+"properties": {
+"databaseDumpType": {
+"description": "Optional. The type of the database dump. If unspecified, defaults to MYSQL.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"MYSQL",
+"AVRO"
+],
+"enumDescriptions": [
+"The type of the database dump is unknown.",
+"Database dump is a MySQL dump file.",
+"Database dump contains Avro files."
+],
+"type": "string"
+},
+"destinationGcsFolder": {
+"description": "A Cloud Storage URI of a folder, in the format gs:///. A sub-folder containing exported files will be created below it.",
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format). A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaHiveMetastoreConfig": {
+"description": "Specifies configuration information specific to running Hive metastore software as the metastore service.",
+"id": "GoogleCloudMetastoreV2alphaHiveMetastoreConfig",
+"properties": {
+"auxiliaryVersions": {
+"additionalProperties": {
+"$ref": "GoogleCloudMetastoreV2alphaAuxiliaryVersionConfig"
+},
+"description": "Optional. A mapping of Hive metastore version to the auxiliary version configuration. When specified, a secondary Hive metastore service is created along with the primary service. All auxiliary versions must be less than the service's primary version. The key is the auxiliary service name and it must match the regular expression a-z?. This means that the first character must be a lowercase letter, and all the following characters must be hyphens, lowercase letters, or digits, except the last character, which cannot be a hyphen.",
+"type": "object"
+},
+"configOverrides": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. A mapping of Hive metastore configuration key-value pairs to apply to the Hive metastore (configured in hive-site.xml). The mappings override system defaults (some keys cannot be overridden). These overrides are also applied to auxiliary versions and can be further customized in the auxiliary version's AuxiliaryVersionConfig.",
+"type": "object"
+},
+"endpointProtocol": {
+"description": "Optional. The protocol to use for the metastore service endpoint. If unspecified, defaults to GRPC.",
+"enum": [
+"ENDPOINT_PROTOCOL_UNSPECIFIED",
+"THRIFT",
+"GRPC"
+],
+"enumDescriptions": [
+"The protocol is not set.",
+"Use the legacy Apache Thrift protocol for the metastore service endpoint.",
+"Use the modernized gRPC protocol for the metastore service endpoint."
+],
+"type": "string"
+},
+"version": {
+"description": "Immutable. The Hive metastore schema version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaImportMetadataRequest": {
+"description": "Request message for DataprocMetastore.CreateMetadataImport.",
+"id": "GoogleCloudMetastoreV2alphaImportMetadataRequest",
+"properties": {
+"databaseDump": {
+"$ref": "GoogleCloudMetastoreV2alphaDatabaseDump",
+"description": "Immutable. A database dump from a pre-existing metastore's database."
+},
+"description": {
+"description": "Optional. The description of the metadata import.",
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format). A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaLatestBackup": {
+"description": "The details of the latest scheduled backup.",
+"id": "GoogleCloudMetastoreV2alphaLatestBackup",
+"properties": {
+"backupId": {
+"description": "Output only. The ID of an in-progress scheduled backup. Empty if no backup is in progress.",
+"readOnly": true,
+"type": "string"
+},
+"duration": {
+"description": "Output only. The duration of the backup completion.",
+"format": "google-duration",
+"readOnly": true,
+"type": "string"
+},
+"startTime": {
+"description": "Output only. The time when the backup was started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state of the backup.",
+"enum": [
+"STATE_UNSPECIFIED",
+"IN_PROGRESS",
+"SUCCEEDED",
+"FAILED"
+],
+"enumDescriptions": [
+"The state of the backup is unknown.",
+"The backup is in progress.",
+"The backup completed.",
+"The backup failed."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaLimitConfig": {
+"description": "Represents the autoscaling limit configuration of a metastore service.",
+"id": "GoogleCloudMetastoreV2alphaLimitConfig",
+"properties": {
+"maxScalingFactor": {
+"description": "Optional. The highest scaling factor that the service should be autoscaled to.",
+"format": "int32",
+"type": "integer"
+},
+"minScalingFactor": {
+"description": "Optional. The lowest scaling factor that the service should be autoscaled to.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaListBackupsResponse": {
+"description": "Response message for DataprocMetastore.ListBackups.",
+"id": "GoogleCloudMetastoreV2alphaListBackupsResponse",
+"properties": {
+"backups": {
+"description": "The backups of the specified service.",
+"items": {
+"$ref": "GoogleCloudMetastoreV2alphaBackup"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token that can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaListMigrationExecutionsResponse": {
+"description": "Response message for DataprocMetastore.ListMigrationExecutions.",
+"id": "GoogleCloudMetastoreV2alphaListMigrationExecutionsResponse",
+"properties": {
+"migrationExecutions": {
+"description": "The migration executions on the specified service.",
+"items": {
+"$ref": "GoogleCloudMetastoreV2alphaMigrationExecution"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token that can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaListServicesResponse": {
+"description": "Response message for DataprocMetastore.ListServices.",
+"id": "GoogleCloudMetastoreV2alphaListServicesResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that can be sent as page_token to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"services": {
+"description": "The services in the specified location.",
+"items": {
+"$ref": "GoogleCloudMetastoreV2alphaService"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaMetadataIntegration": {
+"description": "Specifies how metastore metadata should be integrated with external services.",
+"id": "GoogleCloudMetastoreV2alphaMetadataIntegration",
+"properties": {
+"dataCatalogConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaDataCatalogConfig",
+"description": "Optional. The integration config for the Data Catalog service."
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaMigrationExecution": {
+"description": "The details of a migration execution resource.",
+"id": "GoogleCloudMetastoreV2alphaMigrationExecution",
+"properties": {
+"cloudSqlMigrationConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaCloudSQLMigrationConfig",
+"description": "Configuration information specific to migrating from self-managed hive metastore on Google Cloud using Cloud SQL as the backend database to Dataproc Metastore."
+},
+"createTime": {
+"description": "Output only. The time when the migration execution was started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time when the migration execution finished.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The relative resource name of the migration execution, in the following form: projects/{project_number}/locations/{location_id}/services/{service_id}/migrationExecutions/{migration_execution_id}",
+"readOnly": true,
+"type": "string"
+},
+"phase": {
+"description": "Output only. The current phase of the migration execution.",
+"enum": [
+"PHASE_UNSPECIFIED",
+"REPLICATION",
+"CUTOVER"
+],
+"enumDescriptions": [
+"The phase of the migration execution is unknown.",
+"Replication phase refers to the migration phase when Dataproc Metastore is running a pipeline to replicate changes in the customer database to its backend database. During this phase, Dataproc Metastore uses the customer database as the hive metastore backend database.",
+"Cutover phase refers to the migration phase when Dataproc Metastore switches to using its own backend database. Migration enters this phase when customer is done migrating all their clusters/workloads to Dataproc Metastore and triggers CompleteMigration."
+],
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state of the migration execution.",
+"enum": [
+"STATE_UNSPECIFIED",
+"STARTING",
+"RUNNING",
+"CANCELLING",
+"AWAITING_USER_ACTION",
+"SUCCEEDED",
+"FAILED",
+"CANCELLED",
+"DELETING"
+],
+"enumDescriptions": [
+"The state of the migration execution is unknown.",
+"The migration execution is starting.",
+"The migration execution is running.",
+"The migration execution is in the process of being cancelled.",
+"The migration execution is awaiting user action.",
+"The migration execution has completed successfully.",
+"The migration execution has failed.",
+"The migration execution is cancelled.",
+"The migration execution is being deleted."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateMessage": {
+"description": "Output only. Additional information about the current state of the migration execution.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaMoveTableToDatabaseRequest": {
+"description": "Request message for DataprocMetastore.MoveTableToDatabase.",
+"id": "GoogleCloudMetastoreV2alphaMoveTableToDatabaseRequest",
+"properties": {
+"dbName": {
+"description": "Required. The name of the database where the table resides.",
+"type": "string"
+},
+"destinationDbName": {
+"description": "Required. The name of the database where the table should be moved.",
+"type": "string"
+},
+"tableName": {
+"description": "Required. The name of the table to be moved.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaQueryMetadataRequest": {
+"description": "Request message for DataprocMetastore.QueryMetadata.",
+"id": "GoogleCloudMetastoreV2alphaQueryMetadataRequest",
+"properties": {
+"query": {
+"description": "Required. A read-only SQL query to execute against the metadata database. The query cannot change or mutate the data.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaRemoveIamPolicyRequest": {
+"description": "Request message for DataprocMetastore.RemoveIamPolicy.",
+"id": "GoogleCloudMetastoreV2alphaRemoveIamPolicyRequest",
+"properties": {
+"asynchronous": {
+"description": "Optional. Removes IAM policy attached to database or table asynchronously when it is set. The default is false.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaRemoveIamPolicyResponse": {
+"description": "Response message for DataprocMetastore.RemoveIamPolicy.",
+"id": "GoogleCloudMetastoreV2alphaRemoveIamPolicyResponse",
+"properties": {
+"success": {
+"description": "True if the policy is successfully removed.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaRestoreServiceRequest": {
+"description": "Request message for DataprocMetastore.Restore.",
+"id": "GoogleCloudMetastoreV2alphaRestoreServiceRequest",
+"properties": {
+"backup": {
+"description": "Optional. The relative resource name of the metastore service backup to restore from, in the following form:projects/{project_id}/locations/{location_id}/services/{service_id}/backups/{backup_id}. Mutually exclusive with backup_location, and exactly one of the two must be set.",
+"type": "string"
+},
+"backupLocation": {
+"description": "Optional. A Cloud Storage URI specifying the location of the backup artifacts, namely - backup avro files under \"avro/\", backup_metastore.json and service.json, in the following form:gs://. Mutually exclusive with backup, and exactly one of the two must be set.",
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format). A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"type": "string"
+},
+"restoreType": {
+"description": "Optional. The type of restore. If unspecified, defaults to METADATA_ONLY.",
+"enum": [
+"RESTORE_TYPE_UNSPECIFIED",
+"FULL",
+"METADATA_ONLY"
+],
+"enumDescriptions": [
+"The restore type is unknown.",
+"The service's metadata and configuration are restored.",
+"Only the service's metadata is restored."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaScalingConfig": {
+"description": "Represents the scaling configuration of a metastore service.",
+"id": "GoogleCloudMetastoreV2alphaScalingConfig",
+"properties": {
+"autoscalingConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaAutoscalingConfig",
+"description": "Optional. The autoscaling configuration."
+},
+"scalingFactor": {
+"description": "Optional. Scaling factor from 1 to 5, increments of 1.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaScheduledBackup": {
+"description": "This specifies the configuration of scheduled backup.",
+"id": "GoogleCloudMetastoreV2alphaScheduledBackup",
+"properties": {
+"backupLocation": {
+"description": "Optional. A Cloud Storage URI of a folder, in the format gs:///. A sub-folder containing backup files will be stored below it.",
+"type": "string"
+},
+"cronSchedule": {
+"description": "Optional. The scheduled interval in Cron format, see https://en.wikipedia.org/wiki/Cron The default is empty: scheduled backup is not enabled. Must be specified to enable scheduled backups.",
+"type": "string"
+},
+"enabled": {
+"description": "Optional. Defines whether the scheduled backup is enabled. The default value is false.",
+"type": "boolean"
+},
+"latestBackup": {
+"$ref": "GoogleCloudMetastoreV2alphaLatestBackup",
+"description": "Output only. The details of the latest scheduled backup.",
+"readOnly": true
+},
+"nextScheduledTime": {
+"description": "Output only. The time when the next backups execution is scheduled to start.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"timeZone": {
+"description": "Optional. Specifies the time zone to be used when interpreting cron_schedule. Must be a time zone name from the time zone database (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g. America/Los_Angeles or Africa/Abidjan. If left unspecified, the default is UTC.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaService": {
+"description": "A managed metastore service that serves metadata queries.",
+"id": "GoogleCloudMetastoreV2alphaService",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the metastore service was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"encryptionConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaEncryptionConfig",
+"description": "Immutable. Information used to configure the Dataproc Metastore service to encrypt customer data at rest. Cannot be updated."
+},
+"endpoints": {
+"description": "Output only. The list of endpoints used to access the metastore service.",
+"items": {
+"$ref": "GoogleCloudMetastoreV2alphaEndpoint"
+},
+"readOnly": true,
+"type": "array"
+},
+"hiveMetastoreConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaHiveMetastoreConfig",
+"description": "Configuration information specific to running Hive metastore software as the metastore service."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "User-defined labels for the metastore service.",
+"type": "object"
+},
+"metadataIntegration": {
+"$ref": "GoogleCloudMetastoreV2alphaMetadataIntegration",
+"description": "Optional. The setting that defines how metastore metadata should be integrated with external services and systems."
+},
+"name": {
+"description": "Immutable. The relative resource name of the metastore service, in the following format:projects/{project_number}/locations/{location_id}/services/{service_id}.",
+"type": "string"
+},
+"scalingConfig": {
+"$ref": "GoogleCloudMetastoreV2alphaScalingConfig",
+"description": "Optional. Scaling configuration of the metastore service."
+},
+"scheduledBackup": {
+"$ref": "GoogleCloudMetastoreV2alphaScheduledBackup",
+"description": "Optional. The configuration of scheduled backup for the metastore service."
+},
+"state": {
+"description": "Output only. The current state of the metastore service.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"ACTIVE",
+"SUSPENDING",
+"SUSPENDED",
+"UPDATING",
+"DELETING",
+"ERROR",
+"MIGRATING"
+],
+"enumDescriptions": [
+"The state of the metastore service is unknown.",
+"The metastore service is in the process of being created.",
+"The metastore service is running and ready to serve queries.",
+"The metastore service is entering suspension. Its query-serving availability may cease unexpectedly.",
+"The metastore service is suspended and unable to serve queries.",
+"The metastore service is being updated. It remains usable but cannot accept additional update requests or be deleted at this time.",
+"The metastore service is undergoing deletion. It cannot be used.",
+"The metastore service has encountered an error and cannot be used. The metastore service should be deleted.",
+"The metastore service is processing a managed migration."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateMessage": {
+"description": "Output only. Additional information about the current state of the metastore service, if available.",
+"readOnly": true,
+"type": "string"
+},
+"uid": {
+"description": "Output only. The globally unique resource identifier of the metastore service.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the metastore service was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"warehouseGcsUri": {
+"description": "Required. A Cloud Storage URI (starting with gs://) that specifies the default warehouse directory of the Hive Metastore.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMetastoreV2alphaStartMigrationRequest": {
+"description": "Request message for DataprocMetastore.StartMigration.",
+"id": "GoogleCloudMetastoreV2alphaStartMigrationRequest",
+"properties": {
+"migrationExecution": {
+"$ref": "GoogleCloudMetastoreV2alphaMigrationExecution",
+"description": "Required. The configuration details for the migration."
+},
+"requestId": {
+"description": "Optional. A request ID. Specify a unique request ID to allow the server to ignore the request if it has completed. The server will ignore subsequent requests that provide a duplicate request ID for at least 60 minutes after the first request.For example, if an initial request times out, followed by another request with the same request ID, the server ignores the second request to prevent the creation of duplicate commitments.The request ID must be a valid UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier#Format) A zero UUID (00000000-0000-0000-0000-000000000000) is not supported.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningOperation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunningOperation",
+"properties": {
+"done": {
+"description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Dataproc Metastore API",
+"version": "v2alpha",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ml.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ml.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..7377cab2796738393d261ea9917270fc2210c9e5
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ml.v1.json
@@ -0,0 +1,3914 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/cloud-platform.read-only": {
+"description": "View your data across Google Cloud services and see the email address of your Google Account"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://ml.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Machine Learning Engine",
+"description": "An API to enable creating and using machine learning models.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/ml/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "ml:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://ml.mtls.googleapis.com/",
+"name": "ml",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"methods": {
+"explain": {
+"description": "Performs explanation on the data in the request. {% dynamic include \"/ai-platform/includes/___explain-request\" %} ",
+"flatPath": "v1/projects/{projectsId}:explain",
+"httpMethod": "POST",
+"id": "ml.projects.explain",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of a model or a version. Authorization: requires the `predict` permission on the specified resource.",
+"location": "path",
+"pattern": "^projects/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:explain",
+"request": {
+"$ref": "GoogleCloudMlV1__ExplainRequest"
+},
+"response": {
+"$ref": "GoogleApi__HttpBody"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getConfig": {
+"description": "Get the service account information associated with your project. You need this information in order to grant the service account permissions for the Google Cloud Storage location where you put your model training code for training the model with Google Cloud Machine Learning.",
+"flatPath": "v1/projects/{projectsId}:getConfig",
+"httpMethod": "GET",
+"id": "ml.projects.getConfig",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project name.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:getConfig",
+"response": {
+"$ref": "GoogleCloudMlV1__GetConfigResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"predict": {
+"description": "Performs online prediction on the data in the request. {% dynamic include \"/ai-platform/includes/___predict-request\" %} ",
+"flatPath": "v1/projects/{projectsId}:predict",
+"httpMethod": "POST",
+"id": "ml.projects.predict",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of a model or a version. Authorization: requires the `predict` permission on the specified resource.",
+"location": "path",
+"pattern": "^projects/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:predict",
+"request": {
+"$ref": "GoogleCloudMlV1__PredictRequest"
+},
+"response": {
+"$ref": "GoogleApi__HttpBody"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"jobs": {
+"methods": {
+"cancel": {
+"description": "Cancels a running job.",
+"flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:cancel",
+"httpMethod": "POST",
+"id": "ml.projects.jobs.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the job to cancel.",
+"location": "path",
+"pattern": "^projects/[^/]+/jobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"request": {
+"$ref": "GoogleCloudMlV1__CancelJobRequest"
+},
+"response": {
+"$ref": "GoogleProtobuf__Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a training or a batch prediction job.",
+"flatPath": "v1/projects/{projectsId}/jobs",
+"httpMethod": "POST",
+"id": "ml.projects.jobs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project name.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/jobs",
+"request": {
+"$ref": "GoogleCloudMlV1__Job"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Job"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Describes a job.",
+"flatPath": "v1/projects/{projectsId}/jobs/{jobsId}",
+"httpMethod": "GET",
+"id": "ml.projects.jobs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the job to get the description of.",
+"location": "path",
+"pattern": "^projects/[^/]+/jobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudMlV1__Job"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "ml.projects.jobs.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/jobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "GoogleIamV1__Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the jobs in the project. If there are no jobs that match the request parameters, the list request returns an empty response body: {}.",
+"flatPath": "v1/projects/{projectsId}/jobs",
+"httpMethod": "GET",
+"id": "ml.projects.jobs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Specifies the subset of jobs to retrieve. You can filter on the value of one or more attributes of the job object. For example, retrieve jobs with a job identifier that starts with 'census': gcloud ai-platform jobs list --filter='jobId:census*' List all failed jobs with names that start with 'rnn': gcloud ai-platform jobs list --filter='jobId:rnn* AND state:FAILED' For more examples, see the guide to monitoring jobs.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The number of jobs to retrieve per \"page\" of results. If there are more remaining results than this number, the response message will contain a valid value in the `next_page_token` field. The default value is 20, and the maximum page size is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token to request the next page of results. You get the token from the `next_page_token` field of the response from the previous call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project for which to list jobs.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/jobs",
+"response": {
+"$ref": "GoogleCloudMlV1__ListJobsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"patch": {
+"description": "Updates a specific job resource. Currently the only supported fields to update are `labels`.",
+"flatPath": "v1/projects/{projectsId}/jobs/{jobsId}",
+"httpMethod": "PATCH",
+"id": "ml.projects.jobs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The job name.",
+"location": "path",
+"pattern": "^projects/[^/]+/jobs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Specifies the path, relative to `Job`, of the field to update. To adopt etag mechanism, include `etag` field in the mask, and include the `etag` value in your job resource. For example, to change the labels of a job, the `update_mask` parameter would be specified as `labels`, `etag`, and the `PATCH` request body would specify the new value, as follows: { \"labels\": { \"owner\": \"Google\", \"color\": \"Blue\" } \"etag\": \"33a64df551425fcc55e4d42a148795d9f25f89d4\" } If `etag` matches the one on the server, the labels of the job will be replaced with the given ones, and the server end `etag` will be recalculated. Currently the only supported update masks are `labels` and `etag`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudMlV1__Job"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Job"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "ml.projects.jobs.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/jobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "GoogleIamV1__SetIamPolicyRequest"
+},
+"response": {
+"$ref": "GoogleIamV1__Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "ml.projects.jobs.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/jobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "GoogleIamV1__TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "GoogleIamV1__TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"locations": {
+"methods": {
+"get": {
+"description": "Get the complete list of CMLE capabilities in a location, along with their location-specific properties.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "ml.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudMlV1__Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"list": {
+"description": "List all locations that provides at least one type of CMLE capability.",
+"flatPath": "v1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "ml.projects.locations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The number of locations to retrieve per \"page\" of results. If there are more remaining results than this number, the response message will contain a valid value in the `next_page_token` field. The default value is 20, and the maximum page size is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token to request the next page of results. You get the token from the `next_page_token` field of the response from the previous call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project for which available locations are to be listed (since some locations might be whitelisted for specific projects).",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/locations",
+"response": {
+"$ref": "GoogleCloudMlV1__ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+}
+},
+"resources": {
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "ml.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"response": {
+"$ref": "GoogleProtobuf__Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "ml.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"studies": {
+"methods": {
+"create": {
+"description": "Creates a study.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies",
+"httpMethod": "POST",
+"id": "ml.projects.locations.studies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project and location that the study belongs to. Format: projects/{project}/locations/{location}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"studyId": {
+"description": "Required. The ID to use for the study, which will become the final component of the study's resource name.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/studies",
+"request": {
+"$ref": "GoogleCloudMlV1__Study"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Study"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a study.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}",
+"httpMethod": "DELETE",
+"id": "ml.projects.locations.studies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The study name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleProtobuf__Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a study.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}",
+"httpMethod": "GET",
+"id": "ml.projects.locations.studies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The study name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudMlV1__Study"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all the studies in a region for an associated project.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies",
+"httpMethod": "GET",
+"id": "ml.projects.locations.studies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project and location that the study belongs to. Format: projects/{project}/locations/{location}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/studies",
+"response": {
+"$ref": "GoogleCloudMlV1__ListStudiesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"trials": {
+"methods": {
+"addMeasurement": {
+"description": "Adds a measurement of the objective metrics to a trial. This measurement is assumed to have been taken before the trial is complete.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials/{trialsId}:addMeasurement",
+"httpMethod": "POST",
+"id": "ml.projects.locations.studies.trials.addMeasurement",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The trial name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+/trials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:addMeasurement",
+"request": {
+"$ref": "GoogleCloudMlV1__AddTrialMeasurementRequest"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"checkEarlyStoppingState": {
+"description": "Checks whether a trial should stop or not. Returns a long-running operation. When the operation is successful, it will contain a CheckTrialEarlyStoppingStateResponse.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials/{trialsId}:checkEarlyStoppingState",
+"httpMethod": "POST",
+"id": "ml.projects.locations.studies.trials.checkEarlyStoppingState",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The trial name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+/trials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:checkEarlyStoppingState",
+"request": {
+"$ref": "GoogleCloudMlV1__CheckTrialEarlyStoppingStateRequest"
+},
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"complete": {
+"description": "Marks a trial as complete.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials/{trialsId}:complete",
+"httpMethod": "POST",
+"id": "ml.projects.locations.studies.trials.complete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The trial name.metat",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+/trials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:complete",
+"request": {
+"$ref": "GoogleCloudMlV1__CompleteTrialRequest"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Adds a user provided trial to a study.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials",
+"httpMethod": "POST",
+"id": "ml.projects.locations.studies.trials.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the study that the trial belongs to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/trials",
+"request": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a trial.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials/{trialsId}",
+"httpMethod": "DELETE",
+"id": "ml.projects.locations.studies.trials.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The trial name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+/trials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleProtobuf__Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a trial.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials/{trialsId}",
+"httpMethod": "GET",
+"id": "ml.projects.locations.studies.trials.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The trial name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+/trials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the trials associated with a study.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials",
+"httpMethod": "GET",
+"id": "ml.projects.locations.studies.trials.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the study that the trial belongs to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/trials",
+"response": {
+"$ref": "GoogleCloudMlV1__ListTrialsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"listOptimalTrials": {
+"description": "Lists the pareto-optimal trials for multi-objective study or the optimal trials for single-objective study. The definition of pareto-optimal can be checked in wiki page. https://en.wikipedia.org/wiki/Pareto_efficiency",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials:listOptimalTrials",
+"httpMethod": "POST",
+"id": "ml.projects.locations.studies.trials.listOptimalTrials",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the study that the pareto-optimal trial belongs to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/trials:listOptimalTrials",
+"request": {
+"$ref": "GoogleCloudMlV1__ListOptimalTrialsRequest"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__ListOptimalTrialsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"stop": {
+"description": "Stops a trial.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials/{trialsId}:stop",
+"httpMethod": "POST",
+"id": "ml.projects.locations.studies.trials.stop",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The trial name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+/trials/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:stop",
+"request": {
+"$ref": "GoogleCloudMlV1__StopTrialRequest"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"suggest": {
+"description": "Adds one or more trials to a study, with parameter values suggested by AI Platform Vizier. Returns a long-running operation associated with the generation of trial suggestions. When this long-running operation succeeds, it will contain a SuggestTrialsResponse.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/studies/{studiesId}/trials:suggest",
+"httpMethod": "POST",
+"id": "ml.projects.locations.studies.trials.suggest",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the study that the trial belongs to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/studies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/trials:suggest",
+"request": {
+"$ref": "GoogleCloudMlV1__SuggestTrialsRequest"
+},
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+},
+"models": {
+"methods": {
+"create": {
+"description": "Creates a model which will later contain one or more versions. You must add at least one version before you can request predictions from the model. Add versions by calling projects.models.versions.create.",
+"flatPath": "v1/projects/{projectsId}/models",
+"httpMethod": "POST",
+"id": "ml.projects.models.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project name.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/models",
+"request": {
+"$ref": "GoogleCloudMlV1__Model"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Model"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a model. You can only delete a model if there are no versions in it. You can delete versions by calling projects.models.versions.delete.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}",
+"httpMethod": "DELETE",
+"id": "ml.projects.models.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the model.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets information about a model, including its name, the description (if set), and the default version (if at least one version of the model has been deployed).",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}",
+"httpMethod": "GET",
+"id": "ml.projects.models.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the model.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudMlV1__Model"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "ml.projects.models.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "GoogleIamV1__Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the models in a project. Each project can contain multiple models, and each model can have multiple versions. If there are no models that match the request parameters, the list request returns an empty response body: {}.",
+"flatPath": "v1/projects/{projectsId}/models",
+"httpMethod": "GET",
+"id": "ml.projects.models.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Specifies the subset of models to retrieve.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The number of models to retrieve per \"page\" of results. If there are more remaining results than this number, the response message will contain a valid value in the `next_page_token` field. The default value is 20, and the maximum page size is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token to request the next page of results. You get the token from the `next_page_token` field of the response from the previous call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the project whose models are to be listed.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/models",
+"response": {
+"$ref": "GoogleCloudMlV1__ListModelsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"patch": {
+"description": "Updates a specific model resource. Currently the only supported fields to update are `description` and `default_version.name`.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}",
+"httpMethod": "PATCH",
+"id": "ml.projects.models.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project name.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Specifies the path, relative to `Model`, of the field to update. For example, to change the description of a model to \"foo\" and set its default version to \"version_1\", the `update_mask` parameter would be specified as `description`, `default_version.name`, and the `PATCH` request body would specify the new value, as follows: { \"description\": \"foo\", \"defaultVersion\": { \"name\":\"version_1\" } } Currently the supported update masks are `description` and `default_version.name`.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudMlV1__Model"
+},
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "ml.projects.models.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "GoogleIamV1__SetIamPolicyRequest"
+},
+"response": {
+"$ref": "GoogleIamV1__Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "ml.projects.models.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "GoogleIamV1__TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "GoogleIamV1__TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"versions": {
+"methods": {
+"create": {
+"description": "Creates a new version of a model from a trained TensorFlow model. If the version created in the cloud by this call is the first deployed version of the specified model, it will be made the default version of the model. When you add a version to a model that already has one or more versions, the default version does not automatically change. If you want a new version to be the default, you must call projects.models.versions.setDefault.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions",
+"httpMethod": "POST",
+"id": "ml.projects.models.versions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The name of the model.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/versions",
+"request": {
+"$ref": "GoogleCloudMlV1__Version"
+},
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a model version. Each model can have multiple versions deployed and in use at any given time. Use this method to remove a single version. Note: You cannot delete the version that is set as the default version of the model unless it is the only remaining version.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}",
+"httpMethod": "DELETE",
+"id": "ml.projects.models.versions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the version. You can get the names of all the versions of a model by calling projects.models.versions.list.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets information about a model version. Models can have multiple versions. You can call projects.models.versions.list to get the same information that this method returns for all of the versions of a model.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}",
+"httpMethod": "GET",
+"id": "ml.projects.models.versions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the version.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleCloudMlV1__Version"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Gets basic information about all the versions of a model. If you expect that a model has many versions, or if you need to handle only a limited number of results at a time, you can request that the list be retrieved in batches (called pages). If there are no versions that match the request parameters, the list request returns an empty response body: {}.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions",
+"httpMethod": "GET",
+"id": "ml.projects.models.versions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Specifies the subset of versions to retrieve.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The number of versions to retrieve per \"page\" of results. If there are more remaining results than this number, the response message will contain a valid value in the `next_page_token` field. The default value is 20, and the maximum page size is 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token to request the next page of results. You get the token from the `next_page_token` field of the response from the previous call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The name of the model for which to list the version.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/versions",
+"response": {
+"$ref": "GoogleCloudMlV1__ListVersionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"patch": {
+"description": "Updates the specified Version resource. Currently the only update-able fields are `description`, `requestLoggingConfig`, `autoScaling.minNodes`, and `manualScaling.nodes`.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}",
+"httpMethod": "PATCH",
+"id": "ml.projects.models.versions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the model.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Specifies the path, relative to `Version`, of the field to update. Must be present and non-empty. For example, to change the description of a version to \"foo\", the `update_mask` parameter would be specified as `description`, and the `PATCH` request body would specify the new value, as follows: ``` { \"description\": \"foo\" } ``` Currently the only supported update mask fields are `description`, `requestLoggingConfig`, `autoScaling.minNodes`, and `manualScaling.nodes`. However, you can only update `manualScaling.nodes` if the version uses a [Compute Engine (N1) machine type](/ml-engine/docs/machine-types-online-prediction).",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GoogleCloudMlV1__Version"
+},
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setDefault": {
+"description": "Designates a version to be the default for the model. The default version is used for prediction requests made against the model that don't specify a version. The first version to be created for a model is automatically set as the default. You must make any subsequent changes to the default version setting manually using this method.",
+"flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}:setDefault",
+"httpMethod": "POST",
+"id": "ml.projects.models.versions.setDefault",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the version to make the default for the model. You can get the names of all the versions of a model by calling projects.models.versions.list.",
+"location": "path",
+"pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:setDefault",
+"request": {
+"$ref": "GoogleCloudMlV1__SetDefaultVersionRequest"
+},
+"response": {
+"$ref": "GoogleCloudMlV1__Version"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "ml.projects.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"response": {
+"$ref": "GoogleProtobuf__Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "ml.projects.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/operations",
+"httpMethod": "GET",
+"id": "ml.projects.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/operations",
+"response": {
+"$ref": "GoogleLongrunning__ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20241116",
+"rootUrl": "https://ml.googleapis.com/",
+"schemas": {
+"GoogleApi__HttpBody": {
+"description": "Message that represents an arbitrary HTTP body. It should only be used for payload formats that can't be represented as JSON, such as raw binary or an HTML page. This message can be used both in streaming and non-streaming API methods in the request as well as the response. It can be used as a top-level request field, which is convenient if one wants to extract parameters from either the URL or HTTP template into the request fields and also want access to the raw HTTP body. Example: message GetResourceRequest { // A unique request id. string request_id = 1; // The raw HTTP body is bound to this field. google.api.HttpBody http_body = 2; } service ResourceService { rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); } Example with streaming methods: service CaldavService { rpc GetCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); rpc UpdateCalendar(stream google.api.HttpBody) returns (stream google.api.HttpBody); } Use of this type only changes how the request and response bodies are handled, all other features will continue to work unchanged.",
+"id": "GoogleApi__HttpBody",
+"properties": {
+"contentType": {
+"description": "The HTTP Content-Type header value specifying the content type of the body.",
+"type": "string"
+},
+"data": {
+"description": "The HTTP request/response body as raw binary.",
+"format": "byte",
+"type": "string"
+},
+"extensions": {
+"description": "Application specific response metadata. Must be set in the first response for streaming APIs.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_AutomatedStoppingConfig_DecayCurveAutomatedStoppingConfig": {
+"id": "GoogleCloudMlV1_AutomatedStoppingConfig_DecayCurveAutomatedStoppingConfig",
+"properties": {
+"useElapsedTime": {
+"description": "If true, measurement.elapsed_time is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.steps will be used as the x-axis.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_AutomatedStoppingConfig_MedianAutomatedStoppingConfig": {
+"description": "The median automated stopping rule stops a pending trial if the trial's best objective_value is strictly below the median 'performance' of all completed trials reported up to the trial's last measurement. Currently, 'performance' refers to the running average of the objective values reported by the trial in each measurement.",
+"id": "GoogleCloudMlV1_AutomatedStoppingConfig_MedianAutomatedStoppingConfig",
+"properties": {
+"useElapsedTime": {
+"description": "If true, the median automated stopping rule applies to measurement.use_elapsed_time, which means the elapsed_time field of the current trial's latest measurement is used to compute the median objective value for each completed trial.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric": {
+"description": "An observed value of a metric.",
+"id": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric",
+"properties": {
+"objectiveValue": {
+"description": "The objective value at this training step.",
+"format": "double",
+"type": "number"
+},
+"trainingStep": {
+"description": "The global training step for this metric.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_Measurement_Metric": {
+"description": "A message representing a metric in the measurement.",
+"id": "GoogleCloudMlV1_Measurement_Metric",
+"properties": {
+"metric": {
+"description": "Required. Metric name.",
+"type": "string"
+},
+"value": {
+"description": "Required. The value for this metric.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfigParameterSpec_CategoricalValueSpec": {
+"id": "GoogleCloudMlV1_StudyConfigParameterSpec_CategoricalValueSpec",
+"properties": {
+"values": {
+"description": "Must be specified if type is `CATEGORICAL`. The list of possible categories.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfigParameterSpec_DiscreteValueSpec": {
+"id": "GoogleCloudMlV1_StudyConfigParameterSpec_DiscreteValueSpec",
+"properties": {
+"values": {
+"description": "Must be specified if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.",
+"items": {
+"format": "double",
+"type": "number"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfigParameterSpec_DoubleValueSpec": {
+"id": "GoogleCloudMlV1_StudyConfigParameterSpec_DoubleValueSpec",
+"properties": {
+"maxValue": {
+"description": "Must be specified if type is `DOUBLE`. Maximum value of the parameter.",
+"format": "double",
+"type": "number"
+},
+"minValue": {
+"description": "Must be specified if type is `DOUBLE`. Minimum value of the parameter.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfigParameterSpec_IntegerValueSpec": {
+"id": "GoogleCloudMlV1_StudyConfigParameterSpec_IntegerValueSpec",
+"properties": {
+"maxValue": {
+"description": "Must be specified if type is `INTEGER`. Maximum value of the parameter.",
+"format": "int64",
+"type": "string"
+},
+"minValue": {
+"description": "Must be specified if type is `INTEGER`. Minimum value of the parameter.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentCategoricalValueSpec": {
+"description": "Represents the spec to match categorical values from parent parameter.",
+"id": "GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentCategoricalValueSpec",
+"properties": {
+"values": {
+"description": "Matches values of the parent parameter with type 'CATEGORICAL'. All values must exist in `categorical_value_spec` of parent parameter.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentDiscreteValueSpec": {
+"description": "Represents the spec to match discrete values from parent parameter.",
+"id": "GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentDiscreteValueSpec",
+"properties": {
+"values": {
+"description": "Matches values of the parent parameter with type 'DISCRETE'. All values must exist in `discrete_value_spec` of parent parameter.",
+"items": {
+"format": "double",
+"type": "number"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentIntValueSpec": {
+"description": "Represents the spec to match integer values from parent parameter.",
+"id": "GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentIntValueSpec",
+"properties": {
+"values": {
+"description": "Matches values of the parent parameter with type 'INTEGER'. All values must lie in `integer_value_spec` of parent parameter.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfig_MetricSpec": {
+"description": "Represents a metric to optimize.",
+"id": "GoogleCloudMlV1_StudyConfig_MetricSpec",
+"properties": {
+"goal": {
+"description": "Required. The optimization goal of the metric.",
+"enum": [
+"GOAL_TYPE_UNSPECIFIED",
+"MAXIMIZE",
+"MINIMIZE"
+],
+"enumDescriptions": [
+"Goal Type will default to maximize.",
+"Maximize the goal metric.",
+"Minimize the goal metric."
+],
+"type": "string"
+},
+"metric": {
+"description": "Required. The name of the metric.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_StudyConfig_ParameterSpec": {
+"description": "Represents a single parameter to optimize.",
+"id": "GoogleCloudMlV1_StudyConfig_ParameterSpec",
+"properties": {
+"categoricalValueSpec": {
+"$ref": "GoogleCloudMlV1_StudyConfigParameterSpec_CategoricalValueSpec",
+"description": "The value spec for a 'CATEGORICAL' parameter."
+},
+"childParameterSpecs": {
+"description": "A child node is active if the parameter's value matches the child node's matching_parent_values. If two items in child_parameter_specs have the same name, they must have disjoint matching_parent_values.",
+"items": {
+"$ref": "GoogleCloudMlV1_StudyConfig_ParameterSpec"
+},
+"type": "array"
+},
+"discreteValueSpec": {
+"$ref": "GoogleCloudMlV1_StudyConfigParameterSpec_DiscreteValueSpec",
+"description": "The value spec for a 'DISCRETE' parameter."
+},
+"doubleValueSpec": {
+"$ref": "GoogleCloudMlV1_StudyConfigParameterSpec_DoubleValueSpec",
+"description": "The value spec for a 'DOUBLE' parameter."
+},
+"integerValueSpec": {
+"$ref": "GoogleCloudMlV1_StudyConfigParameterSpec_IntegerValueSpec",
+"description": "The value spec for an 'INTEGER' parameter."
+},
+"parameter": {
+"description": "Required. The parameter name must be unique amongst all ParameterSpecs.",
+"type": "string"
+},
+"parentCategoricalValues": {
+"$ref": "GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentCategoricalValueSpec"
+},
+"parentDiscreteValues": {
+"$ref": "GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentDiscreteValueSpec"
+},
+"parentIntValues": {
+"$ref": "GoogleCloudMlV1_StudyConfigParameterSpec_MatchingParentIntValueSpec"
+},
+"scaleType": {
+"description": "How the parameter should be scaled. Leave unset for categorical parameters.",
+"enum": [
+"SCALE_TYPE_UNSPECIFIED",
+"UNIT_LINEAR_SCALE",
+"UNIT_LOG_SCALE",
+"UNIT_REVERSE_LOG_SCALE"
+],
+"enumDescriptions": [
+"By default, no scaling is applied.",
+"Scales the feasible space to (0, 1) linearly.",
+"Scales the feasible space logarithmically to (0, 1). The entire feasible space must be strictly positive.",
+"Scales the feasible space \"reverse\" logarithmically to (0, 1). The result is that values close to the top of the feasible space are spread out more than points near the bottom. The entire feasible space must be strictly positive."
+],
+"type": "string"
+},
+"type": {
+"description": "Required. The type of the parameter.",
+"enum": [
+"PARAMETER_TYPE_UNSPECIFIED",
+"DOUBLE",
+"INTEGER",
+"CATEGORICAL",
+"DISCRETE"
+],
+"enumDescriptions": [
+"You must specify a valid type. Using this unspecified type will result in an error.",
+"Type for real-valued parameters.",
+"Type for integral parameters.",
+"The parameter is categorical, with a value chosen from the categories field.",
+"The parameter is real valued, with a fixed set of feasible points. If `type==DISCRETE`, feasible_points must be provided, and {`min_value`, `max_value`} will be ignored."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1_Trial_Parameter": {
+"description": "A message representing a parameter to be tuned. Contains the name of the parameter and the suggested value to use for this trial.",
+"id": "GoogleCloudMlV1_Trial_Parameter",
+"properties": {
+"floatValue": {
+"description": "Must be set if ParameterType is DOUBLE or DISCRETE.",
+"format": "double",
+"type": "number"
+},
+"intValue": {
+"description": "Must be set if ParameterType is INTEGER",
+"format": "int64",
+"type": "string"
+},
+"parameter": {
+"description": "The name of the parameter.",
+"type": "string"
+},
+"stringValue": {
+"description": "Must be set if ParameterTypeis CATEGORICAL",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__AcceleratorConfig": {
+"description": "Represents a hardware accelerator request config. Note that the AcceleratorConfig can be used in both Jobs and Versions. Learn more about [accelerators for training](/ml-engine/docs/using-gpus) and [accelerators for online prediction](/ml-engine/docs/machine-types-online-prediction#gpus).",
+"id": "GoogleCloudMlV1__AcceleratorConfig",
+"properties": {
+"count": {
+"description": "The number of accelerators to attach to each machine running the job.",
+"format": "int64",
+"type": "string"
+},
+"type": {
+"description": "The type of accelerator to use.",
+"enum": [
+"ACCELERATOR_TYPE_UNSPECIFIED",
+"NVIDIA_TESLA_K80",
+"NVIDIA_TESLA_P100",
+"NVIDIA_TESLA_V100",
+"NVIDIA_TESLA_P4",
+"NVIDIA_TESLA_T4",
+"NVIDIA_TESLA_A100",
+"TPU_V2",
+"TPU_V3",
+"TPU_V2_POD",
+"TPU_V3_POD",
+"TPU_V4_POD"
+],
+"enumDescriptions": [
+"Unspecified accelerator type. Default to no GPU.",
+"Nvidia Tesla K80 GPU.",
+"Nvidia Tesla P100 GPU.",
+"Nvidia V100 GPU.",
+"Nvidia Tesla P4 GPU.",
+"Nvidia T4 GPU.",
+"Nvidia A100 GPU.",
+"TPU v2.",
+"TPU v3.",
+"TPU v2 POD.",
+"TPU v3 POD.",
+"TPU v4 POD."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__AddTrialMeasurementRequest": {
+"description": "The request message for the AddTrialMeasurement service method.",
+"id": "GoogleCloudMlV1__AddTrialMeasurementRequest",
+"properties": {
+"measurement": {
+"$ref": "GoogleCloudMlV1__Measurement",
+"description": "Required. The measurement to be added to a trial."
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__AutoScaling": {
+"description": "Options for automatically scaling a model.",
+"id": "GoogleCloudMlV1__AutoScaling",
+"properties": {
+"maxNodes": {
+"description": "The maximum number of nodes to scale this model under load. The actual value will depend on resource quota and availability.",
+"format": "int32",
+"type": "integer"
+},
+"metrics": {
+"description": "MetricSpec contains the specifications to use to calculate the desired nodes count.",
+"items": {
+"$ref": "GoogleCloudMlV1__MetricSpec"
+},
+"type": "array"
+},
+"minNodes": {
+"description": "Optional. The minimum number of nodes to allocate for this model. These nodes are always up, starting from the time the model is deployed. Therefore, the cost of operating this model will be at least `rate` * `min_nodes` * number of hours since last billing cycle, where `rate` is the cost per node-hour as documented in the [pricing guide](/ml-engine/docs/pricing), even if no predictions are performed. There is additional cost for each prediction performed. Unlike manual scaling, if the load gets too heavy for the nodes that are up, the service will automatically add nodes to handle the increased load as well as scale back as traffic drops, always maintaining at least `min_nodes`. You will be charged for the time in which additional nodes are used. If `min_nodes` is not specified and AutoScaling is used with a [legacy (MLS1) machine type](/ml-engine/docs/machine-types-online-prediction), `min_nodes` defaults to 0, in which case, when traffic to a model stops (and after a cool-down period), nodes will be shut down and no charges will be incurred until traffic to the model resumes. If `min_nodes` is not specified and AutoScaling is used with a [Compute Engine (N1) machine type](/ml-engine/docs/machine-types-online-prediction), `min_nodes` defaults to 1. `min_nodes` must be at least 1 for use with a Compute Engine machine type. You can set `min_nodes` when creating the model version, and you can also update `min_nodes` for an existing version: update_body.json: { 'autoScaling': { 'minNodes': 5 } } HTTP request: PATCH https://ml.googleapis.com/v1/{name=projects/*/models/*/versions/*}?update_mask=autoScaling.minNodes -d @./update_body.json ",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__AutomatedStoppingConfig": {
+"description": "Configuration for Automated Early Stopping of Trials. If no implementation_config is set, automated early stopping will not be run.",
+"id": "GoogleCloudMlV1__AutomatedStoppingConfig",
+"properties": {
+"decayCurveStoppingConfig": {
+"$ref": "GoogleCloudMlV1_AutomatedStoppingConfig_DecayCurveAutomatedStoppingConfig"
+},
+"medianAutomatedStoppingConfig": {
+"$ref": "GoogleCloudMlV1_AutomatedStoppingConfig_MedianAutomatedStoppingConfig"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__BuiltInAlgorithmOutput": {
+"description": "Represents output related to a built-in algorithm Job.",
+"id": "GoogleCloudMlV1__BuiltInAlgorithmOutput",
+"properties": {
+"framework": {
+"description": "Framework on which the built-in algorithm was trained.",
+"type": "string"
+},
+"modelPath": {
+"description": "The Cloud Storage path to the `model/` directory where the training job saves the trained model. Only set for successful jobs that don't use hyperparameter tuning.",
+"type": "string"
+},
+"pythonVersion": {
+"description": "Python version on which the built-in algorithm was trained.",
+"type": "string"
+},
+"runtimeVersion": {
+"description": "AI Platform runtime version on which the built-in algorithm was trained.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__CancelJobRequest": {
+"description": "Request message for the CancelJob method.",
+"id": "GoogleCloudMlV1__CancelJobRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMlV1__Capability": {
+"id": "GoogleCloudMlV1__Capability",
+"properties": {
+"availableAccelerators": {
+"description": "Available accelerators for the capability.",
+"items": {
+"enum": [
+"ACCELERATOR_TYPE_UNSPECIFIED",
+"NVIDIA_TESLA_K80",
+"NVIDIA_TESLA_P100",
+"NVIDIA_TESLA_V100",
+"NVIDIA_TESLA_P4",
+"NVIDIA_TESLA_T4",
+"NVIDIA_TESLA_A100",
+"TPU_V2",
+"TPU_V3",
+"TPU_V2_POD",
+"TPU_V3_POD",
+"TPU_V4_POD"
+],
+"enumDescriptions": [
+"Unspecified accelerator type. Default to no GPU.",
+"Nvidia Tesla K80 GPU.",
+"Nvidia Tesla P100 GPU.",
+"Nvidia V100 GPU.",
+"Nvidia Tesla P4 GPU.",
+"Nvidia T4 GPU.",
+"Nvidia A100 GPU.",
+"TPU v2.",
+"TPU v3.",
+"TPU v2 POD.",
+"TPU v3 POD.",
+"TPU v4 POD."
+],
+"type": "string"
+},
+"type": "array"
+},
+"type": {
+"enum": [
+"TYPE_UNSPECIFIED",
+"TRAINING",
+"BATCH_PREDICTION",
+"ONLINE_PREDICTION"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__CheckTrialEarlyStoppingStateMetatdata": {
+"description": "This message will be placed in the metadata field of a google.longrunning.Operation associated with a CheckTrialEarlyStoppingState request.",
+"id": "GoogleCloudMlV1__CheckTrialEarlyStoppingStateMetatdata",
+"properties": {
+"createTime": {
+"description": "The time at which the operation was submitted.",
+"format": "google-datetime",
+"type": "string"
+},
+"study": {
+"description": "The name of the study that the trial belongs to.",
+"type": "string"
+},
+"trial": {
+"description": "The trial name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__CheckTrialEarlyStoppingStateRequest": {
+"description": "The request message for the CheckTrialEarlyStoppingState service method.",
+"id": "GoogleCloudMlV1__CheckTrialEarlyStoppingStateRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMlV1__CheckTrialEarlyStoppingStateResponse": {
+"description": "The message will be placed in the response field of a completed google.longrunning.Operation associated with a CheckTrialEarlyStoppingState request.",
+"id": "GoogleCloudMlV1__CheckTrialEarlyStoppingStateResponse",
+"properties": {
+"endTime": {
+"description": "The time at which operation processing completed.",
+"format": "google-datetime",
+"type": "string"
+},
+"shouldStop": {
+"description": "True if the Trial should stop.",
+"type": "boolean"
+},
+"startTime": {
+"description": "The time at which the operation was started.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__CompleteTrialRequest": {
+"description": "The request message for the CompleteTrial service method.",
+"id": "GoogleCloudMlV1__CompleteTrialRequest",
+"properties": {
+"finalMeasurement": {
+"$ref": "GoogleCloudMlV1__Measurement",
+"description": "Optional. If provided, it will be used as the completed trial's final_measurement; Otherwise, the service will auto-select a previously reported measurement as the final-measurement"
+},
+"infeasibleReason": {
+"description": "Optional. A human readable reason why the trial was infeasible. This should only be provided if `trial_infeasible` is true.",
+"type": "string"
+},
+"trialInfeasible": {
+"description": "Optional. True if the trial cannot be run with the given Parameter, and final_measurement will be ignored.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__Config": {
+"id": "GoogleCloudMlV1__Config",
+"properties": {
+"tpuServiceAccount": {
+"description": "The service account Cloud ML uses to run on TPU node.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ContainerPort": {
+"description": "Represents a network port in a single container. This message is a subset of the [Kubernetes ContainerPort v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#containerport-v1-core).",
+"id": "GoogleCloudMlV1__ContainerPort",
+"properties": {
+"containerPort": {
+"description": "Number of the port to expose on the container. This must be a valid port number: 0 < PORT_NUMBER < 65536.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ContainerSpec": {
+"description": "Specification of a custom container for serving predictions. This message is a subset of the [Kubernetes Container v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core).",
+"id": "GoogleCloudMlV1__ContainerSpec",
+"properties": {
+"args": {
+"description": "Immutable. Specifies arguments for the command that runs when the container starts. This overrides the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd). Specify this field as an array of executable and arguments, similar to a Docker `CMD`'s \"default parameters\" form. If you don't specify this field but do specify the command field, then the command from the `command` field runs without any additional arguments. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). If you don't specify this field and don't specify the `commmand` field, then the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#cmd) and `CMD` determine what runs based on their default behavior. See the [Docker documentation about how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `args` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"command": {
+"description": "Immutable. Specifies the command that runs when the container starts. This overrides the container's [`ENTRYPOINT`](https://docs.docker.com/engine/reference/builder/#entrypoint). Specify this field as an array of executable and arguments, similar to a Docker `ENTRYPOINT`'s \"exec\" form, not its \"shell\" form. If you do not specify this field, then the container's `ENTRYPOINT` runs, in conjunction with the args field or the container's [`CMD`](https://docs.docker.com/engine/reference/builder/#cmd), if either exists. If this field is not specified and the container does not have an `ENTRYPOINT`, then refer to the [Docker documentation about how `CMD` and `ENTRYPOINT` interact](https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact). If you specify this field, then you can also specify the `args` field to provide additional arguments for this command. However, if you specify this field, then the container's `CMD` is ignored. See the [Kubernetes documentation about how the `command` and `args` fields interact with a container's `ENTRYPOINT` and `CMD`](https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#notes). In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set in the env field. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $( VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME) This field corresponds to the `command` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core).",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"env": {
+"description": "Immutable. List of environment variables to set in the container. After the container starts running, code running in the container can read these environment variables. Additionally, the command and args fields can reference these variables. Later entries in this list can also reference earlier entries. For example, the following example sets the variable `VAR_2` to have the value `foo bar`: ```json [ { \"name\": \"VAR_1\", \"value\": \"foo\" }, { \"name\": \"VAR_2\", \"value\": \"$(VAR_1) bar\" } ] ``` If you switch the order of the variables in the example, then the expansion does not occur. This field corresponds to the `env` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core).",
+"items": {
+"$ref": "GoogleCloudMlV1__EnvVar"
+},
+"type": "array"
+},
+"image": {
+"description": "URI of the Docker image to be used as the custom container for serving predictions. This URI must identify [an image in Artifact Registry](/artifact-registry/docs/overview) and begin with the hostname `{REGION}-docker.pkg.dev`, where `{REGION}` is replaced by the region that matches AI Platform Prediction [regional endpoint](/ai-platform/prediction/docs/regional-endpoints) that you are using. For example, if you are using the `us-central1-ml.googleapis.com` endpoint, then this URI must begin with `us-central1-docker.pkg.dev`. To use a custom container, the [AI Platform Google-managed service account](/ai-platform/prediction/docs/custom-service-account#default) must have permission to pull (read) the Docker image at this URI. The AI Platform Google-managed service account has the following format: `service-{PROJECT_NUMBER}@cloud-ml.google.com.iam.gserviceaccount.com` {PROJECT_NUMBER} is replaced by your Google Cloud project number. By default, this service account has necessary permissions to pull an Artifact Registry image in the same Google Cloud project where you are using AI Platform Prediction. In this case, no configuration is necessary. If you want to use an image from a different Google Cloud project, learn how to [grant the Artifact Registry Reader (roles/artifactregistry.reader) role for a repository](/artifact-registry/docs/access-control#grant-repo) to your projet's AI Platform Google-managed service account. To learn about the requirements for the Docker image itself, read [Custom container requirements](/ai-platform/prediction/docs/custom-container-requirements).",
+"type": "string"
+},
+"ports": {
+"description": "Immutable. List of ports to expose from the container. AI Platform Prediction sends any prediction requests that it receives to the first port on this list. AI Platform Prediction also sends [liveness and health checks](/ai-platform/prediction/docs/custom-container-requirements#health) to this port. If you do not specify this field, it defaults to following value: ```json [ { \"containerPort\": 8080 } ] ``` AI Platform Prediction does not use ports other than the first one listed. This field corresponds to the `ports` field of the [Kubernetes Containers v1 core API](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core).",
+"items": {
+"$ref": "GoogleCloudMlV1__ContainerPort"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__DiskConfig": {
+"description": "Represents the config of disk options.",
+"id": "GoogleCloudMlV1__DiskConfig",
+"properties": {
+"bootDiskSizeGb": {
+"description": "Size in GB of the boot disk (default is 100GB).",
+"format": "int32",
+"type": "integer"
+},
+"bootDiskType": {
+"description": "Type of the boot disk (default is \"pd-ssd\"). Valid values: \"pd-ssd\" (Persistent Disk Solid State Drive) or \"pd-standard\" (Persistent Disk Hard Disk Drive).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__EncryptionConfig": {
+"description": "Represents a custom encryption key configuration that can be applied to a resource.",
+"id": "GoogleCloudMlV1__EncryptionConfig",
+"properties": {
+"kmsKeyName": {
+"description": "The Cloud KMS resource identifier of the customer-managed encryption key used to protect a resource, such as a training job. It has the following format: `projects/{PROJECT_ID}/locations/{REGION}/keyRings/{KEY_RING_NAME}/cryptoKeys/{KEY_NAME}`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__EnvVar": {
+"description": "Represents an environment variable to be made available in a container. This message is a subset of the [Kubernetes EnvVar v1 core specification](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#envvar-v1-core).",
+"id": "GoogleCloudMlV1__EnvVar",
+"properties": {
+"name": {
+"description": "Name of the environment variable. Must be a [valid C identifier](https://github.com/kubernetes/kubernetes/blob/v1.18.8/staging/src/k8s.io/apimachinery/pkg/util/validation/validation.go#L258) and must not begin with the prefix `AIP_`.",
+"type": "string"
+},
+"value": {
+"description": "Value of the environment variable. Defaults to an empty string. In this field, you can reference [environment variables set by AI Platform Prediction](/ai-platform/prediction/docs/custom-container-requirements#aip-variables) and environment variables set earlier in the same env field as where this message occurs. You cannot reference environment variables set in the Docker image. In order for environment variables to be expanded, reference them by using the following syntax: $(VARIABLE_NAME) Note that this differs from Bash variable expansion, which does not use parentheses. If a variable cannot be resolved, the reference in the input string is used unchanged. To avoid variable expansion, you can escape this syntax with `$$`; for example: $$(VARIABLE_NAME)",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ExplainRequest": {
+"description": "Request for explanations to be issued against a trained model.",
+"id": "GoogleCloudMlV1__ExplainRequest",
+"properties": {
+"httpBody": {
+"$ref": "GoogleApi__HttpBody",
+"description": "Required. The explanation request body."
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ExplanationConfig": {
+"description": "Message holding configuration options for explaining model predictions. There are three feature attribution methods supported for TensorFlow models: integrated gradients, sampled Shapley, and XRAI. [Learn more about feature attributions.](/ai-platform/prediction/docs/ai-explanations/overview)",
+"id": "GoogleCloudMlV1__ExplanationConfig",
+"properties": {
+"integratedGradientsAttribution": {
+"$ref": "GoogleCloudMlV1__IntegratedGradientsAttribution",
+"description": "Attributes credit by computing the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365"
+},
+"sampledShapleyAttribution": {
+"$ref": "GoogleCloudMlV1__SampledShapleyAttribution",
+"description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features."
+},
+"xraiAttribution": {
+"$ref": "GoogleCloudMlV1__XraiAttribution",
+"description": "Attributes credit by computing the XRAI taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Currently only implemented for models with natural image inputs."
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__GetConfigResponse": {
+"description": "Returns service account information associated with a project.",
+"id": "GoogleCloudMlV1__GetConfigResponse",
+"properties": {
+"config": {
+"$ref": "GoogleCloudMlV1__Config"
+},
+"serviceAccount": {
+"description": "The service account Cloud ML uses to access resources in the project.",
+"type": "string"
+},
+"serviceAccountProject": {
+"description": "The project number for `service_account`.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__HyperparameterOutput": {
+"description": "Represents the result of a single hyperparameter tuning trial from a training job. The TrainingOutput object that is returned on successful completion of a training job with hyperparameter tuning includes a list of HyperparameterOutput objects, one for each successful trial.",
+"id": "GoogleCloudMlV1__HyperparameterOutput",
+"properties": {
+"allMetrics": {
+"description": "All recorded object metrics for this trial. This field is not currently populated.",
+"items": {
+"$ref": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric"
+},
+"type": "array"
+},
+"builtInAlgorithmOutput": {
+"$ref": "GoogleCloudMlV1__BuiltInAlgorithmOutput",
+"description": "Details related to built-in algorithms jobs. Only set for trials of built-in algorithms jobs that have succeeded."
+},
+"endTime": {
+"description": "Output only. End time for the trial.",
+"format": "google-datetime",
+"type": "string"
+},
+"finalMetric": {
+"$ref": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric",
+"description": "The final objective metric seen for this trial."
+},
+"hyperparameters": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The hyperparameters given to this trial.",
+"type": "object"
+},
+"isTrialStoppedEarly": {
+"description": "True if the trial is stopped early.",
+"type": "boolean"
+},
+"startTime": {
+"description": "Output only. Start time for the trial.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "Output only. The detailed state of the trial.",
+"enum": [
+"STATE_UNSPECIFIED",
+"QUEUED",
+"PREPARING",
+"RUNNING",
+"SUCCEEDED",
+"FAILED",
+"CANCELLING",
+"CANCELLED"
+],
+"enumDescriptions": [
+"The job state is unspecified.",
+"The job has been just created and processing has not yet begun.",
+"The service is preparing to run the job.",
+"The job is in progress.",
+"The job completed successfully.",
+"The job failed. `error_message` should contain the details of the failure.",
+"The job is being cancelled. `error_message` should describe the reason for the cancellation.",
+"The job has been cancelled. `error_message` should describe the reason for the cancellation."
+],
+"type": "string"
+},
+"trialId": {
+"description": "The trial id for these results.",
+"type": "string"
+},
+"webAccessUris": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "URIs for accessing [interactive shells](https://cloud.google.com/ai-platform/training/docs/monitor-debug-interactive-shell) (one URI for each training node). Only available if this trial is part of a hyperparameter tuning job and the job's training_input.enable_web_access is `true`. The keys are names of each node in the training job; for example, `master-replica-0` for the master node, `worker-replica-0` for the first worker, and `ps-replica-0` for the first parameter server. The values are the URIs for each node's interactive shell.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__HyperparameterSpec": {
+"description": "Represents a set of hyperparameters to optimize.",
+"id": "GoogleCloudMlV1__HyperparameterSpec",
+"properties": {
+"algorithm": {
+"description": "Optional. The search algorithm specified for the hyperparameter tuning job. Uses the default AI Platform hyperparameter tuning algorithm if unspecified.",
+"enum": [
+"ALGORITHM_UNSPECIFIED",
+"GRID_SEARCH",
+"RANDOM_SEARCH"
+],
+"enumDescriptions": [
+"The default algorithm used by the hyperparameter tuning service. This is a Bayesian optimization algorithm.",
+"Simple grid search within the feasible space. To use grid search, all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`.",
+"Simple random search within the feasible space."
+],
+"type": "string"
+},
+"enableTrialEarlyStopping": {
+"description": "Optional. Indicates if the hyperparameter tuning job enables auto trial early stopping.",
+"type": "boolean"
+},
+"goal": {
+"description": "Required. The type of goal to use for tuning. Available types are `MAXIMIZE` and `MINIMIZE`. Defaults to `MAXIMIZE`.",
+"enum": [
+"GOAL_TYPE_UNSPECIFIED",
+"MAXIMIZE",
+"MINIMIZE"
+],
+"enumDescriptions": [
+"Goal Type will default to maximize.",
+"Maximize the goal metric.",
+"Minimize the goal metric."
+],
+"type": "string"
+},
+"hyperparameterMetricTag": {
+"description": "Optional. The TensorFlow summary tag name to use for optimizing trials. For current versions of TensorFlow, this tag name should exactly match what is shown in TensorBoard, including all scopes. For versions of TensorFlow prior to 0.12, this should be only the tag passed to tf.Summary. By default, \"training/hptuning/metric\" will be used.",
+"type": "string"
+},
+"maxFailedTrials": {
+"description": "Optional. The number of failed trials that need to be seen before failing the hyperparameter tuning job. You can specify this field to override the default failing criteria for AI Platform hyperparameter tuning jobs. Defaults to zero, which means the service decides when a hyperparameter job should fail.",
+"format": "int32",
+"type": "integer"
+},
+"maxParallelTrials": {
+"description": "Optional. The number of training trials to run concurrently. You can reduce the time it takes to perform hyperparameter tuning by adding trials in parallel. However, each trail only benefits from the information gained in completed trials. That means that a trial does not get access to the results of trials running at the same time, which could reduce the quality of the overall optimization. Each trial will use the same scale tier and machine types. Defaults to one.",
+"format": "int32",
+"type": "integer"
+},
+"maxTrials": {
+"description": "Optional. How many training trials should be attempted to optimize the specified hyperparameters. Defaults to one.",
+"format": "int32",
+"type": "integer"
+},
+"params": {
+"description": "Required. The set of parameters to tune.",
+"items": {
+"$ref": "GoogleCloudMlV1__ParameterSpec"
+},
+"type": "array"
+},
+"resumePreviousJobId": {
+"description": "Optional. The prior hyperparameter tuning job id that users hope to continue with. The job id will be used to find the corresponding vizier study guid and resume the study.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__IntegratedGradientsAttribution": {
+"description": "Attributes credit by computing the Aumann-Shapley value taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1703.01365",
+"id": "GoogleCloudMlV1__IntegratedGradientsAttribution",
+"properties": {
+"numIntegralSteps": {
+"description": "Number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__Job": {
+"description": "Represents a training or prediction job.",
+"id": "GoogleCloudMlV1__Job",
+"properties": {
+"createTime": {
+"description": "Output only. When the job was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"endTime": {
+"description": "Output only. When the job processing was completed.",
+"format": "google-datetime",
+"type": "string"
+},
+"errorMessage": {
+"description": "Output only. The details of a failure or a cancellation.",
+"type": "string"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a job from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform job updates in order to avoid race conditions: An `etag` is returned in the response to `GetJob`, and systems are expected to put that etag in the request to `UpdateJob` to ensure that their change will be applied to the same version of the job.",
+"format": "byte",
+"type": "string"
+},
+"jobId": {
+"description": "Required. The user-specified id of the job.",
+"type": "string"
+},
+"jobPosition": {
+"description": "Output only. It's only effect when the job is in QUEUED state. If it's positive, it indicates the job's position in the job scheduler. It's 0 when the job is already scheduled.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. One or more labels that you can add, to organize your jobs. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels.",
+"type": "object"
+},
+"predictionInput": {
+"$ref": "GoogleCloudMlV1__PredictionInput",
+"description": "Input parameters to create a prediction job."
+},
+"predictionOutput": {
+"$ref": "GoogleCloudMlV1__PredictionOutput",
+"description": "The current prediction job result."
+},
+"startTime": {
+"description": "Output only. When the job processing was started.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "Output only. The detailed state of a job.",
+"enum": [
+"STATE_UNSPECIFIED",
+"QUEUED",
+"PREPARING",
+"RUNNING",
+"SUCCEEDED",
+"FAILED",
+"CANCELLING",
+"CANCELLED"
+],
+"enumDescriptions": [
+"The job state is unspecified.",
+"The job has been just created and processing has not yet begun.",
+"The service is preparing to run the job.",
+"The job is in progress.",
+"The job completed successfully.",
+"The job failed. `error_message` should contain the details of the failure.",
+"The job is being cancelled. `error_message` should describe the reason for the cancellation.",
+"The job has been cancelled. `error_message` should describe the reason for the cancellation."
+],
+"type": "string"
+},
+"trainingInput": {
+"$ref": "GoogleCloudMlV1__TrainingInput",
+"description": "Input parameters to create a training job."
+},
+"trainingOutput": {
+"$ref": "GoogleCloudMlV1__TrainingOutput",
+"description": "The current training job result."
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ListJobsResponse": {
+"description": "Response message for the ListJobs method.",
+"id": "GoogleCloudMlV1__ListJobsResponse",
+"properties": {
+"jobs": {
+"description": "The list of jobs.",
+"items": {
+"$ref": "GoogleCloudMlV1__Job"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Optional. Pass this token as the `page_token` field of the request for a subsequent call.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ListLocationsResponse": {
+"id": "GoogleCloudMlV1__ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "Locations where at least one type of CMLE capability is available.",
+"items": {
+"$ref": "GoogleCloudMlV1__Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Optional. Pass this token as the `page_token` field of the request for a subsequent call.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ListModelsResponse": {
+"description": "Response message for the ListModels method.",
+"id": "GoogleCloudMlV1__ListModelsResponse",
+"properties": {
+"models": {
+"description": "The list of models.",
+"items": {
+"$ref": "GoogleCloudMlV1__Model"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Optional. Pass this token as the `page_token` field of the request for a subsequent call.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ListOptimalTrialsRequest": {
+"description": "The request message for the ListTrials service method.",
+"id": "GoogleCloudMlV1__ListOptimalTrialsRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMlV1__ListOptimalTrialsResponse": {
+"description": "The response message for the ListOptimalTrials method.",
+"id": "GoogleCloudMlV1__ListOptimalTrialsResponse",
+"properties": {
+"trials": {
+"description": "The pareto-optimal trials for multiple objective study or the optimal trial for single objective study. The definition of pareto-optimal can be checked in wiki page. https://en.wikipedia.org/wiki/Pareto_efficiency",
+"items": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ListStudiesResponse": {
+"id": "GoogleCloudMlV1__ListStudiesResponse",
+"properties": {
+"studies": {
+"description": "The studies associated with the project.",
+"items": {
+"$ref": "GoogleCloudMlV1__Study"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ListTrialsResponse": {
+"description": "The response message for the ListTrials method.",
+"id": "GoogleCloudMlV1__ListTrialsResponse",
+"properties": {
+"trials": {
+"description": "The trials associated with the study.",
+"items": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ListVersionsResponse": {
+"description": "Response message for the ListVersions method.",
+"id": "GoogleCloudMlV1__ListVersionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Optional. Pass this token as the `page_token` field of the request for a subsequent call.",
+"type": "string"
+},
+"versions": {
+"description": "The list of versions.",
+"items": {
+"$ref": "GoogleCloudMlV1__Version"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__Location": {
+"id": "GoogleCloudMlV1__Location",
+"properties": {
+"capabilities": {
+"description": "Capabilities available in the location.",
+"items": {
+"$ref": "GoogleCloudMlV1__Capability"
+},
+"type": "array"
+},
+"name": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ManualScaling": {
+"description": "Options for manually scaling a model.",
+"id": "GoogleCloudMlV1__ManualScaling",
+"properties": {
+"nodes": {
+"description": "The number of nodes to allocate for this model. These nodes are always up, starting from the time the model is deployed, so the cost of operating this model will be proportional to `nodes` * number of hours since last billing cycle plus the cost for each prediction performed.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__Measurement": {
+"description": "A message representing a measurement.",
+"id": "GoogleCloudMlV1__Measurement",
+"properties": {
+"elapsedTime": {
+"description": "Output only. Time that the trial has been running at the point of this measurement.",
+"format": "google-duration",
+"type": "string"
+},
+"metrics": {
+"description": "Provides a list of metrics that act as inputs into the objective function.",
+"items": {
+"$ref": "GoogleCloudMlV1_Measurement_Metric"
+},
+"type": "array"
+},
+"stepCount": {
+"description": "The number of steps a machine learning model has been trained for. Must be non-negative.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__MetricSpec": {
+"description": "MetricSpec contains the specifications to use to calculate the desired nodes count when autoscaling is enabled.",
+"id": "GoogleCloudMlV1__MetricSpec",
+"properties": {
+"name": {
+"description": "metric name.",
+"enum": [
+"METRIC_NAME_UNSPECIFIED",
+"CPU_USAGE",
+"GPU_DUTY_CYCLE"
+],
+"enumDescriptions": [
+"Unspecified MetricName.",
+"CPU usage.",
+"GPU duty cycle."
+],
+"type": "string"
+},
+"target": {
+"description": "Target specifies the target value for the given metric; once real metric deviates from the threshold by a certain percentage, the node count changes.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__Model": {
+"description": "Represents a machine learning solution. A model can have multiple versions, each of which is a deployed, trained model ready to receive prediction requests. The model itself is just a container.",
+"id": "GoogleCloudMlV1__Model",
+"properties": {
+"defaultVersion": {
+"$ref": "GoogleCloudMlV1__Version",
+"description": "Output only. The default version of the model. This version will be used to handle prediction requests that do not specify a version. You can change the default version by calling projects.models.versions.setDefault."
+},
+"description": {
+"description": "Optional. The description specified for the model when it was created.",
+"type": "string"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetModel`, and systems are expected to put that etag in the request to `UpdateModel` to ensure that their change will be applied to the model as intended.",
+"format": "byte",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. One or more labels that you can add, to organize your models. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models.",
+"type": "object"
+},
+"name": {
+"description": "Required. The name specified for the model when it was created. The model name must be unique within the project it is created in.",
+"type": "string"
+},
+"onlinePredictionConsoleLogging": {
+"description": "Optional. If true, online prediction nodes send `stderr` and `stdout` streams to Cloud Logging. These can be more verbose than the standard access logs (see `onlinePredictionLogging`) and can incur higher cost. However, they are helpful for debugging. Note that [logs may incur a cost](/stackdriver/pricing), especially if your project receives prediction requests at a high QPS. Estimate your costs before enabling this option. Default is false.",
+"type": "boolean"
+},
+"onlinePredictionLogging": {
+"description": "Optional. If true, online prediction access logs are sent to Cloud Logging. These logs are like standard server access logs, containing information like timestamp and latency for each request. Note that [logs may incur a cost](/stackdriver/pricing), especially if your project receives prediction requests at a high queries per second rate (QPS). Estimate your costs before enabling this option. Default is false.",
+"type": "boolean"
+},
+"regions": {
+"description": "Optional. The list of regions where the model is going to be deployed. Only one region per model is supported. Defaults to 'us-central1' if nothing is set. See the available regions for AI Platform services. Note: * No matter where a model is deployed, it can always be accessed by users from anywhere, both for online and batch prediction. * The region for a batch prediction job is set by the region field when submitting the batch prediction job and does not take its value from this field.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "GoogleCloudMlV1__OperationMetadata",
+"properties": {
+"createTime": {
+"description": "The time the operation was submitted.",
+"format": "google-datetime",
+"type": "string"
+},
+"endTime": {
+"description": "The time operation processing completed.",
+"format": "google-datetime",
+"type": "string"
+},
+"isCancellationRequested": {
+"description": "Indicates whether a request to cancel this operation has been made.",
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The user labels, inherited from the model or the model version being operated on.",
+"type": "object"
+},
+"modelName": {
+"description": "Contains the name of the model associated with the operation.",
+"type": "string"
+},
+"operationType": {
+"description": "The operation type.",
+"enum": [
+"OPERATION_TYPE_UNSPECIFIED",
+"CREATE_VERSION",
+"DELETE_VERSION",
+"DELETE_MODEL",
+"UPDATE_MODEL",
+"UPDATE_VERSION",
+"UPDATE_CONFIG"
+],
+"enumDescriptions": [
+"Unspecified operation type.",
+"An operation to create a new version.",
+"An operation to delete an existing version.",
+"An operation to delete an existing model.",
+"An operation to update an existing model.",
+"An operation to update an existing version.",
+"An operation to update project configuration."
+],
+"type": "string"
+},
+"projectNumber": {
+"description": "Contains the project number associated with the operation.",
+"format": "int64",
+"type": "string"
+},
+"startTime": {
+"description": "The time operation processing started.",
+"format": "google-datetime",
+"type": "string"
+},
+"version": {
+"$ref": "GoogleCloudMlV1__Version",
+"description": "Contains the version associated with the operation."
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ParameterSpec": {
+"description": "Represents a single hyperparameter to optimize.",
+"id": "GoogleCloudMlV1__ParameterSpec",
+"properties": {
+"categoricalValues": {
+"description": "Required if type is `CATEGORICAL`. The list of possible categories.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"discreteValues": {
+"description": "Required if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.",
+"items": {
+"format": "double",
+"type": "number"
+},
+"type": "array"
+},
+"maxValue": {
+"description": "Required if type is `DOUBLE` or `INTEGER`. This field should be unset if type is `CATEGORICAL`. This value should be integers if type is `INTEGER`.",
+"format": "double",
+"type": "number"
+},
+"minValue": {
+"description": "Required if type is `DOUBLE` or `INTEGER`. This field should be unset if type is `CATEGORICAL`. This value should be integers if type is INTEGER.",
+"format": "double",
+"type": "number"
+},
+"parameterName": {
+"description": "Required. The parameter name must be unique amongst all ParameterConfigs in a HyperparameterSpec message. E.g., \"learning_rate\".",
+"type": "string"
+},
+"scaleType": {
+"description": "Optional. How the parameter should be scaled to the hypercube. Leave unset for categorical parameters. Some kind of scaling is strongly recommended for real or integral parameters (e.g., `UNIT_LINEAR_SCALE`).",
+"enum": [
+"NONE",
+"UNIT_LINEAR_SCALE",
+"UNIT_LOG_SCALE",
+"UNIT_REVERSE_LOG_SCALE"
+],
+"enumDescriptions": [
+"By default, no scaling is applied.",
+"Scales the feasible space to (0, 1) linearly.",
+"Scales the feasible space logarithmically to (0, 1). The entire feasible space must be strictly positive.",
+"Scales the feasible space \"reverse\" logarithmically to (0, 1). The result is that values close to the top of the feasible space are spread out more than points near the bottom. The entire feasible space must be strictly positive."
+],
+"type": "string"
+},
+"type": {
+"description": "Required. The type of the parameter.",
+"enum": [
+"PARAMETER_TYPE_UNSPECIFIED",
+"DOUBLE",
+"INTEGER",
+"CATEGORICAL",
+"DISCRETE"
+],
+"enumDescriptions": [
+"You must specify a valid type. Using this unspecified type will result in an error.",
+"Type for real-valued parameters.",
+"Type for integral parameters.",
+"The parameter is categorical, with a value chosen from the categories field.",
+"The parameter is real valued, with a fixed set of feasible points. If `type==DISCRETE`, feasible_points must be provided, and {`min_value`, `max_value`} will be ignored."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__PredictRequest": {
+"description": "Request for predictions to be issued against a trained model.",
+"id": "GoogleCloudMlV1__PredictRequest",
+"properties": {
+"httpBody": {
+"$ref": "GoogleApi__HttpBody",
+"description": " Required. The prediction request body. Refer to the [request body details section](#request-body-details) for more information on how to structure your request."
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__PredictionInput": {
+"description": "Represents input parameters for a prediction job.",
+"id": "GoogleCloudMlV1__PredictionInput",
+"properties": {
+"batchSize": {
+"description": "Optional. Number of records per batch, defaults to 64. The service will buffer batch_size number of records in memory before invoking one Tensorflow prediction call internally. So take the record size and memory available into consideration when setting this parameter.",
+"format": "int64",
+"type": "string"
+},
+"dataFormat": {
+"description": "Required. The format of the input data files.",
+"enum": [
+"DATA_FORMAT_UNSPECIFIED",
+"JSON",
+"TEXT",
+"TF_RECORD",
+"TF_RECORD_GZIP",
+"CSV"
+],
+"enumDescriptions": [
+"Unspecified format.",
+"Each line of the file is a JSON dictionary representing one record.",
+"Deprecated. Use JSON instead.",
+"The source file is a TFRecord file. Currently available only for input data.",
+"The source file is a GZIP-compressed TFRecord file. Currently available only for input data.",
+"Values are comma-separated rows, with keys in a separate file. Currently available only for output data."
+],
+"type": "string"
+},
+"inputPaths": {
+"description": "Required. The Cloud Storage location of the input data files. May contain wildcards.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"maxWorkerCount": {
+"description": "Optional. The maximum number of workers to be used for parallel processing. Defaults to 10 if not specified.",
+"format": "int64",
+"type": "string"
+},
+"modelName": {
+"description": "Use this field if you want to use the default version for the specified model. The string must use the following format: `\"projects/YOUR_PROJECT/models/YOUR_MODEL\"`",
+"type": "string"
+},
+"outputDataFormat": {
+"description": "Optional. Format of the output data files, defaults to JSON.",
+"enum": [
+"DATA_FORMAT_UNSPECIFIED",
+"JSON",
+"TEXT",
+"TF_RECORD",
+"TF_RECORD_GZIP",
+"CSV"
+],
+"enumDescriptions": [
+"Unspecified format.",
+"Each line of the file is a JSON dictionary representing one record.",
+"Deprecated. Use JSON instead.",
+"The source file is a TFRecord file. Currently available only for input data.",
+"The source file is a GZIP-compressed TFRecord file. Currently available only for input data.",
+"Values are comma-separated rows, with keys in a separate file. Currently available only for output data."
+],
+"type": "string"
+},
+"outputPath": {
+"description": "Required. The output Google Cloud Storage location.",
+"type": "string"
+},
+"region": {
+"description": "Required. The Google Compute Engine region to run the prediction job in. See the available regions for AI Platform services.",
+"type": "string"
+},
+"runtimeVersion": {
+"description": "Optional. The AI Platform runtime version to use for this batch prediction. If not set, AI Platform will pick the runtime version used during the CreateVersion request for this model version, or choose the latest stable version when model version information is not available such as when the model is specified by uri.",
+"type": "string"
+},
+"signatureName": {
+"description": "Optional. The name of the signature defined in the SavedModel to use for this job. Please refer to [SavedModel](https://tensorflow.github.io/serving/serving_basic.html) for information about how to use signatures. Defaults to [DEFAULT_SERVING_SIGNATURE_DEF_KEY](https://www.tensorflow.org/api_docs/python/tf/saved_model/signature_constants) , which is \"serving_default\".",
+"type": "string"
+},
+"uri": {
+"description": "Use this field if you want to specify a Google Cloud Storage path for the model to use.",
+"type": "string"
+},
+"versionName": {
+"description": "Use this field if you want to specify a version of the model to use. The string is formatted the same way as `model_version`, with the addition of the version information: `\"projects/YOUR_PROJECT/models/YOUR_MODEL/versions/YOUR_VERSION\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__PredictionOutput": {
+"description": "Represents results of a prediction job.",
+"id": "GoogleCloudMlV1__PredictionOutput",
+"properties": {
+"errorCount": {
+"description": "The number of data instances which resulted in errors.",
+"format": "int64",
+"type": "string"
+},
+"nodeHours": {
+"description": "Node hours used by the batch prediction job.",
+"format": "double",
+"type": "number"
+},
+"outputPath": {
+"description": "The output Google Cloud Storage location provided at the job creation time.",
+"type": "string"
+},
+"predictionCount": {
+"description": "The number of generated predictions.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__ReplicaConfig": {
+"description": "Represents the configuration for a replica in a cluster.",
+"id": "GoogleCloudMlV1__ReplicaConfig",
+"properties": {
+"acceleratorConfig": {
+"$ref": "GoogleCloudMlV1__AcceleratorConfig",
+"description": "Represents the type and number of accelerators used by the replica. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu)"
+},
+"containerArgs": {
+"description": "Arguments to the entrypoint command. The following rules apply for container_command and container_args: - If you do not supply command or args: The defaults defined in the Docker image are used. - If you supply a command but no args: The default EntryPoint and the default Cmd defined in the Docker image are ignored. Your command is run without any arguments. - If you supply only args: The default Entrypoint defined in the Docker image is run with the args that you supplied. - If you supply a command and args: The default Entrypoint and the default Cmd defined in the Docker image are ignored. Your command is run with your args. It cannot be set if custom container image is not provided. Note that this field and [TrainingInput.args] are mutually exclusive, i.e., both cannot be set at the same time.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"containerCommand": {
+"description": "The command with which the replica's custom container is run. If provided, it will override default ENTRYPOINT of the docker image. If not provided, the docker image's ENTRYPOINT is used. It cannot be set if custom container image is not provided. Note that this field and [TrainingInput.args] are mutually exclusive, i.e., both cannot be set at the same time.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"diskConfig": {
+"$ref": "GoogleCloudMlV1__DiskConfig",
+"description": "Represents the configuration of disk options."
+},
+"imageUri": {
+"description": "The Docker image to run on the replica. This image must be in Container Registry. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers).",
+"type": "string"
+},
+"tpuTfVersion": {
+"description": "The AI Platform runtime version that includes a TensorFlow version matching the one used in the custom container. This field is required if the replica is a TPU worker that uses a custom container. Otherwise, do not specify this field. This must be a [runtime version that currently supports training with TPUs](/ml-engine/docs/tensorflow/runtime-version-list#tpu-support). Note that the version of TensorFlow included in a runtime version may differ from the numbering of the runtime version itself, because it may have a different [patch version](https://www.tensorflow.org/guide/version_compat#semantic_versioning_20). In this field, you must specify the runtime version (TensorFlow minor version). For example, if your custom container runs TensorFlow `1.x.y`, specify `1.x`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__RequestLoggingConfig": {
+"description": "Configuration for logging request-response pairs to a BigQuery table. Online prediction requests to a model version and the responses to these requests are converted to raw strings and saved to the specified BigQuery table. Logging is constrained by [BigQuery quotas and limits](/bigquery/quotas). If your project exceeds BigQuery quotas or limits, AI Platform Prediction does not log request-response pairs, but it continues to serve predictions. If you are using [continuous evaluation](/ml-engine/docs/continuous-evaluation/), you do not need to specify this configuration manually. Setting up continuous evaluation automatically enables logging of request-response pairs.",
+"id": "GoogleCloudMlV1__RequestLoggingConfig",
+"properties": {
+"bigqueryTableName": {
+"description": "Required. Fully qualified BigQuery table name in the following format: \" project_id.dataset_name.table_name\" The specified table must already exist, and the \"Cloud ML Service Agent\" for your project must have permission to write to it. The table must have the following [schema](/bigquery/docs/schemas): Field nameType Mode model STRING REQUIRED model_version STRING REQUIRED time TIMESTAMP REQUIRED raw_data STRING REQUIRED raw_prediction STRING NULLABLE groundtruth STRING NULLABLE ",
+"type": "string"
+},
+"samplingPercentage": {
+"description": "Percentage of requests to be logged, expressed as a fraction from 0 to 1. For example, if you want to log 10% of requests, enter `0.1`. The sampling window is the lifetime of the model version. Defaults to 0.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__RouteMap": {
+"description": "Specifies HTTP paths served by a custom container. AI Platform Prediction sends requests to these paths on the container; the custom container must run an HTTP server that responds to these requests with appropriate responses. Read [Custom container requirements](/ai-platform/prediction/docs/custom-container-requirements) for details on how to create your container image to meet these requirements.",
+"id": "GoogleCloudMlV1__RouteMap",
+"properties": {
+"health": {
+"description": "HTTP path on the container to send health checkss to. AI Platform Prediction intermittently sends GET requests to this path on the container's IP address and port to check that the container is healthy. Read more about [health checks](/ai-platform/prediction/docs/custom-container-requirements#checks). For example, if you set this field to `/bar`, then AI Platform Prediction intermittently sends a GET request to the `/bar` path on the port of your container specified by the first value of Version.container.ports. If you don't specify this field, it defaults to the following value: /v1/models/ MODEL/versions/VERSION The placeholders in this value are replaced as follows: * MODEL: The name of the parent Model. This does not include the \"projects/PROJECT_ID/models/\" prefix that the API returns in output; it is the bare model name, as provided to projects.models.create. * VERSION: The name of the model version. This does not include the \"projects/PROJECT_ID /models/MODEL/versions/\" prefix that the API returns in output; it is the bare version name, as provided to projects.models.versions.create.",
+"type": "string"
+},
+"predict": {
+"description": "HTTP path on the container to send prediction requests to. AI Platform Prediction forwards requests sent using projects.predict to this path on the container's IP address and port. AI Platform Prediction then returns the container's response in the API response. For example, if you set this field to `/foo`, then when AI Platform Prediction receives a prediction request, it forwards the request body in a POST request to the `/foo` path on the port of your container specified by the first value of Version.container.ports. If you don't specify this field, it defaults to the following value: /v1/models/MODEL/versions/VERSION:predict The placeholders in this value are replaced as follows: * MODEL: The name of the parent Model. This does not include the \"projects/PROJECT_ID/models/\" prefix that the API returns in output; it is the bare model name, as provided to projects.models.create. * VERSION: The name of the model version. This does not include the \"projects/PROJECT_ID/models/MODEL/versions/\" prefix that the API returns in output; it is the bare version name, as provided to projects.models.versions.create.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__SampledShapleyAttribution": {
+"description": "An attribution method that approximates Shapley values for features that contribute to the label being predicted. A sampling strategy is used to approximate the value rather than considering all subsets of features.",
+"id": "GoogleCloudMlV1__SampledShapleyAttribution",
+"properties": {
+"numPaths": {
+"description": "The number of feature permutations to consider when approximating the Shapley values.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__Scheduling": {
+"description": "All parameters related to scheduling of training jobs.",
+"id": "GoogleCloudMlV1__Scheduling",
+"properties": {
+"maxRunningTime": {
+"description": "Optional. The maximum job running time, expressed in seconds. The field can contain up to nine fractional digits, terminated by `s`. If not specified, this field defaults to `604800s` (seven days). If the training job is still running after this duration, AI Platform Training cancels it. The duration is measured from when the job enters the `RUNNING` state; therefore it does not overlap with the duration limited by Scheduling.max_wait_time. For example, if you want to ensure your job runs for no more than 2 hours, set this field to `7200s` (2 hours * 60 minutes / hour * 60 seconds / minute). If you submit your training job using the `gcloud` tool, you can [specify this field in a `config.yaml` file](/ai-platform/training/docs/training-jobs#formatting_your_configuration_parameters). For example: ```yaml trainingInput: scheduling: maxRunningTime: 7200s ```",
+"format": "google-duration",
+"type": "string"
+},
+"maxWaitTime": {
+"description": "Optional. The maximum job wait time, expressed in seconds. The field can contain up to nine fractional digits, terminated by `s`. If not specified, there is no limit to the wait time. The minimum for this field is `1800s` (30 minutes). If the training job has not entered the `RUNNING` state after this duration, AI Platform Training cancels it. After the job begins running, it can no longer be cancelled due to the maximum wait time. Therefore the duration limited by this field does not overlap with the duration limited by Scheduling.max_running_time. For example, if the job temporarily stops running and retries due to a [VM restart](/ai-platform/training/docs/overview#restarts), this cannot lead to a maximum wait time cancellation. However, independently of this constraint, AI Platform Training might stop a job if there are too many retries due to exhausted resources in a region. The following example describes how you might use this field: To cancel your job if it doesn't start running within 1 hour, set this field to `3600s` (1 hour * 60 minutes / hour * 60 seconds / minute). If the job is still in the `QUEUED` or `PREPARING` state after an hour of waiting, AI Platform Training cancels the job. If you submit your training job using the `gcloud` tool, you can [specify this field in a `config.yaml` file](/ai-platform/training/docs/training-jobs#formatting_your_configuration_parameters). For example: ```yaml trainingInput: scheduling: maxWaitTime: 3600s ```",
+"format": "google-duration",
+"type": "string"
+},
+"priority": {
+"description": "Optional. Job scheduling will be based on this priority, which in the range [0, 1000]. The bigger the number, the higher the priority. Default to 0 if not set. If there are multiple jobs requesting same type of accelerators, the high priority job will be scheduled prior to ones with low priority.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__SetDefaultVersionRequest": {
+"description": "Request message for the SetDefaultVersion request.",
+"id": "GoogleCloudMlV1__SetDefaultVersionRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMlV1__StopTrialRequest": {
+"id": "GoogleCloudMlV1__StopTrialRequest",
+"properties": {},
+"type": "object"
+},
+"GoogleCloudMlV1__Study": {
+"description": "A message representing a Study.",
+"id": "GoogleCloudMlV1__Study",
+"properties": {
+"createTime": {
+"description": "Output only. Time at which the study was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"inactiveReason": {
+"description": "Output only. A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The name of a study.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The detailed state of a study.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"INACTIVE",
+"COMPLETED"
+],
+"enumDescriptions": [
+"The study state is unspecified.",
+"The study is active.",
+"The study is stopped due to an internal error.",
+"The study is done when the service exhausts the parameter search space or max_trial_count is reached."
+],
+"readOnly": true,
+"type": "string"
+},
+"studyConfig": {
+"$ref": "GoogleCloudMlV1__StudyConfig",
+"description": "Required. Configuration of the study."
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__StudyConfig": {
+"description": "Represents configuration of a study.",
+"id": "GoogleCloudMlV1__StudyConfig",
+"properties": {
+"algorithm": {
+"description": "The search algorithm specified for the study.",
+"enum": [
+"ALGORITHM_UNSPECIFIED",
+"GAUSSIAN_PROCESS_BANDIT",
+"GRID_SEARCH",
+"RANDOM_SEARCH"
+],
+"enumDescriptions": [
+"The default algorithm used by the Cloud AI Platform Vizier service.",
+"Gaussian Process Bandit.",
+"Simple grid search within the feasible space. To use grid search, all parameters must be `INTEGER`, `CATEGORICAL`, or `DISCRETE`.",
+"Simple random search within the feasible space."
+],
+"type": "string"
+},
+"automatedStoppingConfig": {
+"$ref": "GoogleCloudMlV1__AutomatedStoppingConfig",
+"description": "Configuration for automated stopping of unpromising Trials."
+},
+"metrics": {
+"description": "Metric specs for the study.",
+"items": {
+"$ref": "GoogleCloudMlV1_StudyConfig_MetricSpec"
+},
+"type": "array"
+},
+"parameters": {
+"description": "Required. The set of parameters to tune.",
+"items": {
+"$ref": "GoogleCloudMlV1_StudyConfig_ParameterSpec"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__SuggestTrialsMetadata": {
+"description": "Metadata field of a google.longrunning.Operation associated with a SuggestTrialsRequest.",
+"id": "GoogleCloudMlV1__SuggestTrialsMetadata",
+"properties": {
+"clientId": {
+"description": "The identifier of the client that is requesting the suggestion.",
+"type": "string"
+},
+"createTime": {
+"description": "The time operation was submitted.",
+"format": "google-datetime",
+"type": "string"
+},
+"study": {
+"description": "The name of the study that the trial belongs to.",
+"type": "string"
+},
+"suggestionCount": {
+"description": "The number of suggestions requested.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__SuggestTrialsRequest": {
+"description": "The request message for the SuggestTrial service method.",
+"id": "GoogleCloudMlV1__SuggestTrialsRequest",
+"properties": {
+"clientId": {
+"description": "Required. The identifier of the client that is requesting the suggestion. If multiple SuggestTrialsRequests have the same `client_id`, the service will return the identical suggested trial if the trial is pending, and provide a new trial if the last suggested trial was completed.",
+"type": "string"
+},
+"suggestionCount": {
+"description": "Required. The number of suggestions requested.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__SuggestTrialsResponse": {
+"description": "This message will be placed in the response field of a completed google.longrunning.Operation associated with a SuggestTrials request.",
+"id": "GoogleCloudMlV1__SuggestTrialsResponse",
+"properties": {
+"endTime": {
+"description": "The time at which operation processing completed.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "The time at which the operation was started.",
+"format": "google-datetime",
+"type": "string"
+},
+"studyState": {
+"description": "The state of the study.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"INACTIVE",
+"COMPLETED"
+],
+"enumDescriptions": [
+"The study state is unspecified.",
+"The study is active.",
+"The study is stopped due to an internal error.",
+"The study is done when the service exhausts the parameter search space or max_trial_count is reached."
+],
+"type": "string"
+},
+"trials": {
+"description": "A list of trials.",
+"items": {
+"$ref": "GoogleCloudMlV1__Trial"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__TrainingInput": {
+"description": "Represents input parameters for a training job. When using the gcloud command to submit your training job, you can specify the input parameters as command-line arguments and/or in a YAML configuration file referenced from the --config command-line argument. For details, see the guide to [submitting a training job](/ai-platform/training/docs/training-jobs).",
+"id": "GoogleCloudMlV1__TrainingInput",
+"properties": {
+"args": {
+"description": "Optional. Command-line arguments passed to the training application when it starts. If your job uses a custom container, then the arguments are passed to the container's `ENTRYPOINT` command.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"enableWebAccess": {
+"description": "Optional. Whether you want AI Platform Training to enable [interactive shell access](https://cloud.google.com/ai-platform/training/docs/monitor-debug-interactive-shell) to training containers. If set to `true`, you can access interactive shells at the URIs given by TrainingOutput.web_access_uris or HyperparameterOutput.web_access_uris (within TrainingOutput.trials).",
+"type": "boolean"
+},
+"encryptionConfig": {
+"$ref": "GoogleCloudMlV1__EncryptionConfig",
+"description": "Optional. Options for using customer-managed encryption keys (CMEK) to protect resources created by a training job, instead of using Google's default encryption. If this is set, then all resources created by the training job will be encrypted with the customer-managed encryption key that you specify. [Learn how and when to use CMEK with AI Platform Training](/ai-platform/training/docs/cmek)."
+},
+"evaluatorConfig": {
+"$ref": "GoogleCloudMlV1__ReplicaConfig",
+"description": "Optional. The configuration for evaluators. You should only set `evaluatorConfig.acceleratorConfig` if `evaluatorType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `evaluatorConfig.imageUri` only if you build a custom image for your evaluator. If `evaluatorConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
+},
+"evaluatorCount": {
+"description": "Optional. The number of evaluator replicas to use for the training job. Each replica in the cluster will be of the type specified in `evaluator_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `evaluator_type`. The default value is zero.",
+"format": "int64",
+"type": "string"
+},
+"evaluatorType": {
+"description": "Optional. Specifies the type of virtual machine to use for your training job's evaluator nodes. The supported values are the same as those described in the entry for `masterType`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. This value must be present when `scaleTier` is set to `CUSTOM` and `evaluatorCount` is greater than zero.",
+"type": "string"
+},
+"hyperparameters": {
+"$ref": "GoogleCloudMlV1__HyperparameterSpec",
+"description": "Optional. The set of Hyperparameters to tune."
+},
+"jobDir": {
+"description": "Optional. A Google Cloud Storage path in which to store training outputs and other data needed for training. This path is passed to your TensorFlow program as the '--job-dir' command-line argument. The benefit of specifying this field is that Cloud ML validates the path for use in training.",
+"type": "string"
+},
+"masterConfig": {
+"$ref": "GoogleCloudMlV1__ReplicaConfig",
+"description": "Optional. The configuration for your master worker. You should only set `masterConfig.acceleratorConfig` if `masterType` is set to a Compute Engine machine type. Learn about [restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `masterConfig.imageUri` only if you build a custom image. Only one of `masterConfig.imageUri` and `runtimeVersion` should be set. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
+},
+"masterType": {
+"description": "Optional. Specifies the type of virtual machine to use for your training job's master worker. You must specify this field when `scaleTier` is set to `CUSTOM`. You can use certain Compute Engine machine types directly in this field. See the [list of compatible Compute Engine machine types](/ai-platform/training/docs/machine-types#compute-engine-machine-types). Alternatively, you can use the certain legacy machine types in this field. See the [list of legacy machine types](/ai-platform/training/docs/machine-types#legacy-machine-types). Finally, if you want to use a TPU for training, specify `cloud_tpu` in this field. Learn more about the [special configuration options for training with TPUs](/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).",
+"type": "string"
+},
+"network": {
+"description": "Optional. The full name of the [Compute Engine network](/vpc/docs/vpc) to which the Job is peered. For example, `projects/12345/global/networks/myVPC`. The format of this field is `projects/{project}/global/networks/{network}`, where {project} is a project number (like `12345`) and {network} is network name. Private services access must already be configured for the network. If left unspecified, the Job is not peered with any network. [Learn about using VPC Network Peering.](/ai-platform/training/docs/vpc-peering).",
+"type": "string"
+},
+"packageUris": {
+"description": "Required. The Google Cloud Storage location of the packages with the training program and any additional dependencies. The maximum number of package URIs is 100.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"parameterServerConfig": {
+"$ref": "GoogleCloudMlV1__ReplicaConfig",
+"description": "Optional. The configuration for parameter servers. You should only set `parameterServerConfig.acceleratorConfig` if `parameterServerType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `parameterServerConfig.imageUri` only if you build a custom image for your parameter server. If `parameterServerConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
+},
+"parameterServerCount": {
+"description": "Optional. The number of parameter server replicas to use for the training job. Each replica in the cluster will be of the type specified in `parameter_server_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `parameter_server_type`. The default value is zero.",
+"format": "int64",
+"type": "string"
+},
+"parameterServerType": {
+"description": "Optional. Specifies the type of virtual machine to use for your training job's parameter server. The supported values are the same as those described in the entry for `master_type`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. This value must be present when `scaleTier` is set to `CUSTOM` and `parameter_server_count` is greater than zero.",
+"type": "string"
+},
+"pythonModule": {
+"description": "Required. The Python module name to run after installing the packages.",
+"type": "string"
+},
+"pythonVersion": {
+"description": "Optional. The version of Python used in training. You must either specify this field or specify `masterConfig.imageUri`. The following Python versions are available: * Python '3.7' is available when `runtime_version` is set to '1.15' or later. * Python '3.5' is available when `runtime_version` is set to a version from '1.4' to '1.14'. * Python '2.7' is available when `runtime_version` is set to '1.15' or earlier. Read more about the Python versions available for [each runtime version](/ml-engine/docs/runtime-version-list).",
+"type": "string"
+},
+"region": {
+"description": "Required. The region to run the training job in. See the [available regions](/ai-platform/training/docs/regions) for AI Platform Training.",
+"type": "string"
+},
+"runtimeVersion": {
+"description": "Optional. The AI Platform runtime version to use for training. You must either specify this field or specify `masterConfig.imageUri`. For more information, see the [runtime version list](/ai-platform/training/docs/runtime-version-list) and learn [how to manage runtime versions](/ai-platform/training/docs/versioning).",
+"type": "string"
+},
+"scaleTier": {
+"description": "Required. Specifies the machine types, the number of replicas for workers and parameter servers.",
+"enum": [
+"BASIC",
+"STANDARD_1",
+"PREMIUM_1",
+"BASIC_GPU",
+"BASIC_TPU",
+"CUSTOM"
+],
+"enumDescriptions": [
+"A single worker instance. This tier is suitable for learning how to use Cloud ML, and for experimenting with new models using small datasets.",
+"Many workers and a few parameter servers.",
+"A large number of workers with many parameter servers.",
+"A single worker instance [with a GPU](/ai-platform/training/docs/using-gpus).",
+"A single worker instance with a [Cloud TPU](/ml-engine/docs/tensorflow/using-tpus).",
+"The CUSTOM tier is not a set tier, but rather enables you to use your own cluster specification. When you use this tier, set values to configure your processing cluster according to these guidelines: * You _must_ set `TrainingInput.masterType` to specify the type of machine to use for your master node. This is the only required setting. * You _may_ set `TrainingInput.workerCount` to specify the number of workers to use. If you specify one or more workers, you _must_ also set `TrainingInput.workerType` to specify the type of machine to use for your worker nodes. * You _may_ set `TrainingInput.parameterServerCount` to specify the number of parameter servers to use. If you specify one or more parameter servers, you _must_ also set `TrainingInput.parameterServerType` to specify the type of machine to use for your parameter servers. Note that all of your workers must use the same machine type, which can be different from your parameter server type and master type. Your parameter servers must likewise use the same machine type, which can be different from your worker type and master type."
+],
+"type": "string"
+},
+"scheduling": {
+"$ref": "GoogleCloudMlV1__Scheduling",
+"description": "Optional. Scheduling options for a training job."
+},
+"serviceAccount": {
+"description": "Optional. The email address of a service account to use when running the training appplication. You must have the `iam.serviceAccounts.actAs` permission for the specified service account. In addition, the AI Platform Training Google-managed service account must have the `roles/iam.serviceAccountAdmin` role for the specified service account. [Learn more about configuring a service account.](/ai-platform/training/docs/custom-service-account) If not specified, the AI Platform Training Google-managed service account is used by default.",
+"type": "string"
+},
+"useChiefInTfConfig": {
+"description": "Optional. Use `chief` instead of `master` in the `TF_CONFIG` environment variable when training with a custom container. Defaults to `false`. [Learn more about this field.](/ai-platform/training/docs/distributed-training-details#chief-versus-master) This field has no effect for training jobs that don't use a custom container.",
+"type": "boolean"
+},
+"workerConfig": {
+"$ref": "GoogleCloudMlV1__ReplicaConfig",
+"description": "Optional. The configuration for workers. You should only set `workerConfig.acceleratorConfig` if `workerType` is set to a Compute Engine machine type. [Learn about restrictions on accelerator configurations for training.](/ai-platform/training/docs/using-gpus#compute-engine-machine-types-with-gpu) Set `workerConfig.imageUri` only if you build a custom image for your worker. If `workerConfig.imageUri` has not been set, AI Platform uses the value of `masterConfig.imageUri`. Learn more about [configuring custom containers](/ai-platform/training/docs/distributed-training-containers)."
+},
+"workerCount": {
+"description": "Optional. The number of worker replicas to use for the training job. Each replica in the cluster will be of the type specified in `worker_type`. This value can only be used when `scale_tier` is set to `CUSTOM`. If you set this value, you must also set `worker_type`. The default value is zero.",
+"format": "int64",
+"type": "string"
+},
+"workerType": {
+"description": "Optional. Specifies the type of virtual machine to use for your training job's worker nodes. The supported values are the same as those described in the entry for `masterType`. This value must be consistent with the category of machine type that `masterType` uses. In other words, both must be Compute Engine machine types or both must be legacy machine types. If you use `cloud_tpu` for this value, see special instructions for [configuring a custom TPU machine](/ml-engine/docs/tensorflow/using-tpus#configuring_a_custom_tpu_machine). This value must be present when `scaleTier` is set to `CUSTOM` and `workerCount` is greater than zero.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__TrainingOutput": {
+"description": "Represents results of a training job. Output only.",
+"id": "GoogleCloudMlV1__TrainingOutput",
+"properties": {
+"builtInAlgorithmOutput": {
+"$ref": "GoogleCloudMlV1__BuiltInAlgorithmOutput",
+"description": "Details related to built-in algorithms jobs. Only set for built-in algorithms jobs."
+},
+"completedTrialCount": {
+"description": "The number of hyperparameter tuning trials that completed successfully. Only set for hyperparameter tuning jobs.",
+"format": "int64",
+"type": "string"
+},
+"consumedMLUnits": {
+"description": "The amount of ML units consumed by the job.",
+"format": "double",
+"type": "number"
+},
+"hyperparameterMetricTag": {
+"description": "The TensorFlow summary tag name used for optimizing hyperparameter tuning trials. See [`HyperparameterSpec.hyperparameterMetricTag`](#HyperparameterSpec.FIELDS.hyperparameter_metric_tag) for more information. Only set for hyperparameter tuning jobs.",
+"type": "string"
+},
+"isBuiltInAlgorithmJob": {
+"description": "Whether this job is a built-in Algorithm job.",
+"type": "boolean"
+},
+"isHyperparameterTuningJob": {
+"description": "Whether this job is a hyperparameter tuning job.",
+"type": "boolean"
+},
+"trials": {
+"description": "Results for individual Hyperparameter trials. Only set for hyperparameter tuning jobs.",
+"items": {
+"$ref": "GoogleCloudMlV1__HyperparameterOutput"
+},
+"type": "array"
+},
+"webAccessUris": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. URIs for accessing [interactive shells](https://cloud.google.com/ai-platform/training/docs/monitor-debug-interactive-shell) (one URI for each training node). Only available if training_input.enable_web_access is `true`. The keys are names of each node in the training job; for example, `master-replica-0` for the master node, `worker-replica-0` for the first worker, and `ps-replica-0` for the first parameter server. The values are the URIs for each node's interactive shell.",
+"readOnly": true,
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__Trial": {
+"description": "A message representing a trial.",
+"id": "GoogleCloudMlV1__Trial",
+"properties": {
+"clientId": {
+"description": "Output only. The identifier of the client that originally requested this trial.",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. Time at which the trial's status changed to COMPLETED.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"finalMeasurement": {
+"$ref": "GoogleCloudMlV1__Measurement",
+"description": "The final measurement containing the objective value."
+},
+"infeasibleReason": {
+"description": "Output only. A human readable string describing why the trial is infeasible. This should only be set if trial_infeasible is true.",
+"readOnly": true,
+"type": "string"
+},
+"measurements": {
+"description": "A list of measurements that are strictly lexicographically ordered by their induced tuples (steps, elapsed_time). These are used for early stopping computations.",
+"items": {
+"$ref": "GoogleCloudMlV1__Measurement"
+},
+"type": "array"
+},
+"name": {
+"description": "Output only. Name of the trial assigned by the service.",
+"readOnly": true,
+"type": "string"
+},
+"parameters": {
+"description": "The parameters of the trial.",
+"items": {
+"$ref": "GoogleCloudMlV1_Trial_Parameter"
+},
+"type": "array"
+},
+"startTime": {
+"description": "Output only. Time at which the trial was started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "The detailed state of a trial.",
+"enum": [
+"STATE_UNSPECIFIED",
+"REQUESTED",
+"ACTIVE",
+"COMPLETED",
+"STOPPING"
+],
+"enumDescriptions": [
+"The trial state is unspecified.",
+"Indicates that a specific trial has been requested, but it has not yet been suggested by the service.",
+"Indicates that the trial has been suggested.",
+"Indicates that the trial is done, and either has a final_measurement set, or is marked as trial_infeasible.",
+"Indicates that the trial should stop according to the service."
+],
+"type": "string"
+},
+"trialInfeasible": {
+"description": "Output only. If true, the parameters in this trial are not attempted again.",
+"readOnly": true,
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__Version": {
+"description": "Represents a version of the model. Each version is a trained model deployed in the cloud, ready to handle prediction requests. A model can have multiple versions. You can get information about all of the versions of a given model by calling projects.models.versions.list.",
+"id": "GoogleCloudMlV1__Version",
+"properties": {
+"acceleratorConfig": {
+"$ref": "GoogleCloudMlV1__AcceleratorConfig",
+"description": "Optional. Accelerator config for using GPUs for online prediction (beta). Only specify this field if you have specified a Compute Engine (N1) machine type in the `machineType` field. Learn more about [using GPUs for online prediction](/ml-engine/docs/machine-types-online-prediction#gpus)."
+},
+"autoScaling": {
+"$ref": "GoogleCloudMlV1__AutoScaling",
+"description": "Automatically scale the number of nodes used to serve the model in response to increases and decreases in traffic. Care should be taken to ramp up traffic according to the model's ability to scale or you will start seeing increases in latency and 429 response codes."
+},
+"container": {
+"$ref": "GoogleCloudMlV1__ContainerSpec",
+"description": "Optional. Specifies a custom container to use for serving predictions. If you specify this field, then `machineType` is required. If you specify this field, then `deploymentUri` is optional. If you specify this field, then you must not specify `runtimeVersion`, `packageUris`, `framework`, `pythonVersion`, or `predictionClass`."
+},
+"createTime": {
+"description": "Output only. The time the version was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"deploymentUri": {
+"description": "The Cloud Storage URI of a directory containing trained model artifacts to be used to create the model version. See the [guide to deploying models](/ai-platform/prediction/docs/deploying-models) for more information. The total number of files under this directory must not exceed 1000. During projects.models.versions.create, AI Platform Prediction copies all files from the specified directory to a location managed by the service. From then on, AI Platform Prediction uses these copies of the model artifacts to serve predictions, not the original files in Cloud Storage, so this location is useful only as a historical record. If you specify container, then this field is optional. Otherwise, it is required. Learn [how to use this field with a custom container](/ai-platform/prediction/docs/custom-container-requirements#artifacts).",
+"type": "string"
+},
+"description": {
+"description": "Optional. The description specified for the version when it was created.",
+"type": "string"
+},
+"errorMessage": {
+"description": "Output only. The details of a failure or a cancellation.",
+"type": "string"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a model from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform model updates in order to avoid race conditions: An `etag` is returned in the response to `GetVersion`, and systems are expected to put that etag in the request to `UpdateVersion` to ensure that their change will be applied to the model as intended.",
+"format": "byte",
+"type": "string"
+},
+"explanationConfig": {
+"$ref": "GoogleCloudMlV1__ExplanationConfig",
+"description": "Optional. Configures explainability features on the model's version. Some explanation features require additional metadata to be loaded as part of the model payload."
+},
+"framework": {
+"description": "Optional. The machine learning framework AI Platform uses to train this version of the model. Valid values are `TENSORFLOW`, `SCIKIT_LEARN`, `XGBOOST`. If you do not specify a framework, AI Platform will analyze files in the deployment_uri to determine a framework. If you choose `SCIKIT_LEARN` or `XGBOOST`, you must also set the runtime version of the model to 1.4 or greater. Do **not** specify a framework if you're deploying a [custom prediction routine](/ai-platform/prediction/docs/custom-prediction-routines) or if you're using a [custom container](/ai-platform/prediction/docs/use-custom-container).",
+"enum": [
+"FRAMEWORK_UNSPECIFIED",
+"TENSORFLOW",
+"SCIKIT_LEARN",
+"XGBOOST"
+],
+"enumDescriptions": [
+"Unspecified framework. Assigns a value based on the file suffix.",
+"Tensorflow framework.",
+"Scikit-learn framework.",
+"XGBoost framework."
+],
+"type": "string"
+},
+"isDefault": {
+"description": "Output only. If true, this version will be used to handle prediction requests that do not specify a version. You can change the default version by calling projects.methods.versions.setDefault.",
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. One or more labels that you can add, to organize your model versions. Each label is a key-value pair, where both the key and the value are arbitrary strings that you supply. For more information, see the documentation on using labels. Note that this field is not updatable for mls1* models.",
+"type": "object"
+},
+"lastMigrationModelId": {
+"description": "Output only. The [AI Platform (Unified) `Model`](https://cloud.google.com/ai-platform-unified/docs/reference/rest/v1beta1/projects.locations.models) ID for the last [model migration](https://cloud.google.com/ai-platform-unified/docs/start/migrating-to-ai-platform-unified).",
+"readOnly": true,
+"type": "string"
+},
+"lastMigrationTime": {
+"description": "Output only. The last time this version was successfully [migrated to AI Platform (Unified)](https://cloud.google.com/ai-platform-unified/docs/start/migrating-to-ai-platform-unified).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"lastUseTime": {
+"description": "Output only. The time the version was last used for prediction.",
+"format": "google-datetime",
+"type": "string"
+},
+"machineType": {
+"description": "Optional. The type of machine on which to serve the model. Currently only applies to online prediction service. To learn about valid values for this field, read [Choosing a machine type for online prediction](/ai-platform/prediction/docs/machine-types-online-prediction). If this field is not specified and you are using a [regional endpoint](/ai-platform/prediction/docs/regional-endpoints), then the machine type defaults to `n1-standard-2`. If this field is not specified and you are using the global endpoint (`ml.googleapis.com`), then the machine type defaults to `mls1-c1-m2`.",
+"type": "string"
+},
+"manualScaling": {
+"$ref": "GoogleCloudMlV1__ManualScaling",
+"description": "Manually select the number of nodes to use for serving the model. You should generally use `auto_scaling` with an appropriate `min_nodes` instead, but this option is available if you want more predictable billing. Beware that latency and error rates will increase if the traffic exceeds that capability of the system to serve it based on the selected number of nodes."
+},
+"name": {
+"description": "Required. The name specified for the version when it was created. The version name must be unique within the model it is created in.",
+"type": "string"
+},
+"packageUris": {
+"description": "Optional. Cloud Storage paths (`gs://\u2026`) of packages for [custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines) or [scikit-learn pipelines with custom code](/ml-engine/docs/scikit/exporting-for-prediction#custom-pipeline-code). For a custom prediction routine, one of these packages must contain your Predictor class (see [`predictionClass`](#Version.FIELDS.prediction_class)). Additionally, include any dependencies used by your Predictor or scikit-learn pipeline uses that are not already included in your selected [runtime version](/ml-engine/docs/tensorflow/runtime-version-list). If you specify this field, you must also set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"predictionClass": {
+"description": "Optional. The fully qualified name (module_name.class_name) of a class that implements the Predictor interface described in this reference field. The module containing this class should be included in a package provided to the [`packageUris` field](#Version.FIELDS.package_uris). Specify this field if and only if you are deploying a [custom prediction routine (beta)](/ml-engine/docs/tensorflow/custom-prediction-routines). If you specify this field, you must set [`runtimeVersion`](#Version.FIELDS.runtime_version) to 1.4 or greater and you must set `machineType` to a [legacy (MLS1) machine type](/ml-engine/docs/machine-types-online-prediction). The following code sample provides the Predictor interface: class Predictor(object): \"\"\"Interface for constructing custom predictors.\"\"\" def predict(self, instances, **kwargs): \"\"\"Performs custom prediction. Instances are the decoded values from the request. They have already been deserialized from JSON. Args: instances: A list of prediction input instances. **kwargs: A dictionary of keyword args provided as additional fields on the predict request body. Returns: A list of outputs containing the prediction results. This list must be JSON serializable. \"\"\" raise NotImplementedError() @classmethod def from_path(cls, model_dir): \"\"\"Creates an instance of Predictor using the given path. Loading of the predictor should be done in this method. Args: model_dir: The local directory that contains the exported model file along with any additional files uploaded when creating the version resource. Returns: An instance implementing this Predictor class. \"\"\" raise NotImplementedError() Learn more about [the Predictor interface and custom prediction routines](/ml-engine/docs/tensorflow/custom-prediction-routines).",
+"type": "string"
+},
+"pythonVersion": {
+"description": "Required. The version of Python used in prediction. The following Python versions are available: * Python '3.7' is available when `runtime_version` is set to '1.15' or later. * Python '3.5' is available when `runtime_version` is set to a version from '1.4' to '1.14'. * Python '2.7' is available when `runtime_version` is set to '1.15' or earlier. Read more about the Python versions available for [each runtime version](/ml-engine/docs/runtime-version-list).",
+"type": "string"
+},
+"requestLoggingConfig": {
+"$ref": "GoogleCloudMlV1__RequestLoggingConfig",
+"description": "Optional. *Only* specify this field in a projects.models.versions.patch request. Specifying it in a projects.models.versions.create request has no effect. Configures the request-response pair logging on predictions from this Version."
+},
+"routes": {
+"$ref": "GoogleCloudMlV1__RouteMap",
+"description": "Optional. Specifies paths on a custom container's HTTP server where AI Platform Prediction sends certain requests. If you specify this field, then you must also specify the `container` field. If you specify the `container` field and do not specify this field, it defaults to the following: ```json { \"predict\": \"/v1/models/MODEL/versions/VERSION:predict\", \"health\": \"/v1/models/MODEL/versions/VERSION\" } ``` See RouteMap for more details about these default values."
+},
+"runtimeVersion": {
+"description": "Required. The AI Platform runtime version to use for this deployment. For more information, see the [runtime version list](/ml-engine/docs/runtime-version-list) and [how to manage runtime versions](/ml-engine/docs/versioning).",
+"type": "string"
+},
+"serviceAccount": {
+"description": "Optional. Specifies the service account for resource access control. If you specify this field, then you must also specify either the `containerSpec` or the `predictionClass` field. Learn more about [using a custom service account](/ai-platform/prediction/docs/custom-service-account).",
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of a version.",
+"enum": [
+"UNKNOWN",
+"READY",
+"CREATING",
+"FAILED",
+"DELETING",
+"UPDATING"
+],
+"enumDescriptions": [
+"The version state is unspecified.",
+"The version is ready for prediction.",
+"The version is being created. New UpdateVersion and DeleteVersion requests will fail if a version is in the CREATING state.",
+"The version failed to be created, possibly cancelled. `error_message` should contain the details of the failure.",
+"The version is being deleted. New UpdateVersion and DeleteVersion requests will fail if a version is in the DELETING state.",
+"The version is being updated. New UpdateVersion and DeleteVersion requests will fail if a version is in the UPDATING state."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudMlV1__XraiAttribution": {
+"description": "Attributes credit by computing the XRAI taking advantage of the model's fully differentiable structure. Refer to this paper for more details: https://arxiv.org/abs/1906.02825 Currently only implemented for models with natural image inputs.",
+"id": "GoogleCloudMlV1__XraiAttribution",
+"properties": {
+"numIntegralSteps": {
+"description": "Number of steps for approximating the path integral. A good value to start is 50 and gradually increase until the sum to diff property is met within the desired error range.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleIamV1__AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "GoogleIamV1__AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "GoogleIamV1__AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1__AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "GoogleIamV1__AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1__Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "GoogleIamV1__Binding",
+"properties": {
+"condition": {
+"$ref": "GoogleType__Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1__Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "GoogleIamV1__Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "GoogleIamV1__AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "GoogleIamV1__Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleIamV1__SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "GoogleIamV1__SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "GoogleIamV1__Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1__TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "GoogleIamV1__TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIamV1__TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "GoogleIamV1__TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleLongrunning__ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "GoogleLongrunning__ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "GoogleLongrunning__Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleLongrunning__Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunning__Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpc__Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleProtobuf__Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobuf__Empty",
+"properties": {},
+"type": "object"
+},
+"GoogleRpc__Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpc__Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleType__Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "GoogleType__Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "AI Platform Training & Prediction API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/monitoring.v3.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/monitoring.v3.json
new file mode 100644
index 0000000000000000000000000000000000000000..13162e253004e1c884eec4b2013b29e16328c7b2
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/monitoring.v3.json
@@ -0,0 +1,6315 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/monitoring": {
+"description": "View and write monitoring data for all of your Google and third-party Cloud and API projects"
+},
+"https://www.googleapis.com/auth/monitoring.read": {
+"description": "View monitoring data for all of your Google Cloud and third-party projects"
+},
+"https://www.googleapis.com/auth/monitoring.write": {
+"description": "Publish metric data to your Google Cloud projects"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://monitoring.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Monitoring",
+"description": "Manages your Cloud Monitoring data and configurations.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/monitoring/api/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "monitoring:v3",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://monitoring.mtls.googleapis.com/",
+"name": "monitoring",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"folders": {
+"resources": {
+"timeSeries": {
+"methods": {
+"list": {
+"description": "Lists time series that match a filter.",
+"flatPath": "v3/folders/{foldersId}/timeSeries",
+"httpMethod": "GET",
+"id": "monitoring.folders.timeSeries.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"aggregation.alignmentPeriod": {
+"description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
+"format": "google-duration",
+"location": "query",
+"type": "string"
+},
+"aggregation.crossSeriesReducer": {
+"description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
+"enum": [
+"REDUCE_NONE",
+"REDUCE_MEAN",
+"REDUCE_MIN",
+"REDUCE_MAX",
+"REDUCE_SUM",
+"REDUCE_STDDEV",
+"REDUCE_COUNT",
+"REDUCE_COUNT_TRUE",
+"REDUCE_COUNT_FALSE",
+"REDUCE_FRACTION_TRUE",
+"REDUCE_PERCENTILE_99",
+"REDUCE_PERCENTILE_95",
+"REDUCE_PERCENTILE_50",
+"REDUCE_PERCENTILE_05"
+],
+"enumDescriptions": [
+"No cross-time series reduction. The output of the Aligner is returned.",
+"Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"aggregation.groupByFields": {
+"description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"aggregation.perSeriesAligner": {
+"description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
+"enum": [
+"ALIGN_NONE",
+"ALIGN_DELTA",
+"ALIGN_RATE",
+"ALIGN_INTERPOLATE",
+"ALIGN_NEXT_OLDER",
+"ALIGN_MIN",
+"ALIGN_MAX",
+"ALIGN_MEAN",
+"ALIGN_COUNT",
+"ALIGN_SUM",
+"ALIGN_STDDEV",
+"ALIGN_COUNT_TRUE",
+"ALIGN_COUNT_FALSE",
+"ALIGN_FRACTION_TRUE",
+"ALIGN_PERCENTILE_99",
+"ALIGN_PERCENTILE_95",
+"ALIGN_PERCENTILE_50",
+"ALIGN_PERCENTILE_05",
+"ALIGN_PERCENT_CHANGE"
+],
+"enumDescriptions": [
+"No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
+"Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
+"Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
+"Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
+"Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
+"Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
+"Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Required. A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example: metric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND metric.labels.instance_name = \"my-instance-name\" ",
+"location": "query",
+"type": "string"
+},
+"interval.endTime": {
+"description": "Required. The end of the time interval.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"interval.startTime": {
+"description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name), organization or folder on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] organizations/[ORGANIZATION_ID] folders/[FOLDER_ID] ",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+},
+"orderBy": {
+"description": "Unsupported: must be left blank. The points in each time series are currently returned in reverse time order (most recent to oldest).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "A positive number that is the maximum number of results to return. If page_size is empty or more than 100,000 results, the effective page_size is 100,000 results. If view is set to FULL, this is the maximum number of Points returned. If view is set to HEADERS, this is the maximum number of TimeSeries returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.alignmentPeriod": {
+"description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
+"format": "google-duration",
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.crossSeriesReducer": {
+"description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
+"enum": [
+"REDUCE_NONE",
+"REDUCE_MEAN",
+"REDUCE_MIN",
+"REDUCE_MAX",
+"REDUCE_SUM",
+"REDUCE_STDDEV",
+"REDUCE_COUNT",
+"REDUCE_COUNT_TRUE",
+"REDUCE_COUNT_FALSE",
+"REDUCE_FRACTION_TRUE",
+"REDUCE_PERCENTILE_99",
+"REDUCE_PERCENTILE_95",
+"REDUCE_PERCENTILE_50",
+"REDUCE_PERCENTILE_05"
+],
+"enumDescriptions": [
+"No cross-time series reduction. The output of the Aligner is returned.",
+"Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.groupByFields": {
+"description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"secondaryAggregation.perSeriesAligner": {
+"description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
+"enum": [
+"ALIGN_NONE",
+"ALIGN_DELTA",
+"ALIGN_RATE",
+"ALIGN_INTERPOLATE",
+"ALIGN_NEXT_OLDER",
+"ALIGN_MIN",
+"ALIGN_MAX",
+"ALIGN_MEAN",
+"ALIGN_COUNT",
+"ALIGN_SUM",
+"ALIGN_STDDEV",
+"ALIGN_COUNT_TRUE",
+"ALIGN_COUNT_FALSE",
+"ALIGN_FRACTION_TRUE",
+"ALIGN_PERCENTILE_99",
+"ALIGN_PERCENTILE_95",
+"ALIGN_PERCENTILE_50",
+"ALIGN_PERCENTILE_05",
+"ALIGN_PERCENT_CHANGE"
+],
+"enumDescriptions": [
+"No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
+"Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
+"Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
+"Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
+"Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
+"Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
+"Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "Required. Specifies which information is returned about the time series.",
+"enum": [
+"FULL",
+"HEADERS"
+],
+"enumDescriptions": [
+"Returns the identity of the metric(s), the time series, and the time series data.",
+"Returns the identity of the metric and the time series resource, but not the time series data."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/timeSeries",
+"response": {
+"$ref": "ListTimeSeriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+}
+}
+}
+}
+},
+"organizations": {
+"resources": {
+"timeSeries": {
+"methods": {
+"list": {
+"description": "Lists time series that match a filter.",
+"flatPath": "v3/organizations/{organizationsId}/timeSeries",
+"httpMethod": "GET",
+"id": "monitoring.organizations.timeSeries.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"aggregation.alignmentPeriod": {
+"description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
+"format": "google-duration",
+"location": "query",
+"type": "string"
+},
+"aggregation.crossSeriesReducer": {
+"description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
+"enum": [
+"REDUCE_NONE",
+"REDUCE_MEAN",
+"REDUCE_MIN",
+"REDUCE_MAX",
+"REDUCE_SUM",
+"REDUCE_STDDEV",
+"REDUCE_COUNT",
+"REDUCE_COUNT_TRUE",
+"REDUCE_COUNT_FALSE",
+"REDUCE_FRACTION_TRUE",
+"REDUCE_PERCENTILE_99",
+"REDUCE_PERCENTILE_95",
+"REDUCE_PERCENTILE_50",
+"REDUCE_PERCENTILE_05"
+],
+"enumDescriptions": [
+"No cross-time series reduction. The output of the Aligner is returned.",
+"Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"aggregation.groupByFields": {
+"description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"aggregation.perSeriesAligner": {
+"description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
+"enum": [
+"ALIGN_NONE",
+"ALIGN_DELTA",
+"ALIGN_RATE",
+"ALIGN_INTERPOLATE",
+"ALIGN_NEXT_OLDER",
+"ALIGN_MIN",
+"ALIGN_MAX",
+"ALIGN_MEAN",
+"ALIGN_COUNT",
+"ALIGN_SUM",
+"ALIGN_STDDEV",
+"ALIGN_COUNT_TRUE",
+"ALIGN_COUNT_FALSE",
+"ALIGN_FRACTION_TRUE",
+"ALIGN_PERCENTILE_99",
+"ALIGN_PERCENTILE_95",
+"ALIGN_PERCENTILE_50",
+"ALIGN_PERCENTILE_05",
+"ALIGN_PERCENT_CHANGE"
+],
+"enumDescriptions": [
+"No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
+"Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
+"Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
+"Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
+"Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
+"Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
+"Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Required. A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example: metric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND metric.labels.instance_name = \"my-instance-name\" ",
+"location": "query",
+"type": "string"
+},
+"interval.endTime": {
+"description": "Required. The end of the time interval.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"interval.startTime": {
+"description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name), organization or folder on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] organizations/[ORGANIZATION_ID] folders/[FOLDER_ID] ",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"orderBy": {
+"description": "Unsupported: must be left blank. The points in each time series are currently returned in reverse time order (most recent to oldest).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "A positive number that is the maximum number of results to return. If page_size is empty or more than 100,000 results, the effective page_size is 100,000 results. If view is set to FULL, this is the maximum number of Points returned. If view is set to HEADERS, this is the maximum number of TimeSeries returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.alignmentPeriod": {
+"description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
+"format": "google-duration",
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.crossSeriesReducer": {
+"description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
+"enum": [
+"REDUCE_NONE",
+"REDUCE_MEAN",
+"REDUCE_MIN",
+"REDUCE_MAX",
+"REDUCE_SUM",
+"REDUCE_STDDEV",
+"REDUCE_COUNT",
+"REDUCE_COUNT_TRUE",
+"REDUCE_COUNT_FALSE",
+"REDUCE_FRACTION_TRUE",
+"REDUCE_PERCENTILE_99",
+"REDUCE_PERCENTILE_95",
+"REDUCE_PERCENTILE_50",
+"REDUCE_PERCENTILE_05"
+],
+"enumDescriptions": [
+"No cross-time series reduction. The output of the Aligner is returned.",
+"Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.groupByFields": {
+"description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"secondaryAggregation.perSeriesAligner": {
+"description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
+"enum": [
+"ALIGN_NONE",
+"ALIGN_DELTA",
+"ALIGN_RATE",
+"ALIGN_INTERPOLATE",
+"ALIGN_NEXT_OLDER",
+"ALIGN_MIN",
+"ALIGN_MAX",
+"ALIGN_MEAN",
+"ALIGN_COUNT",
+"ALIGN_SUM",
+"ALIGN_STDDEV",
+"ALIGN_COUNT_TRUE",
+"ALIGN_COUNT_FALSE",
+"ALIGN_FRACTION_TRUE",
+"ALIGN_PERCENTILE_99",
+"ALIGN_PERCENTILE_95",
+"ALIGN_PERCENTILE_50",
+"ALIGN_PERCENTILE_05",
+"ALIGN_PERCENT_CHANGE"
+],
+"enumDescriptions": [
+"No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
+"Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
+"Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
+"Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
+"Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
+"Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
+"Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "Required. Specifies which information is returned about the time series.",
+"enum": [
+"FULL",
+"HEADERS"
+],
+"enumDescriptions": [
+"Returns the identity of the metric(s), the time series, and the time series data.",
+"Returns the identity of the metric and the time series resource, but not the time series data."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/timeSeries",
+"response": {
+"$ref": "ListTimeSeriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+}
+}
+}
+}
+},
+"projects": {
+"resources": {
+"alertPolicies": {
+"methods": {
+"create": {
+"description": "Creates a new alerting policy.Design your application to single-thread API calls that modify the state of alerting policies in a single project. This includes calls to CreateAlertPolicy, DeleteAlertPolicy and UpdateAlertPolicy.",
+"flatPath": "v3/projects/{projectsId}/alertPolicies",
+"httpMethod": "POST",
+"id": "monitoring.projects.alertPolicies.create",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) in which to create the alerting policy. The format is: projects/[PROJECT_ID_OR_NUMBER] Note that this field names the parent container in which the alerting policy will be written, not the name of the created policy. |name| must be a host project of a Metrics Scope, otherwise INVALID_ARGUMENT error will return. The alerting policy that is returned will have a name that contains a normalized representation of this name as a prefix but adds a suffix of the form /alertPolicies/[ALERT_POLICY_ID], identifying the policy in the container.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}/alertPolicies",
+"request": {
+"$ref": "AlertPolicy"
+},
+"response": {
+"$ref": "AlertPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"delete": {
+"description": "Deletes an alerting policy.Design your application to single-thread API calls that modify the state of alerting policies in a single project. This includes calls to CreateAlertPolicy, DeleteAlertPolicy and UpdateAlertPolicy.",
+"flatPath": "v3/projects/{projectsId}/alertPolicies/{alertPoliciesId}",
+"httpMethod": "DELETE",
+"id": "monitoring.projects.alertPolicies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The alerting policy to delete. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] For more information, see AlertPolicy.",
+"location": "path",
+"pattern": "^projects/[^/]+/alertPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"get": {
+"description": "Gets a single alerting policy.",
+"flatPath": "v3/projects/{projectsId}/alertPolicies/{alertPoliciesId}",
+"httpMethod": "GET",
+"id": "monitoring.projects.alertPolicies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The alerting policy to retrieve. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/alertPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "AlertPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"list": {
+"description": "Lists the existing alerting policies for the workspace.",
+"flatPath": "v3/projects/{projectsId}/alertPolicies",
+"httpMethod": "GET",
+"id": "monitoring.projects.alertPolicies.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "Optional. If provided, this field specifies the criteria that must be met by alert policies to be included in the response.For more details, see sorting and filtering (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) whose alert policies are to be listed. The format is: projects/[PROJECT_ID_OR_NUMBER] Note that this field names the parent container in which the alerting policies to be listed are stored. To retrieve a single alerting policy by name, use the GetAlertPolicy operation, instead.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. A comma-separated list of fields by which to sort the result. Supports the same set of field references as the filter field. Entries can be prefixed with a minus sign to sort by the field in descending order.For more details, see sorting and filtering (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return in a single response.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return more results from the previous method call.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/alertPolicies",
+"response": {
+"$ref": "ListAlertPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"patch": {
+"description": "Updates an alerting policy. You can either replace the entire policy with a new one or replace only certain fields in the current alerting policy by specifying the fields to be updated via updateMask. Returns the updated alerting policy.Design your application to single-thread API calls that modify the state of alerting policies in a single project. This includes calls to CreateAlertPolicy, DeleteAlertPolicy and UpdateAlertPolicy.",
+"flatPath": "v3/projects/{projectsId}/alertPolicies/{alertPoliciesId}",
+"httpMethod": "PATCH",
+"id": "monitoring.projects.alertPolicies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Required if the policy exists. The resource name for this policy. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] [ALERT_POLICY_ID] is assigned by Cloud Monitoring when the policy is created. When calling the alertPolicies.create method, do not include the name field in the alerting policy passed as part of the request.",
+"location": "path",
+"pattern": "^projects/[^/]+/alertPolicies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. A list of alerting policy field names. If this field is not empty, each listed field in the existing alerting policy is set to the value of the corresponding field in the supplied policy (alert_policy), or to the field's default value if the field is not in the supplied alerting policy. Fields not listed retain their previous value.Examples of valid field masks include display_name, documentation, documentation.content, documentation.mime_type, user_labels, user_label.nameofkey, enabled, conditions, combiner, etc.If this field is empty, then the supplied alerting policy replaces the existing policy. It is the same as deleting the existing policy and adding the supplied policy, except for the following: The new policy will have the same [ALERT_POLICY_ID] as the former policy. This gives you continuity with the former policy in your notifications and incidents. Conditions in the new policy will keep their former [CONDITION_ID] if the supplied condition includes the name field with that [CONDITION_ID]. If the supplied condition omits the name field, then a new [CONDITION_ID] is created.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"request": {
+"$ref": "AlertPolicy"
+},
+"response": {
+"$ref": "AlertPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+}
+}
+},
+"collectdTimeSeries": {
+"methods": {
+"create": {
+"description": "Cloud Monitoring Agent only: Creates a new time series.This method is only for use by the Cloud Monitoring Agent. Use projects.timeSeries.create instead.",
+"flatPath": "v3/projects/{projectsId}/collectdTimeSeries",
+"httpMethod": "POST",
+"id": "monitoring.projects.collectdTimeSeries.create",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The project (https://cloud.google.com/monitoring/api/v3#project_name) in which to create the time series. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}/collectdTimeSeries",
+"request": {
+"$ref": "CreateCollectdTimeSeriesRequest"
+},
+"response": {
+"$ref": "CreateCollectdTimeSeriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+}
+}
+},
+"groups": {
+"methods": {
+"create": {
+"description": "Creates a new group.",
+"flatPath": "v3/projects/{projectsId}/groups",
+"httpMethod": "POST",
+"id": "monitoring.projects.groups.create",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) in which to create the group. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "If true, validate this request but do not create the group.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v3/{+name}/groups",
+"request": {
+"$ref": "Group"
+},
+"response": {
+"$ref": "Group"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"delete": {
+"description": "Deletes an existing group.",
+"flatPath": "v3/projects/{projectsId}/groups/{groupsId}",
+"httpMethod": "DELETE",
+"id": "monitoring.projects.groups.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The group to delete. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"recursive": {
+"description": "If this field is true, then the request means to delete a group with all its descendants. Otherwise, the request means to delete a group only when it has no descendants. The default value is false.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"get": {
+"description": "Gets a single group.",
+"flatPath": "v3/projects/{projectsId}/groups/{groupsId}",
+"httpMethod": "GET",
+"id": "monitoring.projects.groups.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The group to retrieve. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Group"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"list": {
+"description": "Lists the existing groups.",
+"flatPath": "v3/projects/{projectsId}/groups",
+"httpMethod": "GET",
+"id": "monitoring.projects.groups.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"ancestorsOfGroup": {
+"description": "A group name. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns groups that are ancestors of the specified group. The groups are returned in order, starting with the immediate parent and ending with the most distant ancestor. If the specified group has no immediate parent, the results are empty.",
+"location": "query",
+"type": "string"
+},
+"childrenOfGroup": {
+"description": "A group name. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns groups whose parent_name field contains the group name. If no groups have this parent, the results are empty.",
+"location": "query",
+"type": "string"
+},
+"descendantsOfGroup": {
+"description": "A group name. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] Returns the descendants of the specified group. This is a superset of the results returned by the children_of_group filter, and includes children-of-children, and so forth.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) whose groups are to be listed. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "A positive number that is the maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the next_page_token value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/groups",
+"response": {
+"$ref": "ListGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"update": {
+"description": "Updates an existing group. You can change any group attributes except name.",
+"flatPath": "v3/projects/{projectsId}/groups/{groupsId}",
+"httpMethod": "PUT",
+"id": "monitoring.projects.groups.update",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The name of this group. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique [GROUP_ID] that is generated automatically.",
+"location": "path",
+"pattern": "^projects/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"validateOnly": {
+"description": "If true, validate this request but do not update the existing group.",
+"location": "query",
+"type": "boolean"
+}
+},
+"path": "v3/{+name}",
+"request": {
+"$ref": "Group"
+},
+"response": {
+"$ref": "Group"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+}
+},
+"resources": {
+"members": {
+"methods": {
+"list": {
+"description": "Lists the monitored resources that are members of a group.",
+"flatPath": "v3/projects/{projectsId}/groups/{groupsId}/members",
+"httpMethod": "GET",
+"id": "monitoring.projects.groups.members.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "An optional list filter (https://cloud.google.com/monitoring/api/learn_more#filtering) describing the members to be returned. The filter may reference the type, labels, and metadata of monitored resources that comprise the group. For example, to return only resources representing Compute Engine VM instances, use this filter: `resource.type = \"gce_instance\"` ",
+"location": "query",
+"type": "string"
+},
+"interval.endTime": {
+"description": "Required. The end of the time interval.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"interval.startTime": {
+"description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The group whose members are listed. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "A positive number that is the maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the next_page_token value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/members",
+"response": {
+"$ref": "ListGroupMembersResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+}
+}
+}
+}
+},
+"metricDescriptors": {
+"methods": {
+"create": {
+"description": "Creates a new metric descriptor. The creation is executed asynchronously. User-created metric descriptors define custom metrics (https://cloud.google.com/monitoring/custom-metrics). The metric descriptor is updated if it already exists, except that metric labels are never removed.",
+"flatPath": "v3/projects/{projectsId}/metricDescriptors",
+"httpMethod": "POST",
+"id": "monitoring.projects.metricDescriptors.create",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: 4 projects/PROJECT_ID_OR_NUMBER",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}/metricDescriptors",
+"request": {
+"$ref": "MetricDescriptor"
+},
+"response": {
+"$ref": "MetricDescriptor"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+},
+"delete": {
+"description": "Deletes a metric descriptor. Only user-created custom metrics (https://cloud.google.com/monitoring/custom-metrics) can be deleted.",
+"flatPath": "v3/projects/{projectsId}/metricDescriptors/{metricDescriptorsId}",
+"httpMethod": "DELETE",
+"id": "monitoring.projects.metricDescriptors.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The metric descriptor on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]/metricDescriptors/[METRIC_ID] An example of [METRIC_ID] is: \"custom.googleapis.com/my_test_metric\".",
+"location": "path",
+"pattern": "^projects/[^/]+/metricDescriptors/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"get": {
+"description": "Gets a single metric descriptor.",
+"flatPath": "v3/projects/{projectsId}/metricDescriptors/{metricDescriptorsId}",
+"httpMethod": "GET",
+"id": "monitoring.projects.metricDescriptors.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The metric descriptor on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]/metricDescriptors/[METRIC_ID] An example value of [METRIC_ID] is \"compute.googleapis.com/instance/disk/read_bytes_count\".",
+"location": "path",
+"pattern": "^projects/[^/]+/metricDescriptors/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "MetricDescriptor"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+},
+"list": {
+"description": "Lists metric descriptors that match a filter.",
+"flatPath": "v3/projects/{projectsId}/metricDescriptors",
+"httpMethod": "GET",
+"id": "monitoring.projects.metricDescriptors.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "Optional. If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the filter (https://cloud.google.com/monitoring/api/v3/filters) specifies which metric descriptors are to be returned. For example, the following filter matches all custom metrics (https://cloud.google.com/monitoring/custom-metrics): metric.type = starts_with(\"custom.googleapis.com/\") ",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. A positive number that is the maximum number of results to return. The default and maximum value is 10,000. If a page_size <= 0 or > 10,000 is submitted, will instead return a maximum of 10,000 results.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/metricDescriptors",
+"response": {
+"$ref": "ListMetricDescriptorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+}
+}
+},
+"monitoredResourceDescriptors": {
+"methods": {
+"get": {
+"description": "Gets a single monitored resource descriptor.",
+"flatPath": "v3/projects/{projectsId}/monitoredResourceDescriptors/{monitoredResourceDescriptorsId}",
+"httpMethod": "GET",
+"id": "monitoring.projects.monitoredResourceDescriptors.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The monitored resource descriptor to get. The format is: projects/[PROJECT_ID_OR_NUMBER]/monitoredResourceDescriptors/[RESOURCE_TYPE] The [RESOURCE_TYPE] is a predefined type, such as cloudsql_database.",
+"location": "path",
+"pattern": "^projects/[^/]+/monitoredResourceDescriptors/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "MonitoredResourceDescriptor"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+},
+"list": {
+"description": "Lists monitored resource descriptors that match a filter.",
+"flatPath": "v3/projects/{projectsId}/monitoredResourceDescriptors",
+"httpMethod": "GET",
+"id": "monitoring.projects.monitoredResourceDescriptors.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "An optional filter (https://cloud.google.com/monitoring/api/v3/filters) describing the descriptors to be returned. The filter can reference the descriptor's type and labels. For example, the following filter returns only Google Compute Engine descriptors that have an id label: resource.type = starts_with(\"gce_\") AND resource.label:id ",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "A positive number that is the maximum number of results to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/monitoredResourceDescriptors",
+"response": {
+"$ref": "ListMonitoredResourceDescriptorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+}
+}
+},
+"notificationChannelDescriptors": {
+"methods": {
+"get": {
+"description": "Gets a single channel descriptor. The descriptor indicates which fields are expected / permitted for a notification channel of the given type.",
+"flatPath": "v3/projects/{projectsId}/notificationChannelDescriptors/{notificationChannelDescriptorsId}",
+"httpMethod": "GET",
+"id": "monitoring.projects.notificationChannelDescriptors.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The channel type for which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannelDescriptors/[CHANNEL_TYPE] ",
+"location": "path",
+"pattern": "^projects/[^/]+/notificationChannelDescriptors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "NotificationChannelDescriptor"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"list": {
+"description": "Lists the descriptors for supported channel types. The use of descriptors makes it possible for new channel types to be dynamically added.",
+"flatPath": "v3/projects/{projectsId}/notificationChannelDescriptors",
+"httpMethod": "GET",
+"id": "monitoring.projects.notificationChannelDescriptors.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The REST resource name of the parent from which to retrieve the notification channel descriptors. The expected syntax is: projects/[PROJECT_ID_OR_NUMBER] Note that this names (https://cloud.google.com/monitoring/api/v3#project_name) the parent container in which to look for the descriptors; to retrieve a single descriptor by name, use the GetNotificationChannelDescriptor operation, instead.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return in a single response. If not set to a positive number, a reasonable value will be chosen by the service.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If non-empty, page_token must contain a value returned as the next_page_token in a previous response to request the next set of results.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/notificationChannelDescriptors",
+"response": {
+"$ref": "ListNotificationChannelDescriptorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+}
+}
+},
+"notificationChannels": {
+"methods": {
+"create": {
+"description": "Creates a new notification channel, representing a single notification endpoint such as an email address, SMS number, or PagerDuty service.Design your application to single-thread API calls that modify the state of notification channels in a single project. This includes calls to CreateNotificationChannel, DeleteNotificationChannel and UpdateNotificationChannel.",
+"flatPath": "v3/projects/{projectsId}/notificationChannels",
+"httpMethod": "POST",
+"id": "monitoring.projects.notificationChannels.create",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] This names the container into which the channel will be written, this does not name the newly created channel. The resulting channel's name will have a normalized version of this field as a prefix, but will add /notificationChannels/[CHANNEL_ID] to identify the channel.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}/notificationChannels",
+"request": {
+"$ref": "NotificationChannel"
+},
+"response": {
+"$ref": "NotificationChannel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"delete": {
+"description": "Deletes a notification channel.Design your application to single-thread API calls that modify the state of notification channels in a single project. This includes calls to CreateNotificationChannel, DeleteNotificationChannel and UpdateNotificationChannel.",
+"flatPath": "v3/projects/{projectsId}/notificationChannels/{notificationChannelsId}",
+"httpMethod": "DELETE",
+"id": "monitoring.projects.notificationChannels.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "If true, the notification channel will be deleted regardless of its use in alert policies (the policies will be updated to remove the channel). If false, this operation will fail if the notification channel is referenced by existing alerting policies.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The channel for which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/notificationChannels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"get": {
+"description": "Gets a single notification channel. The channel includes the relevant configuration details with which the channel was created. However, the response may truncate or omit passwords, API keys, or other private key matter and thus the response may not be 100% identical to the information that was supplied in the call to the create method.",
+"flatPath": "v3/projects/{projectsId}/notificationChannels/{notificationChannelsId}",
+"httpMethod": "GET",
+"id": "monitoring.projects.notificationChannels.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The channel for which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/notificationChannels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "NotificationChannel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"getVerificationCode": {
+"description": "Requests a verification code for an already verified channel that can then be used in a call to VerifyNotificationChannel() on a different channel with an equivalent identity in the same or in a different project. This makes it possible to copy a channel between projects without requiring manual reverification of the channel. If the channel is not in the verified state, this method will fail (in other words, this may only be used if the SendNotificationChannelVerificationCode and VerifyNotificationChannel paths have already been used to put the given channel into the verified state).There is no guarantee that the verification codes returned by this method will be of a similar structure or form as the ones that are delivered to the channel via SendNotificationChannelVerificationCode; while VerifyNotificationChannel() will recognize both the codes delivered via SendNotificationChannelVerificationCode() and returned from GetNotificationChannelVerificationCode(), it is typically the case that the verification codes delivered via SendNotificationChannelVerificationCode() will be shorter and also have a shorter expiration (e.g. codes such as \"G-123456\") whereas GetVerificationCode() will typically return a much longer, websafe base 64 encoded string that has a longer expiration time.",
+"flatPath": "v3/projects/{projectsId}/notificationChannels/{notificationChannelsId}:getVerificationCode",
+"httpMethod": "POST",
+"id": "monitoring.projects.notificationChannels.getVerificationCode",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The notification channel for which a verification code is to be generated and retrieved. This must name a channel that is already verified; if the specified channel is not verified, the request will fail.",
+"location": "path",
+"pattern": "^projects/[^/]+/notificationChannels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}:getVerificationCode",
+"request": {
+"$ref": "GetNotificationChannelVerificationCodeRequest"
+},
+"response": {
+"$ref": "GetNotificationChannelVerificationCodeResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"list": {
+"description": "Lists the notification channels that have been created for the project. To list the types of notification channels that are supported, use the ListNotificationChannelDescriptors method.",
+"flatPath": "v3/projects/{projectsId}/notificationChannels",
+"httpMethod": "GET",
+"id": "monitoring.projects.notificationChannels.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "Optional. If provided, this field specifies the criteria that must be met by notification channels to be included in the response.For more details, see sorting and filtering (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] This names the container in which to look for the notification channels; it does not name a specific channel. To query a specific channel by REST resource name, use the GetNotificationChannel operation.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. A comma-separated list of fields by which to sort the result. Supports the same set of fields as in filter. Entries can be prefixed with a minus sign to sort in descending rather than ascending order.For more details, see sorting and filtering (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return in a single response. If not set to a positive number, a reasonable value will be chosen by the service.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. If non-empty, page_token must contain a value returned as the next_page_token in a previous response to request the next set of results.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/notificationChannels",
+"response": {
+"$ref": "ListNotificationChannelsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"patch": {
+"description": "Updates a notification channel. Fields not specified in the field mask remain unchanged.Design your application to single-thread API calls that modify the state of notification channels in a single project. This includes calls to CreateNotificationChannel, DeleteNotificationChannel and UpdateNotificationChannel.",
+"flatPath": "v3/projects/{projectsId}/notificationChannels/{notificationChannelsId}",
+"httpMethod": "PATCH",
+"id": "monitoring.projects.notificationChannels.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The full REST resource name for this channel. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] The [CHANNEL_ID] is automatically assigned by the server on creation.",
+"location": "path",
+"pattern": "^projects/[^/]+/notificationChannels/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. The fields to update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"request": {
+"$ref": "NotificationChannel"
+},
+"response": {
+"$ref": "NotificationChannel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"sendVerificationCode": {
+"description": "Causes a verification code to be delivered to the channel. The code can then be supplied in VerifyNotificationChannel to verify the channel.",
+"flatPath": "v3/projects/{projectsId}/notificationChannels/{notificationChannelsId}:sendVerificationCode",
+"httpMethod": "POST",
+"id": "monitoring.projects.notificationChannels.sendVerificationCode",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The notification channel to which to send a verification code.",
+"location": "path",
+"pattern": "^projects/[^/]+/notificationChannels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}:sendVerificationCode",
+"request": {
+"$ref": "SendNotificationChannelVerificationCodeRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"verify": {
+"description": "Verifies a NotificationChannel by proving receipt of the code delivered to the channel as a result of calling SendNotificationChannelVerificationCode.",
+"flatPath": "v3/projects/{projectsId}/notificationChannels/{notificationChannelsId}:verify",
+"httpMethod": "POST",
+"id": "monitoring.projects.notificationChannels.verify",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The notification channel to verify.",
+"location": "path",
+"pattern": "^projects/[^/]+/notificationChannels/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}:verify",
+"request": {
+"$ref": "VerifyNotificationChannelRequest"
+},
+"response": {
+"$ref": "NotificationChannel"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+}
+}
+},
+"snoozes": {
+"methods": {
+"create": {
+"description": "Creates a Snooze that will prevent alerts, which match the provided criteria, from being opened. The Snooze applies for a specific time interval.",
+"flatPath": "v3/projects/{projectsId}/snoozes",
+"httpMethod": "POST",
+"id": "monitoring.projects.snoozes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) in which a Snooze should be created. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+parent}/snoozes",
+"request": {
+"$ref": "Snooze"
+},
+"response": {
+"$ref": "Snooze"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"get": {
+"description": "Retrieves a Snooze by name.",
+"flatPath": "v3/projects/{projectsId}/snoozes/{snoozesId}",
+"httpMethod": "GET",
+"id": "monitoring.projects.snoozes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The ID of the Snooze to retrieve. The format is: projects/[PROJECT_ID_OR_NUMBER]/snoozes/[SNOOZE_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/snoozes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Snooze"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"list": {
+"description": "Lists the Snoozes associated with a project. Can optionally pass in filter, which specifies predicates to match Snoozes.",
+"flatPath": "v3/projects/{projectsId}/snoozes",
+"httpMethod": "GET",
+"id": "monitoring.projects.snoozes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Optional filter to restrict results to the given criteria. The following fields are supported. interval.start_time interval.end_timeFor example: ``` interval.start_time > \"2022-03-11T00:00:00-08:00\" AND interval.end_time < \"2022-03-12T00:00:00-08:00\" ``` ",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of results to return for a single query. The server may further constrain the maximum number of results returned in a single page. The value should be in the range 1, 1000. If the value given is outside this range, the server will decide the number of results to be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token from a previous call to ListSnoozesRequest to get the next page of results.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) whose Snoozes should be listed. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+parent}/snoozes",
+"response": {
+"$ref": "ListSnoozesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"patch": {
+"description": "Updates a Snooze, identified by its name, with the parameters in the given Snooze object.",
+"flatPath": "v3/projects/{projectsId}/snoozes/{snoozesId}",
+"httpMethod": "PATCH",
+"id": "monitoring.projects.snoozes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Identifier. The name of the Snooze. The format is: projects/[PROJECT_ID_OR_NUMBER]/snoozes/[SNOOZE_ID] The ID of the Snooze will be generated by the system.",
+"location": "path",
+"pattern": "^projects/[^/]+/snoozes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. The fields to update.For each field listed in update_mask: If the Snooze object supplied in the UpdateSnoozeRequest has a value for that field, the value of the field in the existing Snooze will be set to the value of the field in the supplied Snooze. If the field does not have a value in the supplied Snooze, the field in the existing Snooze is set to its default value.Fields not listed retain their existing value.The following are the field names that are accepted in update_mask: display_name interval.start_time interval.end_timeThat said, the start time and end time of the Snooze determines which fields can legally be updated. Before attempting an update, users should consult the documentation for UpdateSnoozeRequest, which talks about which fields can be updated.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"request": {
+"$ref": "Snooze"
+},
+"response": {
+"$ref": "Snooze"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+}
+}
+},
+"timeSeries": {
+"methods": {
+"create": {
+"description": "Creates or adds data to one or more time series. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response. This method does not support resource locations constraint of an organization policy (https://cloud.google.com/resource-manager/docs/organization-policy/defining-locations#setting_the_organization_policy).",
+"flatPath": "v3/projects/{projectsId}/timeSeries",
+"httpMethod": "POST",
+"id": "monitoring.projects.timeSeries.create",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}/timeSeries",
+"request": {
+"$ref": "CreateTimeSeriesRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+},
+"createService": {
+"description": "Creates or adds data to one or more service time series. A service time series is a time series for a metric from a Google Cloud service. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response. This endpoint rejects writes to user-defined metrics. This method is only for use by Google Cloud services. Use projects.timeSeries.create instead.",
+"flatPath": "v3/projects/{projectsId}/timeSeries:createService",
+"httpMethod": "POST",
+"id": "monitoring.projects.timeSeries.createService",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}/timeSeries:createService",
+"request": {
+"$ref": "CreateTimeSeriesRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.write"
+]
+},
+"list": {
+"description": "Lists time series that match a filter.",
+"flatPath": "v3/projects/{projectsId}/timeSeries",
+"httpMethod": "GET",
+"id": "monitoring.projects.timeSeries.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"aggregation.alignmentPeriod": {
+"description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
+"format": "google-duration",
+"location": "query",
+"type": "string"
+},
+"aggregation.crossSeriesReducer": {
+"description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
+"enum": [
+"REDUCE_NONE",
+"REDUCE_MEAN",
+"REDUCE_MIN",
+"REDUCE_MAX",
+"REDUCE_SUM",
+"REDUCE_STDDEV",
+"REDUCE_COUNT",
+"REDUCE_COUNT_TRUE",
+"REDUCE_COUNT_FALSE",
+"REDUCE_FRACTION_TRUE",
+"REDUCE_PERCENTILE_99",
+"REDUCE_PERCENTILE_95",
+"REDUCE_PERCENTILE_50",
+"REDUCE_PERCENTILE_05"
+],
+"enumDescriptions": [
+"No cross-time series reduction. The output of the Aligner is returned.",
+"Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"aggregation.groupByFields": {
+"description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"aggregation.perSeriesAligner": {
+"description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
+"enum": [
+"ALIGN_NONE",
+"ALIGN_DELTA",
+"ALIGN_RATE",
+"ALIGN_INTERPOLATE",
+"ALIGN_NEXT_OLDER",
+"ALIGN_MIN",
+"ALIGN_MAX",
+"ALIGN_MEAN",
+"ALIGN_COUNT",
+"ALIGN_SUM",
+"ALIGN_STDDEV",
+"ALIGN_COUNT_TRUE",
+"ALIGN_COUNT_FALSE",
+"ALIGN_FRACTION_TRUE",
+"ALIGN_PERCENTILE_99",
+"ALIGN_PERCENTILE_95",
+"ALIGN_PERCENTILE_50",
+"ALIGN_PERCENTILE_05",
+"ALIGN_PERCENT_CHANGE"
+],
+"enumDescriptions": [
+"No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
+"Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
+"Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
+"Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
+"Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
+"Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
+"Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"filter": {
+"description": "Required. A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example: metric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND metric.labels.instance_name = \"my-instance-name\" ",
+"location": "query",
+"type": "string"
+},
+"interval.endTime": {
+"description": "Required. The end of the time interval.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"interval.startTime": {
+"description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
+"format": "google-datetime",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name), organization or folder on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] organizations/[ORGANIZATION_ID] folders/[FOLDER_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"orderBy": {
+"description": "Unsupported: must be left blank. The points in each time series are currently returned in reverse time order (most recent to oldest).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "A positive number that is the maximum number of results to return. If page_size is empty or more than 100,000 results, the effective page_size is 100,000 results. If view is set to FULL, this is the maximum number of Points returned. If view is set to HEADERS, this is the maximum number of TimeSeries returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.alignmentPeriod": {
+"description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
+"format": "google-duration",
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.crossSeriesReducer": {
+"description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
+"enum": [
+"REDUCE_NONE",
+"REDUCE_MEAN",
+"REDUCE_MIN",
+"REDUCE_MAX",
+"REDUCE_SUM",
+"REDUCE_STDDEV",
+"REDUCE_COUNT",
+"REDUCE_COUNT_TRUE",
+"REDUCE_COUNT_FALSE",
+"REDUCE_FRACTION_TRUE",
+"REDUCE_PERCENTILE_99",
+"REDUCE_PERCENTILE_95",
+"REDUCE_PERCENTILE_50",
+"REDUCE_PERCENTILE_05"
+],
+"enumDescriptions": [
+"No cross-time series reduction. The output of the Aligner is returned.",
+"Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"secondaryAggregation.groupByFields": {
+"description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"secondaryAggregation.perSeriesAligner": {
+"description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
+"enum": [
+"ALIGN_NONE",
+"ALIGN_DELTA",
+"ALIGN_RATE",
+"ALIGN_INTERPOLATE",
+"ALIGN_NEXT_OLDER",
+"ALIGN_MIN",
+"ALIGN_MAX",
+"ALIGN_MEAN",
+"ALIGN_COUNT",
+"ALIGN_SUM",
+"ALIGN_STDDEV",
+"ALIGN_COUNT_TRUE",
+"ALIGN_COUNT_FALSE",
+"ALIGN_FRACTION_TRUE",
+"ALIGN_PERCENTILE_99",
+"ALIGN_PERCENTILE_95",
+"ALIGN_PERCENTILE_50",
+"ALIGN_PERCENTILE_05",
+"ALIGN_PERCENT_CHANGE"
+],
+"enumDescriptions": [
+"No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
+"Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
+"Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
+"Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
+"Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
+"Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
+"Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE."
+],
+"location": "query",
+"type": "string"
+},
+"view": {
+"description": "Required. Specifies which information is returned about the time series.",
+"enum": [
+"FULL",
+"HEADERS"
+],
+"enumDescriptions": [
+"Returns the identity of the metric(s), the time series, and the time series data.",
+"Returns the identity of the metric and the time series resource, but not the time series data."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}/timeSeries",
+"response": {
+"$ref": "ListTimeSeriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"query": {
+"deprecated": true,
+"description": "Queries time series by using Monitoring Query Language (MQL). We recommend using PromQL instead of MQL. For more information about the status of MQL, see the MQL deprecation notice (https://cloud.google.com/stackdriver/docs/deprecations/mql).",
+"flatPath": "v3/projects/{projectsId}/timeSeries:query",
+"httpMethod": "POST",
+"id": "monitoring.projects.timeSeries.query",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) on which to execute the request. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}/timeSeries:query",
+"request": {
+"$ref": "QueryTimeSeriesRequest"
+},
+"response": {
+"$ref": "QueryTimeSeriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+}
+}
+},
+"uptimeCheckConfigs": {
+"methods": {
+"create": {
+"description": "Creates a new Uptime check configuration.",
+"flatPath": "v3/projects/{projectsId}/uptimeCheckConfigs",
+"httpMethod": "POST",
+"id": "monitoring.projects.uptimeCheckConfigs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) in which to create the Uptime check. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+parent}/uptimeCheckConfigs",
+"request": {
+"$ref": "UptimeCheckConfig"
+},
+"response": {
+"$ref": "UptimeCheckConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"delete": {
+"description": "Deletes an Uptime check configuration. Note that this method will fail if the Uptime check configuration is referenced by an alert policy or other dependent configs that would be rendered invalid by the deletion.",
+"flatPath": "v3/projects/{projectsId}/uptimeCheckConfigs/{uptimeCheckConfigsId}",
+"httpMethod": "DELETE",
+"id": "monitoring.projects.uptimeCheckConfigs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The Uptime check configuration to delete. The format is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/uptimeCheckConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"get": {
+"description": "Gets a single Uptime check configuration.",
+"flatPath": "v3/projects/{projectsId}/uptimeCheckConfigs/{uptimeCheckConfigsId}",
+"httpMethod": "GET",
+"id": "monitoring.projects.uptimeCheckConfigs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The Uptime check configuration to retrieve. The format is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] ",
+"location": "path",
+"pattern": "^projects/[^/]+/uptimeCheckConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "UptimeCheckConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"list": {
+"description": "Lists the existing valid Uptime check configurations for the project (leaving out any invalid configurations).",
+"flatPath": "v3/projects/{projectsId}/uptimeCheckConfigs",
+"httpMethod": "GET",
+"id": "monitoring.projects.uptimeCheckConfigs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "If provided, this field specifies the criteria that must be met by uptime checks to be included in the response.For more details, see Filtering syntax (https://cloud.google.com/monitoring/api/v3/sorting-and-filtering#filter_syntax).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return in a single response. The server may further constrain the maximum number of results returned in a single page. If the page_size is <=0, the server will decide the number of results to be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return more results from the previous method call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project (https://cloud.google.com/monitoring/api/v3#project_name) whose Uptime check configurations are listed. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+parent}/uptimeCheckConfigs",
+"response": {
+"$ref": "ListUptimeCheckConfigsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"patch": {
+"description": "Updates an Uptime check configuration. You can either replace the entire configuration with a new one or replace only certain fields in the current configuration by specifying the fields to be updated via updateMask. Returns the updated configuration.",
+"flatPath": "v3/projects/{projectsId}/uptimeCheckConfigs/{uptimeCheckConfigsId}",
+"httpMethod": "PATCH",
+"id": "monitoring.projects.uptimeCheckConfigs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. A unique resource name for this Uptime check configuration. The format is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] [PROJECT_ID_OR_NUMBER] is the Workspace host project associated with the Uptime check.This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.",
+"location": "path",
+"pattern": "^projects/[^/]+/uptimeCheckConfigs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. If present, only the listed fields in the current Uptime check configuration are updated with values from the new configuration. If this field is empty, then the current configuration is completely replaced with the new configuration.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"request": {
+"$ref": "UptimeCheckConfig"
+},
+"response": {
+"$ref": "UptimeCheckConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+}
+}
+}
+}
+},
+"services": {
+"methods": {
+"create": {
+"description": "Create a Service.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services",
+"httpMethod": "POST",
+"id": "monitoring.services.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource name (https://cloud.google.com/monitoring/api/v3#project_name) of the parent Metrics Scope. The format is: projects/[PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+},
+"serviceId": {
+"description": "Optional. The Service id to use for this Service. If omitted, an id will be generated instead. Must match the pattern [a-z0-9\\-]+",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+parent}/services",
+"request": {
+"$ref": "Service"
+},
+"response": {
+"$ref": "Service"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"delete": {
+"description": "Soft delete this Service.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services/{servicesId}",
+"httpMethod": "DELETE",
+"id": "monitoring.services.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Service to delete. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"get": {
+"description": "Get the named Service.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services/{servicesId}",
+"httpMethod": "GET",
+"id": "monitoring.services.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Service"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"list": {
+"description": "List Services for this Metrics Scope.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services",
+"httpMethod": "GET",
+"id": "monitoring.services.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "A filter specifying what Services to return. The filter supports filtering on a particular service-identifier type or one of its attributes.To filter on a particular service-identifier type, the identifier_case refers to which option in the identifier field is populated. For example, the filter identifier_case = \"CUSTOM\" would match all services with a value for the custom field. Valid options include \"CUSTOM\", \"APP_ENGINE\", \"MESH_ISTIO\", and the other options listed at https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services#ServiceTo filter on an attribute of a service-identifier type, apply the filter name by using the snake case of the service-identifier type and the attribute of that service-identifier type, and join the two with a period. For example, to filter by the meshUid field of the MeshIstio service-identifier type, you must filter on mesh_istio.mesh_uid = \"123\" to match all services with mesh UID \"123\". Service-identifier types and their attributes are described at https://cloud.google.com/monitoring/api/ref_v3/rest/v3/services#Service",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "A non-negative number that is the maximum number of results to return. When 0, use default page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource name of the parent containing the listed services, either a project (https://cloud.google.com/monitoring/api/v3#project_name) or a Monitoring Metrics Scope. The formats are: projects/[PROJECT_ID_OR_NUMBER] workspaces/[HOST_PROJECT_ID_OR_NUMBER] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+parent}/services",
+"response": {
+"$ref": "ListServicesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"patch": {
+"description": "Update this Service.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services/{servicesId}",
+"httpMethod": "PATCH",
+"id": "monitoring.services.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "A set of field paths defining which fields to use for the update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"request": {
+"$ref": "Service"
+},
+"response": {
+"$ref": "Service"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+}
+},
+"resources": {
+"serviceLevelObjectives": {
+"methods": {
+"create": {
+"description": "Create a ServiceLevelObjective for the given Service.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services/{servicesId}/serviceLevelObjectives",
+"httpMethod": "POST",
+"id": "monitoring.services.serviceLevelObjectives.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Resource name of the parent Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+},
+"serviceLevelObjectiveId": {
+"description": "Optional. The ServiceLevelObjective id to use for this ServiceLevelObjective. If omitted, an id will be generated instead. Must match the pattern ^[a-zA-Z0-9-_:.]+$",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+parent}/serviceLevelObjectives",
+"request": {
+"$ref": "ServiceLevelObjective"
+},
+"response": {
+"$ref": "ServiceLevelObjective"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"delete": {
+"description": "Delete the given ServiceLevelObjective.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services/{servicesId}/serviceLevelObjectives/{serviceLevelObjectivesId}",
+"httpMethod": "DELETE",
+"id": "monitoring.services.serviceLevelObjectives.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the ServiceLevelObjective to delete. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+/serviceLevelObjectives/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+},
+"get": {
+"description": "Get a ServiceLevelObjective by name.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services/{servicesId}/serviceLevelObjectives/{serviceLevelObjectivesId}",
+"httpMethod": "GET",
+"id": "monitoring.services.serviceLevelObjectives.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the ServiceLevelObjective to get. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+/serviceLevelObjectives/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "View of the ServiceLevelObjective to return. If DEFAULT, return the ServiceLevelObjective as originally defined. If EXPLICIT and the ServiceLevelObjective is defined in terms of a BasicSli, replace the BasicSli with a RequestBasedSli spelling out how the SLI is computed.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"FULL",
+"EXPLICIT"
+],
+"enumDescriptions": [
+"Same as FULL.",
+"Return the embedded ServiceLevelIndicator in the form in which it was defined. If it was defined using a BasicSli, return that BasicSli.",
+"For ServiceLevelIndicators using BasicSli articulation, instead return the ServiceLevelIndicator with its mode of computation fully spelled out as a RequestBasedSli. For ServiceLevelIndicators using RequestBasedSli or WindowsBasedSli, return the ServiceLevelIndicator as it was provided."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"response": {
+"$ref": "ServiceLevelObjective"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"list": {
+"description": "List the ServiceLevelObjectives for the given Service.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services/{servicesId}/serviceLevelObjectives",
+"httpMethod": "GET",
+"id": "monitoring.services.serviceLevelObjectives.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "A filter specifying what ServiceLevelObjectives to return.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "A non-negative number that is the maximum number of results to return. When 0, use default page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Resource name of the parent containing the listed SLOs, either a project or a Monitoring Metrics Scope. The formats are: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] workspaces/[HOST_PROJECT_ID_OR_NUMBER]/services/- ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "View of the ServiceLevelObjectives to return. If DEFAULT, return each ServiceLevelObjective as originally defined. If EXPLICIT and the ServiceLevelObjective is defined in terms of a BasicSli, replace the BasicSli with a RequestBasedSli spelling out how the SLI is computed.",
+"enum": [
+"VIEW_UNSPECIFIED",
+"FULL",
+"EXPLICIT"
+],
+"enumDescriptions": [
+"Same as FULL.",
+"Return the embedded ServiceLevelIndicator in the form in which it was defined. If it was defined using a BasicSli, return that BasicSli.",
+"For ServiceLevelIndicators using BasicSli articulation, instead return the ServiceLevelIndicator with its mode of computation fully spelled out as a RequestBasedSli. For ServiceLevelIndicators using RequestBasedSli or WindowsBasedSli, return the ServiceLevelIndicator as it was provided."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+parent}/serviceLevelObjectives",
+"response": {
+"$ref": "ListServiceLevelObjectivesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+},
+"patch": {
+"description": "Update the given ServiceLevelObjective.",
+"flatPath": "v3/{v3Id}/{v3Id1}/services/{servicesId}/serviceLevelObjectives/{serviceLevelObjectivesId}",
+"httpMethod": "PATCH",
+"id": "monitoring.services.serviceLevelObjectives.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Resource name for this ServiceLevelObjective. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME] ",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+/serviceLevelObjectives/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "A set of field paths defining which fields to use for the update.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/{+name}",
+"request": {
+"$ref": "ServiceLevelObjective"
+},
+"response": {
+"$ref": "ServiceLevelObjective"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring"
+]
+}
+}
+}
+}
+},
+"uptimeCheckIps": {
+"methods": {
+"list": {
+"description": "Returns the list of IP addresses that checkers run from.",
+"flatPath": "v3/uptimeCheckIps",
+"httpMethod": "GET",
+"id": "monitoring.uptimeCheckIps.list",
+"parameterOrder": [],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of results to return in a single response. The server may further constrain the maximum number of results returned in a single page. If the page_size is <=0, the server will decide the number of results to be returned. NOTE: this field is not yet implemented",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return more results from the previous method call. NOTE: this field is not yet implemented",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v3/uptimeCheckIps",
+"response": {
+"$ref": "ListUptimeCheckIpsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/monitoring",
+"https://www.googleapis.com/auth/monitoring.read"
+]
+}
+}
+}
+},
+"revision": "20250102",
+"rootUrl": "https://monitoring.googleapis.com/",
+"schemas": {
+"Aggregation": {
+"description": "Describes how to combine multiple time series to provide a different view of the data. Aggregation of time series is done in two steps. First, each time series in the set is aligned to the same time interval boundaries, then the set of time series is optionally reduced in number.Alignment consists of applying the per_series_aligner operation to each time series after its data has been divided into regular alignment_period time intervals. This process takes all of the data points in an alignment period, applies a mathematical transformation such as averaging, minimum, maximum, delta, etc., and converts them into a single data point per period.Reduction is when the aligned and transformed time series can optionally be combined, reducing the number of time series through similar mathematical transformations. Reduction involves applying a cross_series_reducer to all the time series, optionally sorting the time series into subsets with group_by_fields, and applying the reducer to each subset.The raw time series data can contain a huge amount of information from multiple sources. Alignment and reduction transforms this mass of data into a more manageable and representative collection of data, for example \"the 95% latency across the average of all tasks in a cluster\". This representative data can be more easily graphed and comprehended, and the individual time series data is still available for later drilldown. For more details, see Filtering and aggregation (https://cloud.google.com/monitoring/api/v3/aggregation).",
+"id": "Aggregation",
+"properties": {
+"alignmentPeriod": {
+"description": "The alignment_period specifies a time interval, in seconds, that is used to divide the data in all the time series into consistent blocks of time. This will be done before the per-series aligner can be applied to the data.The value must be at least 60 seconds. If a per-series aligner other than ALIGN_NONE is specified, this field is required or an error is returned. If no per-series aligner is specified, or the aligner ALIGN_NONE is specified, then this field is ignored.The maximum value of the alignment_period is 104 weeks (2 years) for charts, and 90,000 seconds (25 hours) for alerting policies.",
+"format": "google-duration",
+"type": "string"
+},
+"crossSeriesReducer": {
+"description": "The reduction operation to be used to combine time series into a single time series, where the value of each data point in the resulting series is a function of all the already aligned values in the input time series.Not all reducer operations can be applied to all time series. The valid choices depend on the metric_kind and the value_type of the original time series. Reduction can yield a time series with a different metric_kind or value_type than the input time series.Time series data must first be aligned (see per_series_aligner) in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified, and must not be ALIGN_NONE. An alignment_period must also be specified; otherwise, an error is returned.",
+"enum": [
+"REDUCE_NONE",
+"REDUCE_MEAN",
+"REDUCE_MIN",
+"REDUCE_MAX",
+"REDUCE_SUM",
+"REDUCE_STDDEV",
+"REDUCE_COUNT",
+"REDUCE_COUNT_TRUE",
+"REDUCE_COUNT_FALSE",
+"REDUCE_FRACTION_TRUE",
+"REDUCE_PERCENTILE_99",
+"REDUCE_PERCENTILE_95",
+"REDUCE_PERCENTILE_50",
+"REDUCE_PERCENTILE_05"
+],
+"enumDescriptions": [
+"No cross-time series reduction. The output of the Aligner is returned.",
+"Reduce by computing the mean value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the minimum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the maximum value across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the sum across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric and distribution values. The value_type of the output is the same as the value_type of the input.",
+"Reduce by computing the standard deviation across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics with numeric or distribution values. The value_type of the output is DOUBLE.",
+"Reduce by computing the number of data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of numeric, Boolean, distribution, and string value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of True-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the number of False-valued data points across time series for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The value_type of the output is INT64.",
+"Reduce by computing the ratio of the number of True-valued data points to the total number of data points for each alignment period. This reducer is valid for DELTA and GAUGE metrics of Boolean value_type. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Reduce by computing the 99th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 95th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 50th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE.",
+"Reduce by computing the 5th percentile (https://en.wikipedia.org/wiki/Percentile) of data points across time series for each alignment period. This reducer is valid for GAUGE and DELTA metrics of numeric and distribution type. The value of the output is DOUBLE."
+],
+"type": "string"
+},
+"groupByFields": {
+"description": "The set of fields to preserve when cross_series_reducer is specified. The group_by_fields determine how the time series are partitioned into subsets prior to applying the aggregation operation. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The cross_series_reducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in group_by_fields are aggregated away. If group_by_fields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If cross_series_reducer is not defined, this field is ignored.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"perSeriesAligner": {
+"description": "An Aligner describes how to bring the data points in a single time series into temporal alignment. Except for ALIGN_NONE, all alignments cause all the data points in an alignment_period to be mathematically grouped together, resulting in a single data point for each alignment_period with end timestamp at the end of the period.Not all alignment operations may be applied to all time series. The valid choices depend on the metric_kind and value_type of the original time series. Alignment can change the metric_kind or the value_type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If cross_series_reducer is specified, then per_series_aligner must be specified and not equal to ALIGN_NONE and alignment_period must be specified; otherwise, an error is returned.",
+"enum": [
+"ALIGN_NONE",
+"ALIGN_DELTA",
+"ALIGN_RATE",
+"ALIGN_INTERPOLATE",
+"ALIGN_NEXT_OLDER",
+"ALIGN_MIN",
+"ALIGN_MAX",
+"ALIGN_MEAN",
+"ALIGN_COUNT",
+"ALIGN_SUM",
+"ALIGN_STDDEV",
+"ALIGN_COUNT_TRUE",
+"ALIGN_COUNT_FALSE",
+"ALIGN_FRACTION_TRUE",
+"ALIGN_PERCENTILE_99",
+"ALIGN_PERCENTILE_95",
+"ALIGN_PERCENTILE_50",
+"ALIGN_PERCENTILE_05",
+"ALIGN_PERCENT_CHANGE"
+],
+"enumDescriptions": [
+"No alignment. Raw data is returned. Not valid if cross-series reduction is requested. The value_type of the result is the same as the value_type of the input.",
+"Align and convert to DELTA. The output is delta = y1 - y0.This alignment is valid for CUMULATIVE and DELTA metrics. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The value_type of the aligned result is the same as the value_type of the input.",
+"Align and convert to a rate. The result is computed as rate = (y1 - y0)/(t1 - t0), or \"delta over time\". Think of this aligner as providing the slope of the line that passes through the value at the start and at the end of the alignment_period.This aligner is valid for CUMULATIVE and DELTA metrics with numeric values. If the selected alignment period results in periods with no data, then the aligned value for such a period is created by interpolation. The output is a GAUGE metric with value_type DOUBLE.If, by \"rate\", you mean \"percentage change\", see the ALIGN_PERCENT_CHANGE aligner instead.",
+"Align by interpolating between adjacent points around the alignment period boundary. This aligner is valid for GAUGE metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align by moving the most recent data point before the end of the alignment period to the boundary at the end of the alignment period. This aligner is valid for GAUGE metrics. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the minimum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the maximum value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the mean value in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the aligned result is DOUBLE.",
+"Align the time series by returning the number of values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric or Boolean values. The value_type of the aligned result is INT64.",
+"Align the time series by returning the sum of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric and distribution values. The value_type of the aligned result is the same as the value_type of the input.",
+"Align the time series by returning the standard deviation of the values in each alignment period. This aligner is valid for GAUGE and DELTA metrics with numeric values. The value_type of the output is DOUBLE.",
+"Align the time series by returning the number of True values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the number of False values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The value_type of the output is INT64.",
+"Align the time series by returning the ratio of the number of True values to the total number of values in each alignment period. This aligner is valid for GAUGE metrics with Boolean values. The output value is in the range 0.0, 1.0 and has value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 99th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 95th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 50th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align the time series by using percentile aggregation (https://en.wikipedia.org/wiki/Percentile). The resulting data point in each alignment period is the 5th percentile of all data points in the period. This aligner is valid for GAUGE and DELTA metrics with distribution values. The output is a GAUGE metric with value_type DOUBLE.",
+"Align and convert to a percentage change. This aligner is valid for GAUGE and DELTA metrics with numeric values. This alignment returns ((current - previous)/previous) * 100, where the value of previous is determined based on the alignment_period.If the values of current and previous are both 0, then the returned value is 0. If only previous is 0, the returned value is infinity.A 10-minute moving mean is computed at each point of the alignment period prior to the above calculation to smooth the metric and prevent false positives from very short-lived spikes. The moving mean is only applicable for data whose values are >= 0. Any values < 0 are treated as a missing datapoint, and are ignored. While DELTA metrics are accepted by this alignment, special care should be taken that the values for the metric will always be positive. The output is a GAUGE metric with value_type DOUBLE."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AlertPolicy": {
+"description": "A description of the conditions under which some aspect of your system is considered to be \"unhealthy\" and the ways to notify people or services about this state. For an overview of alerting policies, see Introduction to Alerting (https://cloud.google.com/monitoring/alerts/).",
+"id": "AlertPolicy",
+"properties": {
+"alertStrategy": {
+"$ref": "AlertStrategy",
+"description": "Control over how this alerting policy's notification channels are notified."
+},
+"combiner": {
+"description": "How to combine the results of multiple conditions to determine if an incident should be opened. If condition_time_series_query_language is present, this must be COMBINE_UNSPECIFIED.",
+"enum": [
+"COMBINE_UNSPECIFIED",
+"AND",
+"OR",
+"AND_WITH_MATCHING_RESOURCE"
+],
+"enumDescriptions": [
+"An unspecified combiner.",
+"Combine conditions using the logical AND operator. An incident is created only if all the conditions are met simultaneously. This combiner is satisfied if all conditions are met, even if they are met on completely different resources.",
+"Combine conditions using the logical OR operator. An incident is created if any of the listed conditions is met.",
+"Combine conditions using logical AND operator, but unlike the regular AND option, an incident is created only if all conditions are met simultaneously on at least one resource."
+],
+"type": "string"
+},
+"conditions": {
+"description": "A list of conditions for the policy. The conditions are combined by AND or OR according to the combiner field. If the combined conditions evaluate to true, then an incident is created. A policy can have from one to six conditions. If condition_time_series_query_language is present, it must be the only condition. If condition_monitoring_query_language is present, it must be the only condition.",
+"items": {
+"$ref": "Condition"
+},
+"type": "array"
+},
+"creationRecord": {
+"$ref": "MutationRecord",
+"description": "A read-only record of the creation of the alerting policy. If provided in a call to create or update, this field will be ignored."
+},
+"displayName": {
+"description": "A short name or phrase used to identify the policy in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple policies in the same project. The name is limited to 512 Unicode characters.The convention for the display_name of a PrometheusQueryLanguageCondition is \"{rule group name}/{alert name}\", where the {rule group name} and {alert name} should be taken from the corresponding Prometheus configuration file. This convention is not enforced. In any case the display_name is not a unique key of the AlertPolicy.",
+"type": "string"
+},
+"documentation": {
+"$ref": "Documentation",
+"description": "Documentation that is included with notifications and incidents related to this policy. Best practice is for the documentation to include information to help responders understand, mitigate, escalate, and correct the underlying problems detected by the alerting policy. Notification channels that have limited capacity might not show this documentation."
+},
+"enabled": {
+"description": "Whether or not the policy is enabled. On write, the default interpretation if unset is that the policy is enabled. On read, clients should not make any assumption about the state if it has not been populated. The field should always be populated on List and Get operations, unless a field projection has been specified that strips it out.",
+"type": "boolean"
+},
+"mutationRecord": {
+"$ref": "MutationRecord",
+"description": "A read-only record of the most recent change to the alerting policy. If provided in a call to create or update, this field will be ignored."
+},
+"name": {
+"description": "Identifier. Required if the policy exists. The resource name for this policy. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[ALERT_POLICY_ID] [ALERT_POLICY_ID] is assigned by Cloud Monitoring when the policy is created. When calling the alertPolicies.create method, do not include the name field in the alerting policy passed as part of the request.",
+"type": "string"
+},
+"notificationChannels": {
+"description": "Identifies the notification channels to which notifications should be sent when incidents are opened or closed or when new violations occur on an already opened incident. Each element of this array corresponds to the name field in each of the NotificationChannel objects that are returned from the ListNotificationChannels method. The format of the entries in this field is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] ",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"severity": {
+"description": "Optional. The severity of an alerting policy indicates how important incidents generated by that policy are. The severity level will be displayed on the Incident detail page and in notifications.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"CRITICAL",
+"ERROR",
+"WARNING"
+],
+"enumDescriptions": [
+"No severity is specified. This is the default value.",
+"This is the highest severity level. Use this if the problem could cause significant damage or downtime.",
+"This is the medium severity level. Use this if the problem could cause minor damage or downtime.",
+"This is the lowest severity level. Use this if the problem is not causing any damage or downtime, but could potentially lead to a problem in the future."
+],
+"type": "string"
+},
+"userLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "User-supplied key/value data to be used for organizing and identifying the AlertPolicy objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter.Note that Prometheus {alert name} is a valid Prometheus label names (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels), whereas Prometheus {rule group} is an unrestricted UTF-8 string. This means that they cannot be stored as-is in user labels, because they may contain characters that are not allowed in user-label values.",
+"type": "object"
+},
+"validity": {
+"$ref": "Status",
+"description": "Read-only description of how the alerting policy is invalid. This field is only set when the alerting policy is invalid. An invalid alerting policy will not generate incidents."
+}
+},
+"type": "object"
+},
+"AlertStrategy": {
+"description": "Control over how the notification channels in notification_channels are notified when this alert fires.",
+"id": "AlertStrategy",
+"properties": {
+"autoClose": {
+"description": "If an alerting policy that was active has no data for this long, any open incidents will close",
+"format": "google-duration",
+"type": "string"
+},
+"notificationChannelStrategy": {
+"description": "Control how notifications will be sent out, on a per-channel basis.",
+"items": {
+"$ref": "NotificationChannelStrategy"
+},
+"type": "array"
+},
+"notificationPrompts": {
+"description": "For log-based alert policies, the notification prompts is always OPENED. For non log-based alert policies, the notification prompts can be OPENED or OPENED, CLOSED.",
+"items": {
+"enum": [
+"NOTIFICATION_PROMPT_UNSPECIFIED",
+"OPENED",
+"CLOSED"
+],
+"enumDescriptions": [
+"No strategy specified. Treated as error.",
+"Notify when an incident is opened.",
+"Notify when an incident is closed."
+],
+"type": "string"
+},
+"type": "array"
+},
+"notificationRateLimit": {
+"$ref": "NotificationRateLimit",
+"description": "Required for log-based alerting policies, i.e. policies with a LogMatch condition.This limit is not implemented for alerting policies that do not have a LogMatch condition."
+}
+},
+"type": "object"
+},
+"AppEngine": {
+"description": "App Engine service. Learn more at https://cloud.google.com/appengine.",
+"id": "AppEngine",
+"properties": {
+"moduleId": {
+"description": "The ID of the App Engine module underlying this service. Corresponds to the module_id resource label in the gae_app monitored resource (https://cloud.google.com/monitoring/api/resources#tag_gae_app).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AvailabilityCriteria": {
+"description": "Future parameters for the availability SLI.",
+"id": "AvailabilityCriteria",
+"properties": {},
+"type": "object"
+},
+"BasicAuthentication": {
+"description": "The authentication parameters to provide to the specified resource or URL that requires a username and password. Currently, only Basic HTTP authentication (https://tools.ietf.org/html/rfc7617) is supported in Uptime checks.",
+"id": "BasicAuthentication",
+"properties": {
+"password": {
+"description": "The password to use when authenticating with the HTTP server.",
+"type": "string"
+},
+"username": {
+"description": "The username to use when authenticating with the HTTP server.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BasicService": {
+"description": "A well-known service type, defined by its service type and service labels. Documentation and examples here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli).",
+"id": "BasicService",
+"properties": {
+"serviceLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels that specify the resource that emits the monitoring data which is used for SLO reporting of this Service. Documentation and valid values for given service types here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli).",
+"type": "object"
+},
+"serviceType": {
+"description": "The type of service that this basic service defines, e.g. APP_ENGINE service type. Documentation and valid values here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BasicSli": {
+"description": "An SLI measuring performance on a well-known service type. Performance will be computed on the basis of pre-defined metrics. The type of the service_resource determines the metrics to use and the service_resource.labels and metric_labels are used to construct a monitoring filter to filter that metric down to just the data relevant to this service.",
+"id": "BasicSli",
+"properties": {
+"availability": {
+"$ref": "AvailabilityCriteria",
+"description": "Good service is defined to be the count of requests made to this service that return successfully."
+},
+"latency": {
+"$ref": "LatencyCriteria",
+"description": "Good service is defined to be the count of requests made to this service that are fast enough with respect to latency.threshold."
+},
+"location": {
+"description": "OPTIONAL: The set of locations to which this SLI is relevant. Telemetry from other locations will not be used to calculate performance for this SLI. If omitted, this SLI applies to all locations in which the Service has activity. For service types that don't support breaking down by location, setting this field will result in an error.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"method": {
+"description": "OPTIONAL: The set of RPCs to which this SLI is relevant. Telemetry from other methods will not be used to calculate performance for this SLI. If omitted, this SLI applies to all the Service's methods. For service types that don't support breaking down by method, setting this field will result in an error.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"version": {
+"description": "OPTIONAL: The set of API versions to which this SLI is relevant. Telemetry from other API versions will not be used to calculate performance for this SLI. If omitted, this SLI applies to all API versions. For service types that don't support breaking down by version, setting this field will result in an error.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BooleanTest": {
+"description": "A test that uses an alerting result in a boolean column produced by the SQL query.",
+"id": "BooleanTest",
+"properties": {
+"column": {
+"description": "Required. The name of the column containing the boolean value. If the value in a row is NULL, that row is ignored.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BucketOptions": {
+"description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i > 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.",
+"id": "BucketOptions",
+"properties": {
+"explicitBuckets": {
+"$ref": "Explicit",
+"description": "The explicit buckets."
+},
+"exponentialBuckets": {
+"$ref": "Exponential",
+"description": "The exponential buckets."
+},
+"linearBuckets": {
+"$ref": "Linear",
+"description": "The linear bucket."
+}
+},
+"type": "object"
+},
+"CloudEndpoints": {
+"description": "Cloud Endpoints service. Learn more at https://cloud.google.com/endpoints.",
+"id": "CloudEndpoints",
+"properties": {
+"service": {
+"description": "The name of the Cloud Endpoints service underlying this service. Corresponds to the service resource label in the api monitored resource (https://cloud.google.com/monitoring/api/resources#tag_api).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudFunctionV2Target": {
+"description": "A Synthetic Monitor deployed to a Cloud Functions V2 instance.",
+"id": "CloudFunctionV2Target",
+"properties": {
+"cloudRunRevision": {
+"$ref": "MonitoredResource",
+"description": "Output only. The cloud_run_revision Monitored Resource associated with the GCFv2. The Synthetic Monitor execution results (metrics, logs, and spans) are reported against this Monitored Resource. This field is output only.",
+"readOnly": true
+},
+"name": {
+"description": "Required. Fully qualified GCFv2 resource name i.e. projects/{project}/locations/{location}/functions/{function} Required.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudRun": {
+"description": "Cloud Run service. Learn more at https://cloud.google.com/run.",
+"id": "CloudRun",
+"properties": {
+"location": {
+"description": "The location the service is run. Corresponds to the location resource label in the cloud_run_revision monitored resource (https://cloud.google.com/monitoring/api/resources#tag_cloud_run_revision).",
+"type": "string"
+},
+"serviceName": {
+"description": "The name of the Cloud Run service. Corresponds to the service_name resource label in the cloud_run_revision monitored resource (https://cloud.google.com/monitoring/api/resources#tag_cloud_run_revision).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ClusterIstio": {
+"description": "Istio service scoped to a single Kubernetes cluster. Learn more at https://istio.io. Clusters running OSS Istio will have their services ingested as this type.",
+"id": "ClusterIstio",
+"properties": {
+"clusterName": {
+"description": "The name of the Kubernetes cluster in which this Istio service is defined. Corresponds to the cluster_name resource label in k8s_cluster resources.",
+"type": "string"
+},
+"location": {
+"description": "The location of the Kubernetes cluster in which this Istio service is defined. Corresponds to the location resource label in k8s_cluster resources.",
+"type": "string"
+},
+"serviceName": {
+"description": "The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.",
+"type": "string"
+},
+"serviceNamespace": {
+"description": "The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CollectdPayload": {
+"description": "A collection of data points sent from a collectd-based plugin. See the collectd documentation for more information.",
+"id": "CollectdPayload",
+"properties": {
+"endTime": {
+"description": "The end time of the interval.",
+"format": "google-datetime",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"$ref": "TypedValue"
+},
+"description": "The measurement metadata. Example: \"process_id\" -> 12345",
+"type": "object"
+},
+"plugin": {
+"description": "The name of the plugin. Example: \"disk\".",
+"type": "string"
+},
+"pluginInstance": {
+"description": "The instance name of the plugin Example: \"hdcl\".",
+"type": "string"
+},
+"startTime": {
+"description": "The start time of the interval.",
+"format": "google-datetime",
+"type": "string"
+},
+"type": {
+"description": "The measurement type. Example: \"memory\".",
+"type": "string"
+},
+"typeInstance": {
+"description": "The measurement type instance. Example: \"used\".",
+"type": "string"
+},
+"values": {
+"description": "The measured values during this time interval. Each value must have a different data_source_name.",
+"items": {
+"$ref": "CollectdValue"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CollectdPayloadError": {
+"description": "Describes the error status for payloads that were not written.",
+"id": "CollectdPayloadError",
+"properties": {
+"error": {
+"$ref": "Status",
+"description": "Records the error status for the payload. If this field is present, the partial errors for nested values won't be populated."
+},
+"index": {
+"description": "The zero-based index in CreateCollectdTimeSeriesRequest.collectd_payloads.",
+"format": "int32",
+"type": "integer"
+},
+"valueErrors": {
+"description": "Records the error status for values that were not written due to an error.Failed payloads for which nothing is written will not include partial value errors.",
+"items": {
+"$ref": "CollectdValueError"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CollectdValue": {
+"description": "A single data point from a collectd-based plugin.",
+"id": "CollectdValue",
+"properties": {
+"dataSourceName": {
+"description": "The data source for the collectd value. For example, there are two data sources for network measurements: \"rx\" and \"tx\".",
+"type": "string"
+},
+"dataSourceType": {
+"description": "The type of measurement.",
+"enum": [
+"UNSPECIFIED_DATA_SOURCE_TYPE",
+"GAUGE",
+"COUNTER",
+"DERIVE",
+"ABSOLUTE"
+],
+"enumDescriptions": [
+"An unspecified data source type. This corresponds to google.api.MetricDescriptor.MetricKind.METRIC_KIND_UNSPECIFIED.",
+"An instantaneous measurement of a varying quantity. This corresponds to google.api.MetricDescriptor.MetricKind.GAUGE.",
+"A cumulative value over time. This corresponds to google.api.MetricDescriptor.MetricKind.CUMULATIVE.",
+"A rate of change of the measurement.",
+"An amount of change since the last measurement interval. This corresponds to google.api.MetricDescriptor.MetricKind.DELTA."
+],
+"type": "string"
+},
+"value": {
+"$ref": "TypedValue",
+"description": "The measurement value."
+}
+},
+"type": "object"
+},
+"CollectdValueError": {
+"description": "Describes the error status for values that were not written.",
+"id": "CollectdValueError",
+"properties": {
+"error": {
+"$ref": "Status",
+"description": "Records the error status for the value."
+},
+"index": {
+"description": "The zero-based index in CollectdPayload.values within the parent CreateCollectdTimeSeriesRequest.collectd_payloads.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Condition": {
+"description": "A condition is a true/false test that determines when an alerting policy should open an incident. If a condition evaluates to true, it signifies that something is wrong.",
+"id": "Condition",
+"properties": {
+"conditionAbsent": {
+"$ref": "MetricAbsence",
+"description": "A condition that checks that a time series continues to receive new data points."
+},
+"conditionMatchedLog": {
+"$ref": "LogMatch",
+"description": "A condition that checks for log messages matching given constraints. If set, no other conditions can be present."
+},
+"conditionMonitoringQueryLanguage": {
+"$ref": "MonitoringQueryLanguageCondition",
+"description": "A condition that uses the Monitoring Query Language to define alerts."
+},
+"conditionPrometheusQueryLanguage": {
+"$ref": "PrometheusQueryLanguageCondition",
+"description": "A condition that uses the Prometheus query language to define alerts."
+},
+"conditionSql": {
+"$ref": "SqlCondition",
+"description": "A condition that periodically evaluates a SQL query result."
+},
+"conditionThreshold": {
+"$ref": "MetricThreshold",
+"description": "A condition that compares a time series against a threshold."
+},
+"displayName": {
+"description": "A short name or phrase used to identify the condition in dashboards, notifications, and incidents. To avoid confusion, don't use the same display name for multiple conditions in the same policy.",
+"type": "string"
+},
+"name": {
+"description": "Required if the condition exists. The unique resource name for this condition. Its format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID] [CONDITION_ID] is assigned by Cloud Monitoring when the condition is created as part of a new or updated alerting policy.When calling the alertPolicies.create method, do not include the name field in the conditions of the requested alerting policy. Cloud Monitoring creates the condition identifiers and includes them in the new policy.When calling the alertPolicies.update method to update a policy, including a condition name causes the existing condition to be updated. Conditions without names are added to the updated policy. Existing conditions are deleted if they are not updated.Best practice is to preserve [CONDITION_ID] if you make only small changes, such as those to condition thresholds, durations, or trigger values. Otherwise, treat the change as a new condition and let the existing condition be deleted.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ContentMatcher": {
+"description": "Optional. Used to perform content matching. This allows matching based on substrings and regular expressions, together with their negations. Only the first 4 MB of an HTTP or HTTPS check's response (and the first 1 MB of a TCP check's response) are examined for purposes of content matching.",
+"id": "ContentMatcher",
+"properties": {
+"content": {
+"description": "String, regex or JSON content to match. Maximum 1024 bytes. An empty content string indicates no content matching is to be performed.",
+"type": "string"
+},
+"jsonPathMatcher": {
+"$ref": "JsonPathMatcher",
+"description": "Matcher information for MATCHES_JSON_PATH and NOT_MATCHES_JSON_PATH"
+},
+"matcher": {
+"description": "The type of content matcher that will be applied to the server output, compared to the content string when the check is run.",
+"enum": [
+"CONTENT_MATCHER_OPTION_UNSPECIFIED",
+"CONTAINS_STRING",
+"NOT_CONTAINS_STRING",
+"MATCHES_REGEX",
+"NOT_MATCHES_REGEX",
+"MATCHES_JSON_PATH",
+"NOT_MATCHES_JSON_PATH"
+],
+"enumDescriptions": [
+"No content matcher type specified (maintained for backward compatibility, but deprecated for future use). Treated as CONTAINS_STRING.",
+"Selects substring matching. The match succeeds if the output contains the content string. This is the default value for checks without a matcher option, or where the value of matcher is CONTENT_MATCHER_OPTION_UNSPECIFIED.",
+"Selects negation of substring matching. The match succeeds if the output does NOT contain the content string.",
+"Selects regular-expression matching. The match succeeds if the output matches the regular expression specified in the content string. Regex matching is only supported for HTTP/HTTPS checks.",
+"Selects negation of regular-expression matching. The match succeeds if the output does NOT match the regular expression specified in the content string. Regex matching is only supported for HTTP/HTTPS checks.",
+"Selects JSONPath matching. See JsonPathMatcher for details on when the match succeeds. JSONPath matching is only supported for HTTP/HTTPS checks.",
+"Selects JSONPath matching. See JsonPathMatcher for details on when the match succeeds. Succeeds when output does NOT match as specified. JSONPath is only supported for HTTP/HTTPS checks."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreateCollectdTimeSeriesRequest": {
+"description": "The CreateCollectdTimeSeries request.",
+"id": "CreateCollectdTimeSeriesRequest",
+"properties": {
+"collectdPayloads": {
+"description": "The collectd payloads representing the time series data. You must not include more than a single point for each time series, so no two payloads can have the same values for all of the fields plugin, plugin_instance, type, and type_instance.",
+"items": {
+"$ref": "CollectdPayload"
+},
+"type": "array"
+},
+"collectdVersion": {
+"description": "The version of collectd that collected the data. Example: \"5.3.0-192.el6\".",
+"type": "string"
+},
+"resource": {
+"$ref": "MonitoredResource",
+"description": "The monitored resource associated with the time series."
+}
+},
+"type": "object"
+},
+"CreateCollectdTimeSeriesResponse": {
+"description": "The CreateCollectdTimeSeries response.",
+"id": "CreateCollectdTimeSeriesResponse",
+"properties": {
+"payloadErrors": {
+"description": "Records the error status for points that were not written due to an error in the request.Failed requests for which nothing is written will return an error response instead. Requests where data points were rejected by the backend will set summary instead.",
+"items": {
+"$ref": "CollectdPayloadError"
+},
+"type": "array"
+},
+"summary": {
+"$ref": "CreateTimeSeriesSummary",
+"description": "Aggregate statistics from writing the payloads. This field is omitted if all points were successfully written, so that the response is empty. This is for backwards compatibility with clients that log errors on any non-empty response."
+}
+},
+"type": "object"
+},
+"CreateTimeSeriesRequest": {
+"description": "The CreateTimeSeries request.",
+"id": "CreateTimeSeriesRequest",
+"properties": {
+"timeSeries": {
+"description": "Required. The new data to be added to a list of time series. Adds at most one data point to each of several time series. The new data point must be more recent than any other point in its time series. Each TimeSeries value must fully specify a unique time series by supplying all label values for the metric and the monitored resource.The maximum number of TimeSeries objects per Create request is 200.",
+"items": {
+"$ref": "TimeSeries"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CreateTimeSeriesSummary": {
+"description": "Summary of the result of a failed request to write data to a time series.",
+"id": "CreateTimeSeriesSummary",
+"properties": {
+"errors": {
+"description": "The number of points that failed to be written. Order is not guaranteed.",
+"items": {
+"$ref": "Error"
+},
+"type": "array"
+},
+"successPointCount": {
+"description": "The number of points that were successfully written.",
+"format": "int32",
+"type": "integer"
+},
+"totalPointCount": {
+"description": "The number of points in the request.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Criteria": {
+"description": "Criteria specific to the AlertPolicys that this Snooze applies to. The Snooze will suppress alerts that come from one of the AlertPolicys whose names are supplied.",
+"id": "Criteria",
+"properties": {
+"policies": {
+"description": "The specific AlertPolicy names for the alert that should be snoozed. The format is: projects/[PROJECT_ID_OR_NUMBER]/alertPolicies/[POLICY_ID] There is a limit of 16 policies per snooze. This limit is checked during snooze creation.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Custom": {
+"description": "Use a custom service to designate a service that you want to monitor when none of the other service types (like App Engine, Cloud Run, or a GKE type) matches your intended service.",
+"id": "Custom",
+"properties": {},
+"type": "object"
+},
+"Daily": {
+"description": "Used to schedule the query to run every so many days.",
+"id": "Daily",
+"properties": {
+"executionTime": {
+"$ref": "TimeOfDay",
+"description": "Optional. The time of day (in UTC) at which the query should run. If left unspecified, the server picks an arbitrary time of day and runs the query at the same time each day."
+},
+"periodicity": {
+"description": "Required. The number of days between runs. Must be greater than or equal to 1 day and less than or equal to 31 days.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Distribution": {
+"description": "Distribution contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets.The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths.Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the mean and sum_of_squared_deviation fields meaningless.",
+"id": "Distribution",
+"properties": {
+"bucketCounts": {
+"description": "Required in the Cloud Monitoring API v3. The values for each bucket specified in bucket_options. The sum of the values in bucketCounts must equal the value in the count field of the Distribution object. The order of the bucket counts follows the numbering schemes described for the three bucket types. The underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; and the overflow bucket has number N-1. The size of bucket_counts must not be greater than N. If the size is less than N, then the remaining buckets are assigned values of zero.",
+"items": {
+"format": "int64",
+"type": "string"
+},
+"type": "array"
+},
+"bucketOptions": {
+"$ref": "BucketOptions",
+"description": "Required in the Cloud Monitoring API v3. Defines the histogram bucket boundaries."
+},
+"count": {
+"description": "The number of values in the population. Must be non-negative. This value must equal the sum of the values in bucket_counts if a histogram is provided.",
+"format": "int64",
+"type": "string"
+},
+"exemplars": {
+"description": "Must be in increasing order of value field.",
+"items": {
+"$ref": "Exemplar"
+},
+"type": "array"
+},
+"mean": {
+"description": "The arithmetic mean of the values in the population. If count is zero then this field must be zero.",
+"format": "double",
+"type": "number"
+},
+"range": {
+"$ref": "Range",
+"description": "If specified, contains the range of the population values. The field must not be present if the count is zero. This field is presently ignored by the Cloud Monitoring API v3."
+},
+"sumOfSquaredDeviation": {
+"description": "The sum of squared deviations from the mean of the values in the population. For values x_i this is: Sum[i=1..n]((x_i - mean)^2) Knuth, \"The Art of Computer Programming\", Vol. 2, page 232, 3rd edition describes Welford's method for accumulating this sum in one pass.If count is zero then this field must be zero.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"DistributionCut": {
+"description": "A DistributionCut defines a TimeSeries and thresholds used for measuring good service and total service. The TimeSeries must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE. The computed good_service will be the estimated count of values in the Distribution that fall within the specified min and max.",
+"id": "DistributionCut",
+"properties": {
+"distributionFilter": {
+"description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries aggregating values. Must have ValueType = DISTRIBUTION and MetricKind = DELTA or MetricKind = CUMULATIVE.",
+"type": "string"
+},
+"range": {
+"$ref": "GoogleMonitoringV3Range",
+"description": "Range of values considered \"good.\" For a one-sided range, set one bound to an infinite value."
+}
+},
+"type": "object"
+},
+"Documentation": {
+"description": "Documentation that is included in the notifications and incidents pertaining to this policy.",
+"id": "Documentation",
+"properties": {
+"content": {
+"description": "The body of the documentation, interpreted according to mime_type. The content may not exceed 8,192 Unicode characters and may not exceed more than 10,240 bytes when encoded in UTF-8 format, whichever is smaller. This text can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables#doc-vars).",
+"type": "string"
+},
+"links": {
+"description": "Optional. Links to content such as playbooks, repositories, and other resources. This field can contain up to 3 entries.",
+"items": {
+"$ref": "Link"
+},
+"type": "array"
+},
+"mimeType": {
+"description": "The format of the content field. Presently, only the value \"text/markdown\" is supported. See Markdown (https://en.wikipedia.org/wiki/Markdown) for more information.",
+"type": "string"
+},
+"subject": {
+"description": "Optional. The subject line of the notification. The subject line may not exceed 10,240 bytes. In notifications generated by this policy, the contents of the subject line after variable expansion will be truncated to 255 bytes or shorter at the latest UTF-8 character boundary. The 255-byte limit is recommended by this thread (https://stackoverflow.com/questions/1592291/what-is-the-email-subject-length-limit). It is both the limit imposed by some third-party ticketing products and it is common to define textual fields in databases as VARCHAR(255).The contents of the subject line can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables#doc-vars). If this field is missing or empty, a default subject line will be generated.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DroppedLabels": {
+"description": "A set of (label, value) pairs that were removed from a Distribution time series during aggregation and then added as an attachment to a Distribution.Exemplar.The full label set for the exemplars is constructed by using the dropped pairs in combination with the label values that remain on the aggregated Distribution time series. The constructed full label set can be used to identify the specific entity, such as the instance or job, which might be contributing to a long-tail. However, with dropped labels, the storage requirements are reduced because only the aggregated distribution values for a large group of time series are stored.Note that there are no guarantees on ordering of the labels from exemplar-to-exemplar and from distribution-to-distribution in the same stream, and there may be duplicates. It is up to clients to resolve any ambiguities.",
+"id": "DroppedLabels",
+"properties": {
+"label": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Map from label to its value, for all labels dropped in any aggregation.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } ",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Error": {
+"description": "Detailed information about an error category.",
+"id": "Error",
+"properties": {
+"pointCount": {
+"description": "The number of points that couldn't be written because of status.",
+"format": "int32",
+"type": "integer"
+},
+"status": {
+"$ref": "Status",
+"description": "The status of the requested write operation."
+}
+},
+"type": "object"
+},
+"Exemplar": {
+"description": "Exemplars are example points that may be used to annotate aggregated distribution values. They are metadata that gives information about a particular value added to a Distribution bucket, such as a trace ID that was active when a value was added. They may contain further information, such as a example values and timestamps, origin, etc.",
+"id": "Exemplar",
+"properties": {
+"attachments": {
+"description": "Contextual information about the example value. Examples are:Trace: type.googleapis.com/google.monitoring.v3.SpanContextLiteral string: type.googleapis.com/google.protobuf.StringValueLabels dropped during aggregation: type.googleapis.com/google.monitoring.v3.DroppedLabelsThere may be only a single attachment of any given message type in a single exemplar, and this is enforced by the system.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"timestamp": {
+"description": "The observation (sampling) time of the above value.",
+"format": "google-datetime",
+"type": "string"
+},
+"value": {
+"description": "Value of the exemplar point. This value determines to which bucket the exemplar belongs.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"Explicit": {
+"description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): boundsi Lower bound (1 <= i < N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.",
+"id": "Explicit",
+"properties": {
+"bounds": {
+"description": "The values must be monotonically increasing.",
+"items": {
+"format": "double",
+"type": "number"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Exponential": {
+"description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): scale * (growth_factor ^ i).Lower bound (1 <= i < N): scale * (growth_factor ^ (i - 1)).",
+"id": "Exponential",
+"properties": {
+"growthFactor": {
+"description": "Must be greater than 1.",
+"format": "double",
+"type": "number"
+},
+"numFiniteBuckets": {
+"description": "Must be greater than 0.",
+"format": "int32",
+"type": "integer"
+},
+"scale": {
+"description": "Must be greater than 0.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"Field": {
+"description": "A single field of a message type.",
+"id": "Field",
+"properties": {
+"cardinality": {
+"description": "The field cardinality.",
+"enum": [
+"CARDINALITY_UNKNOWN",
+"CARDINALITY_OPTIONAL",
+"CARDINALITY_REQUIRED",
+"CARDINALITY_REPEATED"
+],
+"enumDescriptions": [
+"For fields with unknown cardinality.",
+"For optional fields.",
+"For required fields. Proto2 syntax only.",
+"For repeated fields."
+],
+"type": "string"
+},
+"defaultValue": {
+"description": "The string value of the default value of this field. Proto2 syntax only.",
+"type": "string"
+},
+"jsonName": {
+"description": "The field JSON name.",
+"type": "string"
+},
+"kind": {
+"description": "The field type.",
+"enum": [
+"TYPE_UNKNOWN",
+"TYPE_DOUBLE",
+"TYPE_FLOAT",
+"TYPE_INT64",
+"TYPE_UINT64",
+"TYPE_INT32",
+"TYPE_FIXED64",
+"TYPE_FIXED32",
+"TYPE_BOOL",
+"TYPE_STRING",
+"TYPE_GROUP",
+"TYPE_MESSAGE",
+"TYPE_BYTES",
+"TYPE_UINT32",
+"TYPE_ENUM",
+"TYPE_SFIXED32",
+"TYPE_SFIXED64",
+"TYPE_SINT32",
+"TYPE_SINT64"
+],
+"enumDescriptions": [
+"Field type unknown.",
+"Field type double.",
+"Field type float.",
+"Field type int64.",
+"Field type uint64.",
+"Field type int32.",
+"Field type fixed64.",
+"Field type fixed32.",
+"Field type bool.",
+"Field type string.",
+"Field type group. Proto2 syntax only, and deprecated.",
+"Field type message.",
+"Field type bytes.",
+"Field type uint32.",
+"Field type enum.",
+"Field type sfixed32.",
+"Field type sfixed64.",
+"Field type sint32.",
+"Field type sint64."
+],
+"type": "string"
+},
+"name": {
+"description": "The field name.",
+"type": "string"
+},
+"number": {
+"description": "The field number.",
+"format": "int32",
+"type": "integer"
+},
+"oneofIndex": {
+"description": "The index of the field type in Type.oneofs, for message or enumeration types. The first type has index 1; zero means the type is not in the list.",
+"format": "int32",
+"type": "integer"
+},
+"options": {
+"description": "The protocol buffer options.",
+"items": {
+"$ref": "Option"
+},
+"type": "array"
+},
+"packed": {
+"description": "Whether to use alternative packed wire representation.",
+"type": "boolean"
+},
+"typeUrl": {
+"description": "The field type URL, without the scheme, for message or enumeration types. Example: \"type.googleapis.com/google.protobuf.Timestamp\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ForecastOptions": {
+"description": "Options used when forecasting the time series and testing the predicted value against the threshold.",
+"id": "ForecastOptions",
+"properties": {
+"forecastHorizon": {
+"description": "Required. The length of time into the future to forecast whether a time series will violate the threshold. If the predicted value is found to violate the threshold, and the violation is observed in all forecasts made for the configured duration, then the time series is considered to be failing. The forecast horizon can range from 1 hour to 60 hours.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetNotificationChannelVerificationCodeRequest": {
+"description": "The GetNotificationChannelVerificationCode request.",
+"id": "GetNotificationChannelVerificationCodeRequest",
+"properties": {
+"expireTime": {
+"description": "The desired expiration time. If specified, the API will guarantee that the returned code will not be valid after the specified timestamp; however, the API cannot guarantee that the returned code will be valid for at least as long as the requested time (the API puts an upper bound on the amount of time for which a code may be valid). If omitted, a default expiration will be used, which may be less than the max permissible expiration (so specifying an expiration may extend the code's lifetime over omitting an expiration, even though the API does impose an upper limit on the maximum expiration that is permitted).",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetNotificationChannelVerificationCodeResponse": {
+"description": "The GetNotificationChannelVerificationCode request.",
+"id": "GetNotificationChannelVerificationCodeResponse",
+"properties": {
+"code": {
+"description": "The verification code, which may be used to verify other channels that have an equivalent identity (i.e. other channels of the same type with the same fingerprint such as other email channels with the same email address or other sms channels with the same number).",
+"type": "string"
+},
+"expireTime": {
+"description": "The expiration time associated with the code that was returned. If an expiration was provided in the request, this is the minimum of the requested expiration in the request and the max permitted expiration.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GkeNamespace": {
+"description": "GKE Namespace. The field names correspond to the resource metadata labels on monitored resources that fall under a namespace (for example, k8s_container or k8s_pod).",
+"id": "GkeNamespace",
+"properties": {
+"clusterName": {
+"description": "The name of the parent cluster.",
+"type": "string"
+},
+"location": {
+"description": "The location of the parent cluster. This may be a zone or region.",
+"type": "string"
+},
+"namespaceName": {
+"description": "The name of this namespace.",
+"type": "string"
+},
+"projectId": {
+"description": "Output only. The project this resource lives in. For legacy services migrated from the Custom type, this may be a distinct project from the one parenting the service itself.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GkeService": {
+"description": "GKE Service. The \"service\" here represents a Kubernetes service object (https://kubernetes.io/docs/concepts/services-networking/service). The field names correspond to the resource labels on k8s_service monitored resources (https://cloud.google.com/monitoring/api/resources#tag_k8s_service).",
+"id": "GkeService",
+"properties": {
+"clusterName": {
+"description": "The name of the parent cluster.",
+"type": "string"
+},
+"location": {
+"description": "The location of the parent cluster. This may be a zone or region.",
+"type": "string"
+},
+"namespaceName": {
+"description": "The name of the parent namespace.",
+"type": "string"
+},
+"projectId": {
+"description": "Output only. The project this resource lives in. For legacy services migrated from the Custom type, this may be a distinct project from the one parenting the service itself.",
+"readOnly": true,
+"type": "string"
+},
+"serviceName": {
+"description": "The name of this service.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GkeWorkload": {
+"description": "A GKE Workload (Deployment, StatefulSet, etc). The field names correspond to the metadata labels on monitored resources that fall under a workload (for example, k8s_container or k8s_pod).",
+"id": "GkeWorkload",
+"properties": {
+"clusterName": {
+"description": "The name of the parent cluster.",
+"type": "string"
+},
+"location": {
+"description": "The location of the parent cluster. This may be a zone or region.",
+"type": "string"
+},
+"namespaceName": {
+"description": "The name of the parent namespace.",
+"type": "string"
+},
+"projectId": {
+"description": "Output only. The project this resource lives in. For legacy services migrated from the Custom type, this may be a distinct project from the one parenting the service itself.",
+"readOnly": true,
+"type": "string"
+},
+"topLevelControllerName": {
+"description": "The name of this workload.",
+"type": "string"
+},
+"topLevelControllerType": {
+"description": "The type of this workload (for example, \"Deployment\" or \"DaemonSet\")",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleMonitoringV3Range": {
+"description": "Range of numerical values within min and max.",
+"id": "GoogleMonitoringV3Range",
+"properties": {
+"max": {
+"description": "Range maximum.",
+"format": "double",
+"type": "number"
+},
+"min": {
+"description": "Range minimum.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"Group": {
+"description": "The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: \"environment\" and \"role\". A parent group has a filter, environment=\"production\". A child of that parent group has a filter, role=\"transcoder\". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.",
+"id": "Group",
+"properties": {
+"displayName": {
+"description": "A user-assigned name for this group, used only for display purposes.",
+"type": "string"
+},
+"filter": {
+"description": "The filter used to determine which monitored resources belong to this group.",
+"type": "string"
+},
+"isCluster": {
+"description": "If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.",
+"type": "boolean"
+},
+"name": {
+"description": "Output only. The name of this group. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique [GROUP_ID] that is generated automatically.",
+"type": "string"
+},
+"parentName": {
+"description": "The name of the group's parent, if it has one. The format is: projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID] For groups with no parent, parent_name is the empty string, \"\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Hourly": {
+"description": "Used to schedule the query to run every so many hours.",
+"id": "Hourly",
+"properties": {
+"minuteOffset": {
+"description": "Optional. The number of minutes after the hour (in UTC) to run the query. Must be greater than or equal to 0 minutes and less than or equal to 59 minutes. If left unspecified, then an arbitrary offset is used.",
+"format": "int32",
+"type": "integer"
+},
+"periodicity": {
+"description": "Required. The number of hours between runs. Must be greater than or equal to 1 hour and less than or equal to 48 hours.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"HttpCheck": {
+"description": "Information involved in an HTTP/HTTPS Uptime check request.",
+"id": "HttpCheck",
+"properties": {
+"acceptedResponseStatusCodes": {
+"description": "If present, the check will only pass if the HTTP response status code is in this set of status codes. If empty, the HTTP status code will only pass if the HTTP status code is 200-299.",
+"items": {
+"$ref": "ResponseStatusCode"
+},
+"type": "array"
+},
+"authInfo": {
+"$ref": "BasicAuthentication",
+"description": "The authentication information. Optional when creating an HTTP check; defaults to empty. Do not set both auth_method and auth_info."
+},
+"body": {
+"description": "The request body associated with the HTTP POST request. If content_type is URL_ENCODED, the body passed in must be URL-encoded. Users can provide a Content-Length header via the headers field or the API will do so. If the request_method is GET and body is not empty, the API will return an error. The maximum byte size is 1 megabyte.Note: If client libraries aren't used (which performs the conversion automatically) base64 encode your body data since the field is of bytes type.",
+"format": "byte",
+"type": "string"
+},
+"contentType": {
+"description": "The content type header to use for the check. The following configurations result in errors: 1. Content type is specified in both the headers field and the content_type field. 2. Request method is GET and content_type is not TYPE_UNSPECIFIED 3. Request method is POST and content_type is TYPE_UNSPECIFIED. 4. Request method is POST and a \"Content-Type\" header is provided via headers field. The content_type field should be used instead.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"URL_ENCODED",
+"USER_PROVIDED"
+],
+"enumDescriptions": [
+"No content type specified.",
+"body is in URL-encoded form. Equivalent to setting the Content-Type to application/x-www-form-urlencoded in the HTTP request.",
+"body is in custom_content_type form. Equivalent to setting the Content-Type to the contents of custom_content_type in the HTTP request."
+],
+"type": "string"
+},
+"customContentType": {
+"description": "A user provided content type header to use for the check. The invalid configurations outlined in the content_type field apply to custom_content_type, as well as the following: 1. content_type is URL_ENCODED and custom_content_type is set. 2. content_type is USER_PROVIDED and custom_content_type is not set.",
+"type": "string"
+},
+"headers": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The list of headers to send as part of the Uptime check request. If two headers have the same key and different values, they should be entered as a single header, with the value being a comma-separated list of all the desired values as described at https://www.w3.org/Protocols/rfc2616/rfc2616.txt (page 31). Entering two separate headers with the same key in a Create call will cause the first to be overwritten by the second. The maximum number of headers allowed is 100.",
+"type": "object"
+},
+"maskHeaders": {
+"description": "Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to true then the headers will be obscured with ******.",
+"type": "boolean"
+},
+"path": {
+"description": "Optional (defaults to \"/\"). The path to the page against which to run the check. Will be combined with the host (specified within the monitored_resource) and port to construct the full URL. If the provided path does not begin with \"/\", a \"/\" will be prepended automatically.",
+"type": "string"
+},
+"pingConfig": {
+"$ref": "PingConfig",
+"description": "Contains information needed to add pings to an HTTP check."
+},
+"port": {
+"description": "Optional (defaults to 80 when use_ssl is false, and 443 when use_ssl is true). The TCP port on the HTTP server against which to run the check. Will be combined with host (specified within the monitored_resource) and path to construct the full URL.",
+"format": "int32",
+"type": "integer"
+},
+"requestMethod": {
+"description": "The HTTP request method to use for the check. If set to METHOD_UNSPECIFIED then request_method defaults to GET.",
+"enum": [
+"METHOD_UNSPECIFIED",
+"GET",
+"POST"
+],
+"enumDescriptions": [
+"No request method specified.",
+"GET request.",
+"POST request."
+],
+"type": "string"
+},
+"serviceAgentAuthentication": {
+"$ref": "ServiceAgentAuthentication",
+"description": "If specified, Uptime will generate and attach an OIDC JWT token for the Monitoring service agent service account as an Authorization header in the HTTP request when probing."
+},
+"useSsl": {
+"description": "If true, use HTTPS instead of HTTP to run the check.",
+"type": "boolean"
+},
+"validateSsl": {
+"description": "Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitored_resource is set to uptime_url. If use_ssl is false, setting validate_ssl to true has no effect.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"InternalChecker": {
+"deprecated": true,
+"description": "An internal checker allows Uptime checks to run on private/internal GCP resources.",
+"id": "InternalChecker",
+"properties": {
+"displayName": {
+"description": "The checker's human-readable name. The display name should be unique within a Cloud Monitoring Metrics Scope in order to make it easier to identify; however, uniqueness is not enforced.",
+"type": "string"
+},
+"gcpZone": {
+"description": "The GCP zone the Uptime check should egress from. Only respected for internal Uptime checks, where internal_network is specified.",
+"type": "string"
+},
+"name": {
+"description": "A unique resource name for this InternalChecker. The format is: projects/[PROJECT_ID_OR_NUMBER]/internalCheckers/[INTERNAL_CHECKER_ID] [PROJECT_ID_OR_NUMBER] is the Cloud Monitoring Metrics Scope project for the Uptime check config associated with the internal checker.",
+"type": "string"
+},
+"network": {
+"description": "The GCP VPC network (https://cloud.google.com/vpc/docs/vpc) where the internal resource lives (ex: \"default\").",
+"type": "string"
+},
+"peerProjectId": {
+"description": "The GCP project ID where the internal checker lives. Not necessary the same as the Metrics Scope project.",
+"type": "string"
+},
+"state": {
+"description": "The current operational state of the internal checker.",
+"enum": [
+"UNSPECIFIED",
+"CREATING",
+"RUNNING"
+],
+"enumDescriptions": [
+"An internal checker should never be in the unspecified state.",
+"The checker is being created, provisioned, and configured. A checker in this state can be returned by ListInternalCheckers or GetInternalChecker, as well as by examining the long running Operation (https://cloud.google.com/apis/design/design_patterns#long_running_operations) that created it.",
+"The checker is running and available for use. A checker in this state can be returned by ListInternalCheckers or GetInternalChecker as well as by examining the long running Operation (https://cloud.google.com/apis/design/design_patterns#long_running_operations) that created it. If a checker is being torn down, it is neither visible nor usable, so there is no \"deleting\" or \"down\" state."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"IstioCanonicalService": {
+"description": "Canonical service scoped to an Istio mesh. Anthos clusters running ASM >= 1.6.8 will have their services ingested as this type.",
+"id": "IstioCanonicalService",
+"properties": {
+"canonicalService": {
+"description": "The name of the canonical service underlying this service. Corresponds to the destination_canonical_service_name metric label in label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).",
+"type": "string"
+},
+"canonicalServiceNamespace": {
+"description": "The namespace of the canonical service underlying this service. Corresponds to the destination_canonical_service_namespace metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).",
+"type": "string"
+},
+"meshUid": {
+"description": "Identifier for the Istio mesh in which this canonical service is defined. Corresponds to the mesh_uid metric label in Istio metrics (https://cloud.google.com/monitoring/api/metrics_istio).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"JsonPathMatcher": {
+"description": "Information needed to perform a JSONPath content match. Used for ContentMatcherOption::MATCHES_JSON_PATH and ContentMatcherOption::NOT_MATCHES_JSON_PATH.",
+"id": "JsonPathMatcher",
+"properties": {
+"jsonMatcher": {
+"description": "The type of JSONPath match that will be applied to the JSON output (ContentMatcher.content)",
+"enum": [
+"JSON_PATH_MATCHER_OPTION_UNSPECIFIED",
+"EXACT_MATCH",
+"REGEX_MATCH"
+],
+"enumDescriptions": [
+"No JSONPath matcher type specified (not valid).",
+"Selects 'exact string' matching. The match succeeds if the content at the json_path within the output is exactly the same as the content string.",
+"Selects regular-expression matching. The match succeeds if the content at the json_path within the output matches the regular expression specified in the content string."
+],
+"type": "string"
+},
+"jsonPath": {
+"description": "JSONPath within the response output pointing to the expected ContentMatcher::content to match against.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LabelDescriptor": {
+"description": "A description of a label.",
+"id": "LabelDescriptor",
+"properties": {
+"description": {
+"description": "A human-readable description for the label.",
+"type": "string"
+},
+"key": {
+"description": "The key for this label. The key must meet the following criteria: Does not exceed 100 characters. Matches the following regular expression: [a-zA-Z][a-zA-Z0-9_]* The first character must be an upper- or lower-case letter. The remaining characters must be letters, digits, or underscores.",
+"type": "string"
+},
+"valueType": {
+"description": "The type of data that can be assigned to the label.",
+"enum": [
+"STRING",
+"BOOL",
+"INT64"
+],
+"enumDescriptions": [
+"A variable-length string, not to exceed 1,024 characters. This is the default value type.",
+"Boolean; true or false.",
+"A 64-bit signed integer."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"LabelValue": {
+"description": "A label value.",
+"id": "LabelValue",
+"properties": {
+"boolValue": {
+"description": "A bool label value.",
+"type": "boolean"
+},
+"int64Value": {
+"description": "An int64 label value.",
+"format": "int64",
+"type": "string"
+},
+"stringValue": {
+"description": "A string label value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LatencyCriteria": {
+"description": "Parameters for a latency threshold SLI.",
+"id": "LatencyCriteria",
+"properties": {
+"threshold": {
+"description": "Good service is defined to be the count of requests made to this service that return in no more than threshold.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Linear": {
+"description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 <= i < N-1): offset + (width * i).Lower bound (1 <= i < N): offset + (width * (i - 1)).",
+"id": "Linear",
+"properties": {
+"numFiniteBuckets": {
+"description": "Must be greater than 0.",
+"format": "int32",
+"type": "integer"
+},
+"offset": {
+"description": "Lower bound of the first bucket.",
+"format": "double",
+"type": "number"
+},
+"width": {
+"description": "Must be greater than 0.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"Link": {
+"description": "Links to content such as playbooks, repositories, and other resources.",
+"id": "Link",
+"properties": {
+"displayName": {
+"description": "A short display name for the link. The display name must not be empty or exceed 63 characters. Example: \"playbook\".",
+"type": "string"
+},
+"url": {
+"description": "The url of a webpage. A url can be templatized by using variables in the path or the query parameters. The total length of a URL should not exceed 2083 characters before and after variable expansion. Example: \"https://my_domain.com/playbook?name=${resource.name}\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListAlertPoliciesResponse": {
+"description": "The protocol for the ListAlertPolicies response.",
+"id": "ListAlertPoliciesResponse",
+"properties": {
+"alertPolicies": {
+"description": "The returned alert policies.",
+"items": {
+"$ref": "AlertPolicy"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there might be more results than were returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+},
+"totalSize": {
+"description": "The total number of alert policies in all pages. This number is only an estimate, and may change in subsequent pages. https://aip.dev/158",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ListGroupMembersResponse": {
+"description": "The ListGroupMembers response.",
+"id": "ListGroupMembersResponse",
+"properties": {
+"members": {
+"description": "A set of monitored resources in the group.",
+"items": {
+"$ref": "MonitoredResource"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+},
+"totalSize": {
+"description": "The total number of elements matching this request.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ListGroupsResponse": {
+"description": "The ListGroups response.",
+"id": "ListGroupsResponse",
+"properties": {
+"group": {
+"description": "The groups that match the specified filters.",
+"items": {
+"$ref": "Group"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMetricDescriptorsResponse": {
+"description": "The ListMetricDescriptors response.",
+"id": "ListMetricDescriptorsResponse",
+"properties": {
+"metricDescriptors": {
+"description": "The metric descriptors that are available to the project and that match the value of filter, if present.",
+"items": {
+"$ref": "MetricDescriptor"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMonitoredResourceDescriptorsResponse": {
+"description": "The ListMonitoredResourceDescriptors response.",
+"id": "ListMonitoredResourceDescriptorsResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+},
+"resourceDescriptors": {
+"description": "The monitored resource descriptors that are available to this project and that match filter, if present.",
+"items": {
+"$ref": "MonitoredResourceDescriptor"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListNotificationChannelDescriptorsResponse": {
+"description": "The ListNotificationChannelDescriptors response.",
+"id": "ListNotificationChannelDescriptorsResponse",
+"properties": {
+"channelDescriptors": {
+"description": "The monitored resource descriptors supported for the specified project, optionally filtered.",
+"items": {
+"$ref": "NotificationChannelDescriptor"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If not empty, indicates that there may be more results that match the request. Use the value in the page_token field in a subsequent request to fetch the next set of results. If empty, all results have been returned.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListNotificationChannelsResponse": {
+"description": "The ListNotificationChannels response.",
+"id": "ListNotificationChannelsResponse",
+"properties": {
+"nextPageToken": {
+"description": "If not empty, indicates that there may be more results that match the request. Use the value in the page_token field in a subsequent request to fetch the next set of results. If empty, all results have been returned.",
+"type": "string"
+},
+"notificationChannels": {
+"description": "The notification channels defined for the specified project.",
+"items": {
+"$ref": "NotificationChannel"
+},
+"type": "array"
+},
+"totalSize": {
+"description": "The total number of notification channels in all pages. This number is only an estimate, and may change in subsequent pages. https://aip.dev/158",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"ListServiceLevelObjectivesResponse": {
+"description": "The ListServiceLevelObjectives response.",
+"id": "ListServiceLevelObjectivesResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+},
+"serviceLevelObjectives": {
+"description": "The ServiceLevelObjectives matching the specified filter.",
+"items": {
+"$ref": "ServiceLevelObjective"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListServicesResponse": {
+"description": "The ListServices response.",
+"id": "ListServicesResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+},
+"services": {
+"description": "The Services matching the specified filter.",
+"items": {
+"$ref": "Service"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListSnoozesResponse": {
+"description": "The results of a successful ListSnoozes call, containing the matching Snoozes.",
+"id": "ListSnoozesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Page token for repeated calls to ListSnoozes, to fetch additional pages of results. If this is empty or missing, there are no more pages.",
+"type": "string"
+},
+"snoozes": {
+"description": "Snoozes matching this list call.",
+"items": {
+"$ref": "Snooze"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTimeSeriesResponse": {
+"description": "The ListTimeSeries response.",
+"id": "ListTimeSeriesResponse",
+"properties": {
+"executionErrors": {
+"description": "Query execution errors that may have caused the time series data returned to be incomplete.",
+"items": {
+"$ref": "Status"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+},
+"timeSeries": {
+"description": "One or more time series that match the filter included in the request.",
+"items": {
+"$ref": "TimeSeries"
+},
+"type": "array"
+},
+"unit": {
+"description": "The unit in which all time_series point values are reported. unit follows the UCUM format for units as seen in https://unitsofmeasure.org/ucum.html. If different time_series have different units (for example, because they come from different metric types, or a unit is absent), then unit will be \"{not_a_unit}\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListUptimeCheckConfigsResponse": {
+"description": "The protocol for the ListUptimeCheckConfigs response.",
+"id": "ListUptimeCheckConfigsResponse",
+"properties": {
+"nextPageToken": {
+"description": "This field represents the pagination token to retrieve the next page of results. If the value is empty, it means no further results for the request. To retrieve the next page of results, the value of the next_page_token is passed to the subsequent List method call (in the request message's page_token field).",
+"type": "string"
+},
+"totalSize": {
+"description": "The total number of Uptime check configurations for the project, irrespective of any pagination.",
+"format": "int32",
+"type": "integer"
+},
+"uptimeCheckConfigs": {
+"description": "The returned Uptime check configurations.",
+"items": {
+"$ref": "UptimeCheckConfig"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListUptimeCheckIpsResponse": {
+"description": "The protocol for the ListUptimeCheckIps response.",
+"id": "ListUptimeCheckIpsResponse",
+"properties": {
+"nextPageToken": {
+"description": "This field represents the pagination token to retrieve the next page of results. If the value is empty, it means no further results for the request. To retrieve the next page of results, the value of the next_page_token is passed to the subsequent List method call (in the request message's page_token field). NOTE: this field is not yet implemented",
+"type": "string"
+},
+"uptimeCheckIps": {
+"description": "The returned list of IP addresses (including region and location) that the checkers run from.",
+"items": {
+"$ref": "UptimeCheckIp"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"LogMatch": {
+"description": "A condition type that checks whether a log message in the scoping project (https://cloud.google.com/monitoring/api/v3#project_name) satisfies the given filter. Logs from other projects in the metrics scope are not evaluated.",
+"id": "LogMatch",
+"properties": {
+"filter": {
+"description": "Required. A logs-based filter. See Advanced Logs Queries (https://cloud.google.com/logging/docs/view/advanced-queries) for how this filter should be constructed.",
+"type": "string"
+},
+"labelExtractors": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. A map from a label key to an extractor expression, which is used to extract the value for this label key. Each entry in this map is a specification for how data should be extracted from log entries that match filter. Each combination of extracted values is treated as a separate rule for the purposes of triggering notifications. Label keys and corresponding values can be used in notifications generated by this condition.Please see the documentation on logs-based metric valueExtractors (https://cloud.google.com/logging/docs/reference/v2/rest/v2/projects.metrics#LogMetric.FIELDS.value_extractor) for syntax and examples.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"MeshIstio": {
+"description": "Istio service scoped to an Istio mesh. Anthos clusters running ASM < 1.6.8 will have their services ingested as this type.",
+"id": "MeshIstio",
+"properties": {
+"meshUid": {
+"description": "Identifier for the mesh in which this Istio service is defined. Corresponds to the mesh_uid metric label in Istio metrics.",
+"type": "string"
+},
+"serviceName": {
+"description": "The name of the Istio service underlying this service. Corresponds to the destination_service_name metric label in Istio metrics.",
+"type": "string"
+},
+"serviceNamespace": {
+"description": "The namespace of the Istio service underlying this service. Corresponds to the destination_service_namespace metric label in Istio metrics.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Metric": {
+"description": "A specific metric, identified by specifying values for all of the labels of a MetricDescriptor.",
+"id": "Metric",
+"properties": {
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The set of label values that uniquely identify this metric. All labels listed in the MetricDescriptor must be assigned values.",
+"type": "object"
+},
+"type": {
+"description": "An existing metric type, see google.api.MetricDescriptor. For example, custom.googleapis.com/invoice/paid/amount.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MetricAbsence": {
+"description": "A condition type that checks that monitored resources are reporting data. The configuration defines a metric and a set of monitored resources. The predicate is considered in violation when a time series for the specified metric of a monitored resource does not include any data in the specified duration.",
+"id": "MetricAbsence",
+"properties": {
+"aggregations": {
+"description": "Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources). Multiple aggregations are applied in the order specified.This field is similar to the one in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It is advisable to use the ListTimeSeries method when debugging this field.",
+"items": {
+"$ref": "Aggregation"
+},
+"type": "array"
+},
+"duration": {
+"description": "The amount of time that a time series must fail to report new data to be considered failing. The minimum value of this field is 120 seconds. Larger values that are a multiple of a minute--for example, 240 or 300 seconds--are supported. If an invalid value is given, an error will be returned. The Duration.nanos field is ignored.",
+"format": "google-duration",
+"type": "string"
+},
+"filter": {
+"description": "Required. A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that call is useful to verify the time series that will be retrieved / processed). The filter must specify the metric type and the resource type. Optionally, it can specify resource labels and metric labels. This field must not exceed 2048 Unicode characters in length.",
+"type": "string"
+},
+"trigger": {
+"$ref": "Trigger",
+"description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations."
+}
+},
+"type": "object"
+},
+"MetricDescriptor": {
+"description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.",
+"id": "MetricDescriptor",
+"properties": {
+"description": {
+"description": "A detailed description of the metric, which can be used in documentation.",
+"type": "string"
+},
+"displayName": {
+"description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota.",
+"type": "string"
+},
+"labels": {
+"description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.",
+"items": {
+"$ref": "LabelDescriptor"
+},
+"type": "array"
+},
+"launchStage": {
+"description": "Optional. The launch stage of the metric definition.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"UNIMPLEMENTED",
+"PRELAUNCH",
+"EARLY_ACCESS",
+"ALPHA",
+"BETA",
+"GA",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The feature is not yet implemented. Users can not use it.",
+"Prelaunch features are hidden from users and are only visible internally.",
+"Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
+"Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+"Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
+"GA features are open to all developers and are considered stable and fully qualified for production use.",
+"Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+],
+"type": "string"
+},
+"metadata": {
+"$ref": "MetricDescriptorMetadata",
+"description": "Optional. Metadata which can be used to guide usage of the metric."
+},
+"metricKind": {
+"description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.",
+"enum": [
+"METRIC_KIND_UNSPECIFIED",
+"GAUGE",
+"DELTA",
+"CUMULATIVE"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"An instantaneous measurement of a value.",
+"The change in a value during a time interval.",
+"A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
+],
+"type": "string"
+},
+"monitoredResourceTypes": {
+"description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "The resource name of the metric descriptor.",
+"type": "string"
+},
+"type": {
+"description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name custom.googleapis.com or external.googleapis.com. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\" ",
+"type": "string"
+},
+"unit": {
+"description": "The units in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the representation of the stored metric values.Different systems might scale the values to be more easily displayed (so a value of 0.02kBy might be displayed as 20By, and a value of 3523kBy might be displayed as 3.5MBy). However, if the unit is kBy, then the value of the metric is always in thousands of bytes, no matter how it might be displayed.If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an INT64 CUMULATIVE metric whose unit is s{CPU} (or equivalently 1s{CPU} or just s). If the job uses 12,005 CPU-seconds, then the value is written as 12005.Alternatively, if you want a custom metric to record data in a more granular way, you can create a DOUBLE CUMULATIVE metric whose unit is ks{CPU}, and then write the value 12.005 (which is 12005/1000), or use Kis{CPU} and write 11.723 (which is 12005/1024).The supported units are a subset of The Unified Code for Units of Measure (https://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT) bit bit By byte s second min minute h hour d day 1 dimensionlessPrefixes (PREFIX) k kilo (10^3) M mega (10^6) G giga (10^9) T tera (10^12) P peta (10^15) E exa (10^18) Z zetta (10^21) Y yotta (10^24) m milli (10^-3) u micro (10^-6) n nano (10^-9) p pico (10^-12) f femto (10^-15) a atto (10^-18) z zepto (10^-21) y yocto (10^-24) Ki kibi (2^10) Mi mebi (2^20) Gi gibi (2^30) Ti tebi (2^40) Pi pebi (2^50)GrammarThe grammar also includes these connectors: / division or ratio (as an infix operator). For examples, kBy/{email} or MiBy/10ms (although you should almost never have /s in a metric unit; rates should always be computed at query time from the underlying cumulative or delta value). . multiplication or composition (as an infix operator). For examples, GBy.d or k{watt}.h.The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: Annotation is just a comment if it follows a UNIT. If the annotation is used alone, then the unit is equivalent to 1. For examples, {request}/s == 1/s, By{transmitted}/s == By/s. NAME is a sequence of non-blank printable ASCII characters not containing { or }. 1 represents a unitary dimensionless unit (https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in 1/s. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as 1/d or {new-users}/d (and a metric value 5 would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as 1000/d or k1/d or k{page_views}/d (and a metric value of 5.3 would mean \"5300 page views per day\"). % represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value 3 means \"3 percent\"). 10^2.% indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value 0.03 means \"3 percent\").",
+"type": "string"
+},
+"valueType": {
+"description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.",
+"enum": [
+"VALUE_TYPE_UNSPECIFIED",
+"BOOL",
+"INT64",
+"DOUBLE",
+"STRING",
+"DISTRIBUTION",
+"MONEY"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The value is a boolean. This value type can be used only if the metric kind is GAUGE.",
+"The value is a signed 64-bit integer.",
+"The value is a double precision floating point number.",
+"The value is a text string. This value type can be used only if the metric kind is GAUGE.",
+"The value is a Distribution.",
+"The value is money."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"MetricDescriptorMetadata": {
+"description": "Additional annotations that can be used to guide the usage of a metric.",
+"id": "MetricDescriptorMetadata",
+"properties": {
+"ingestDelay": {
+"description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors.",
+"format": "google-duration",
+"type": "string"
+},
+"launchStage": {
+"deprecated": true,
+"description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"UNIMPLEMENTED",
+"PRELAUNCH",
+"EARLY_ACCESS",
+"ALPHA",
+"BETA",
+"GA",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The feature is not yet implemented. Users can not use it.",
+"Prelaunch features are hidden from users and are only visible internally.",
+"Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
+"Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+"Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
+"GA features are open to all developers and are considered stable and fully qualified for production use.",
+"Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+],
+"type": "string"
+},
+"samplePeriod": {
+"description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period.",
+"format": "google-duration",
+"type": "string"
+},
+"timeSeriesResourceHierarchyLevel": {
+"description": "The scope of the timeseries data of the metric.",
+"items": {
+"enum": [
+"TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED",
+"PROJECT",
+"ORGANIZATION",
+"FOLDER"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"Scopes a metric to a project.",
+"Scopes a metric to an organization.",
+"Scopes a metric to a folder."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MetricRange": {
+"description": "A MetricRange is used when each window is good when the value x of a single TimeSeries satisfies range.min <= x <= range.max. The provided TimeSeries must have ValueType = INT64 or ValueType = DOUBLE and MetricKind = GAUGE.",
+"id": "MetricRange",
+"properties": {
+"range": {
+"$ref": "GoogleMonitoringV3Range",
+"description": "Range of values considered \"good.\" For a one-sided range, set one bound to an infinite value."
+},
+"timeSeries": {
+"description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying the TimeSeries to use for evaluating window quality.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MetricThreshold": {
+"description": "A condition type that compares a collection of time series against a threshold.",
+"id": "MetricThreshold",
+"properties": {
+"aggregations": {
+"description": "Specifies the alignment of data points in individual time series as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources). Multiple aggregations are applied in the order specified.This field is similar to the one in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It is advisable to use the ListTimeSeries method when debugging this field.",
+"items": {
+"$ref": "Aggregation"
+},
+"type": "array"
+},
+"comparison": {
+"description": "The comparison to apply between the time series (indicated by filter and aggregation) and the threshold (indicated by threshold_value). The comparison is applied on each time series, with the time series on the left-hand side and the threshold on the right-hand side.Only COMPARISON_LT and COMPARISON_GT are supported currently.",
+"enum": [
+"COMPARISON_UNSPECIFIED",
+"COMPARISON_GT",
+"COMPARISON_GE",
+"COMPARISON_LT",
+"COMPARISON_LE",
+"COMPARISON_EQ",
+"COMPARISON_NE"
+],
+"enumDescriptions": [
+"No ordering relationship is specified.",
+"True if the left argument is greater than the right argument.",
+"True if the left argument is greater than or equal to the right argument.",
+"True if the left argument is less than the right argument.",
+"True if the left argument is less than or equal to the right argument.",
+"True if the left argument is equal to the right argument.",
+"True if the left argument is not equal to the right argument."
+],
+"type": "string"
+},
+"denominatorAggregations": {
+"description": "Specifies the alignment of data points in individual time series selected by denominatorFilter as well as how to combine the retrieved time series together (such as when aggregating multiple streams on each resource to a single stream for each resource or when aggregating streams across all members of a group of resources).When computing ratios, the aggregations and denominator_aggregations fields must use the same alignment period and produce time series that have the same periodicity and labels.",
+"items": {
+"$ref": "Aggregation"
+},
+"type": "array"
+},
+"denominatorFilter": {
+"description": "A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies a time series that should be used as the denominator of a ratio that will be compared with the threshold. If a denominator_filter is specified, the time series specified by the filter field will be used as the numerator.The filter must specify the metric type and optionally may contain restrictions on resource type, resource labels, and metric labels. This field may not exceed 2048 Unicode characters in length.",
+"type": "string"
+},
+"duration": {
+"description": "The amount of time that a time series must violate the threshold to be considered failing. Currently, only values that are a multiple of a minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid value is given, an error will be returned. When choosing a duration, it is useful to keep in mind the frequency of the underlying time series data (which may also be affected by any alignments specified in the aggregations field); a good duration is long enough so that a single outlier does not generate spurious alerts, but short enough that unhealthy states are detected and alerted on quickly.",
+"format": "google-duration",
+"type": "string"
+},
+"evaluationMissingData": {
+"description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving. To use this control, the value of the duration field must be greater than or equal to 60 seconds.",
+"enum": [
+"EVALUATION_MISSING_DATA_UNSPECIFIED",
+"EVALUATION_MISSING_DATA_INACTIVE",
+"EVALUATION_MISSING_DATA_ACTIVE",
+"EVALUATION_MISSING_DATA_NO_OP"
+],
+"enumDescriptions": [
+"An unspecified evaluation missing data option. Equivalent to EVALUATION_MISSING_DATA_NO_OP.",
+"If there is no data to evaluate the condition, then evaluate the condition as false.",
+"If there is no data to evaluate the condition, then evaluate the condition as true.",
+"Do not evaluate the condition to any value if there is no data."
+],
+"type": "string"
+},
+"filter": {
+"description": "Required. A filter (https://cloud.google.com/monitoring/api/v3/filters) that identifies which time series should be compared with the threshold.The filter is similar to the one that is specified in the ListTimeSeries request (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that call is useful to verify the time series that will be retrieved / processed). The filter must specify the metric type and the resource type. Optionally, it can specify resource labels and metric labels. This field must not exceed 2048 Unicode characters in length.",
+"type": "string"
+},
+"forecastOptions": {
+"$ref": "ForecastOptions",
+"description": "When this field is present, the MetricThreshold condition forecasts whether the time series is predicted to violate the threshold within the forecast_horizon. When this field is not set, the MetricThreshold tests the current value of the timeseries against the threshold."
+},
+"thresholdValue": {
+"description": "A value against which to compare the time series.",
+"format": "double",
+"type": "number"
+},
+"trigger": {
+"$ref": "Trigger",
+"description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations, or by the ratio, if denominator_filter and denominator_aggregations are specified."
+}
+},
+"type": "object"
+},
+"Minutes": {
+"description": "Used to schedule the query to run every so many minutes.",
+"id": "Minutes",
+"properties": {
+"periodicity": {
+"description": "Required. Number of minutes between runs. The interval must be greater than or equal to 5 minutes and less than or equal to 1440 minutes.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"MonitoredResource": {
+"description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"project_id\", \"instance_id\" and \"zone\": { \"type\": \"gce_instance\", \"labels\": { \"project_id\": \"my-project\", \"instance_id\": \"12345678901234\", \"zone\": \"us-central1-a\" }} ",
+"id": "MonitoredResource",
+"properties": {
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\".",
+"type": "object"
+},
+"type": {
+"description": "Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance. For a list of types, see Monitoring resource types (https://cloud.google.com/monitoring/api/resources) and Logging resource types (https://cloud.google.com/logging/docs/api/v2/resource-list).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MonitoredResourceDescriptor": {
+"description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of \"gce_instance\" and specifies the use of the labels \"instance_id\" and \"zone\" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.",
+"id": "MonitoredResourceDescriptor",
+"properties": {
+"description": {
+"description": "Optional. A detailed description of the monitored resource type that might be used in documentation.",
+"type": "string"
+},
+"displayName": {
+"description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".",
+"type": "string"
+},
+"labels": {
+"description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels \"database_id\" and \"zone\".",
+"items": {
+"$ref": "LabelDescriptor"
+},
+"type": "array"
+},
+"launchStage": {
+"description": "Optional. The launch stage of the monitored resource definition.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"UNIMPLEMENTED",
+"PRELAUNCH",
+"EARLY_ACCESS",
+"ALPHA",
+"BETA",
+"GA",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The feature is not yet implemented. Users can not use it.",
+"Prelaunch features are hidden from users and are only visible internally.",
+"Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
+"Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+"Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
+"GA features are open to all developers and are considered stable and fully qualified for production use.",
+"Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+],
+"type": "string"
+},
+"name": {
+"description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".",
+"type": "string"
+},
+"type": {
+"description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. For a list of types, see Monitored resource types (https://cloud.google.com/monitoring/api/resources) and Logging resource types (https://cloud.google.com/logging/docs/api/v2/resource-list).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MonitoredResourceMetadata": {
+"description": "Auxiliary metadata for a MonitoredResource object. MonitoredResource objects contain the minimum set of information to uniquely identify a monitored resource instance. There is some other useful auxiliary metadata. Monitoring and Logging use an ingestion pipeline to extract metadata for cloud resources of all types, and store the metadata in this message.",
+"id": "MonitoredResourceMetadata",
+"properties": {
+"systemLabels": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Output only. Values for predefined system metadata labels. System labels are a kind of metadata extracted by Google, including \"machine_image\", \"vpc\", \"subnet_id\", \"security_group\", \"name\", etc. System label values can be only strings, Boolean values, or a list of strings. For example: { \"name\": \"my-test-instance\", \"security_group\": [\"a\", \"b\", \"c\"], \"spot_instance\": false } ",
+"type": "object"
+},
+"userLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Output only. A map of user-defined metadata labels.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"MonitoringQueryLanguageCondition": {
+"description": "A condition type that allows alerting policies to be defined using Monitoring Query Language (https://cloud.google.com/monitoring/mql).",
+"id": "MonitoringQueryLanguageCondition",
+"properties": {
+"duration": {
+"description": "The amount of time that a time series must violate the threshold to be considered failing. Currently, only values that are a multiple of a minute--e.g., 0, 60, 120, or 300 seconds--are supported. If an invalid value is given, an error will be returned. When choosing a duration, it is useful to keep in mind the frequency of the underlying time series data (which may also be affected by any alignments specified in the aggregations field); a good duration is long enough so that a single outlier does not generate spurious alerts, but short enough that unhealthy states are detected and alerted on quickly.",
+"format": "google-duration",
+"type": "string"
+},
+"evaluationMissingData": {
+"description": "A condition control that determines how metric-threshold conditions are evaluated when data stops arriving.",
+"enum": [
+"EVALUATION_MISSING_DATA_UNSPECIFIED",
+"EVALUATION_MISSING_DATA_INACTIVE",
+"EVALUATION_MISSING_DATA_ACTIVE",
+"EVALUATION_MISSING_DATA_NO_OP"
+],
+"enumDescriptions": [
+"An unspecified evaluation missing data option. Equivalent to EVALUATION_MISSING_DATA_NO_OP.",
+"If there is no data to evaluate the condition, then evaluate the condition as false.",
+"If there is no data to evaluate the condition, then evaluate the condition as true.",
+"Do not evaluate the condition to any value if there is no data."
+],
+"type": "string"
+},
+"query": {
+"description": "Monitoring Query Language (https://cloud.google.com/monitoring/mql) query that outputs a boolean stream.",
+"type": "string"
+},
+"trigger": {
+"$ref": "Trigger",
+"description": "The number/percent of time series for which the comparison must hold in order for the condition to trigger. If unspecified, then the condition will trigger if the comparison is true for any of the time series that have been identified by filter and aggregations, or by the ratio, if denominator_filter and denominator_aggregations are specified."
+}
+},
+"type": "object"
+},
+"MutationRecord": {
+"description": "Describes a change made to a configuration.",
+"id": "MutationRecord",
+"properties": {
+"mutateTime": {
+"description": "When the change occurred.",
+"format": "google-datetime",
+"type": "string"
+},
+"mutatedBy": {
+"description": "The email address of the user making the change.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NotificationChannel": {
+"description": "A NotificationChannel is a medium through which an alert is delivered when a policy violation is detected. Examples of channels include email, SMS, and third-party messaging applications. Fields containing sensitive information like authentication tokens or contact info are only partially populated on retrieval.",
+"id": "NotificationChannel",
+"properties": {
+"creationRecord": {
+"$ref": "MutationRecord",
+"description": "Record of the creation of this channel."
+},
+"description": {
+"description": "An optional human-readable description of this notification channel. This description may provide additional details, beyond the display name, for the channel. This may not exceed 1024 Unicode characters.",
+"type": "string"
+},
+"displayName": {
+"description": "An optional human-readable name for this notification channel. It is recommended that you specify a non-empty and unique name in order to make it easier to identify the channels in your project, though this is not enforced. The display name is limited to 512 Unicode characters.",
+"type": "string"
+},
+"enabled": {
+"description": "Whether notifications are forwarded to the described channel. This makes it possible to disable delivery of notifications to a particular channel without removing the channel from all alerting policies that reference the channel. This is a more convenient approach when the change is temporary and you want to receive notifications from the same set of alerting policies on the channel at some point in the future.",
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Configuration fields that define the channel and its behavior. The permissible and required labels are specified in the NotificationChannelDescriptor.labels of the NotificationChannelDescriptor corresponding to the type field.",
+"type": "object"
+},
+"mutationRecords": {
+"description": "Records of the modification of this channel.",
+"items": {
+"$ref": "MutationRecord"
+},
+"type": "array"
+},
+"name": {
+"description": "Identifier. The full REST resource name for this channel. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] The [CHANNEL_ID] is automatically assigned by the server on creation.",
+"type": "string"
+},
+"type": {
+"description": "The type of the notification channel. This field matches the value of the NotificationChannelDescriptor.type field.",
+"type": "string"
+},
+"userLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "User-supplied key/value data that does not need to conform to the corresponding NotificationChannelDescriptor's schema, unlike the labels field. This field is intended to be used for organizing and identifying the NotificationChannel objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter.",
+"type": "object"
+},
+"verificationStatus": {
+"description": "Indicates whether this channel has been verified or not. On a ListNotificationChannels or GetNotificationChannel operation, this field is expected to be populated.If the value is UNVERIFIED, then it indicates that the channel is non-functioning (it both requires verification and lacks verification); otherwise, it is assumed that the channel works.If the channel is neither VERIFIED nor UNVERIFIED, it implies that the channel is of a type that does not require verification or that this specific channel has been exempted from verification because it was created prior to verification being required for channels of this type.This field cannot be modified using a standard UpdateNotificationChannel operation. To change the value of this field, you must call VerifyNotificationChannel.",
+"enum": [
+"VERIFICATION_STATUS_UNSPECIFIED",
+"UNVERIFIED",
+"VERIFIED"
+],
+"enumDescriptions": [
+"Sentinel value used to indicate that the state is unknown, omitted, or is not applicable (as in the case of channels that neither support nor require verification in order to function).",
+"The channel has yet to be verified and requires verification to function. Note that this state also applies to the case where the verification process has been initiated by sending a verification code but where the verification code has not been submitted to complete the process.",
+"It has been proven that notifications can be received on this notification channel and that someone on the project has access to messages that are delivered to that channel."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"NotificationChannelDescriptor": {
+"description": "A description of a notification channel. The descriptor includes the properties of the channel and the set of labels or fields that must be specified to configure channels of a given type.",
+"id": "NotificationChannelDescriptor",
+"properties": {
+"description": {
+"description": "A human-readable description of the notification channel type. The description may include a description of the properties of the channel and pointers to external documentation.",
+"type": "string"
+},
+"displayName": {
+"description": "A human-readable name for the notification channel type. This form of the name is suitable for a user interface.",
+"type": "string"
+},
+"labels": {
+"description": "The set of labels that must be defined to identify a particular channel of the corresponding type. Each label includes a description for how that field should be populated.",
+"items": {
+"$ref": "LabelDescriptor"
+},
+"type": "array"
+},
+"launchStage": {
+"description": "The product launch stage for channels of this type.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"UNIMPLEMENTED",
+"PRELAUNCH",
+"EARLY_ACCESS",
+"ALPHA",
+"BETA",
+"GA",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The feature is not yet implemented. Users can not use it.",
+"Prelaunch features are hidden from users and are only visible internally.",
+"Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
+"Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+"Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
+"GA features are open to all developers and are considered stable and fully qualified for production use.",
+"Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our Terms of Service (https://cloud.google.com/terms/) and the Google Cloud Platform Subject to the Deprecation Policy (https://cloud.google.com/terms/deprecation) documentation."
+],
+"type": "string"
+},
+"name": {
+"description": "The full REST resource name for this descriptor. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannelDescriptors/[TYPE] In the above, [TYPE] is the value of the type field.",
+"type": "string"
+},
+"supportedTiers": {
+"deprecated": true,
+"description": "The tiers that support this notification channel; the project service tier must be one of the supported_tiers.",
+"items": {
+"enum": [
+"SERVICE_TIER_UNSPECIFIED",
+"SERVICE_TIER_BASIC",
+"SERVICE_TIER_PREMIUM"
+],
+"enumDescriptions": [
+"An invalid sentinel value, used to indicate that a tier has not been provided explicitly.",
+"The Cloud Monitoring Basic tier, a free tier of service that provides basic features, a moderate allotment of logs, and access to built-in metrics. A number of features are not available in this tier. For more details, see the service tiers documentation (https://cloud.google.com/monitoring/workspaces/tiers).",
+"The Cloud Monitoring Premium tier, a higher, more expensive tier of service that provides access to all Cloud Monitoring features, lets you use Cloud Monitoring with AWS accounts, and has a larger allotments for logs and metrics. For more details, see the service tiers documentation (https://cloud.google.com/monitoring/workspaces/tiers)."
+],
+"type": "string"
+},
+"type": "array"
+},
+"type": {
+"description": "The type of notification channel, such as \"email\" and \"sms\". To view the full list of channels, see Channel descriptors (https://cloud.google.com/monitoring/alerts/using-channels-api#ncd). Notification channel types are globally unique.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NotificationChannelStrategy": {
+"description": "Control over how the notification channels in notification_channels are notified when this alert fires, on a per-channel basis.",
+"id": "NotificationChannelStrategy",
+"properties": {
+"notificationChannelNames": {
+"description": "The full REST resource name for the notification channels that these settings apply to. Each of these correspond to the name field in one of the NotificationChannel objects referenced in the notification_channels field of this AlertPolicy. The format is: projects/[PROJECT_ID_OR_NUMBER]/notificationChannels/[CHANNEL_ID] ",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"renotifyInterval": {
+"description": "The frequency at which to send reminder notifications for open incidents.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NotificationRateLimit": {
+"description": "Control over the rate of notifications sent to this alerting policy's notification channels.",
+"id": "NotificationRateLimit",
+"properties": {
+"period": {
+"description": "Not more than one notification per period.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Contains metadata for longrunning operation for the edit Metrics Scope endpoints.",
+"id": "OperationMetadata",
+"properties": {
+"createTime": {
+"description": "The time when the batch request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "Current state of the batch operation.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATED",
+"RUNNING",
+"DONE",
+"CANCELLED"
+],
+"enumDescriptions": [
+"Invalid.",
+"Request has been received.",
+"Request is actively being processed.",
+"The batch processing is done.",
+"The batch processing was cancelled."
+],
+"type": "string"
+},
+"updateTime": {
+"description": "The time when the operation result was last updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Option": {
+"description": "A protocol buffer option, which can be attached to a message, field, enumeration, etc.",
+"id": "Option",
+"properties": {
+"name": {
+"description": "The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, \"map_entry\". For custom options, it should be the fully-qualified name. For example, \"google.api.http\".",
+"type": "string"
+},
+"value": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The option's value packed in an Any message. If the value is a primitive, the corresponding wrapper type defined in google/protobuf/wrappers.proto should be used. If the value is an enum, it should be stored as an int32 value using the google.protobuf.Int32Value type.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"PerformanceThreshold": {
+"description": "A PerformanceThreshold is used when each window is good when that window has a sufficiently high performance.",
+"id": "PerformanceThreshold",
+"properties": {
+"basicSliPerformance": {
+"$ref": "BasicSli",
+"description": "BasicSli to evaluate to judge window quality."
+},
+"performance": {
+"$ref": "RequestBasedSli",
+"description": "RequestBasedSli to evaluate to judge window quality."
+},
+"threshold": {
+"description": "If window performance >= threshold, the window is counted as good.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"PingConfig": {
+"description": "Information involved in sending ICMP pings alongside public HTTP/TCP checks. For HTTP, the pings are performed for each part of the redirect chain.",
+"id": "PingConfig",
+"properties": {
+"pingsCount": {
+"description": "Number of ICMP pings. A maximum of 3 ICMP pings is currently supported.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Point": {
+"description": "A single data point in a time series.",
+"id": "Point",
+"properties": {
+"interval": {
+"$ref": "TimeInterval",
+"description": "The time interval to which the data point applies. For GAUGE metrics, the start time is optional, but if it is supplied, it must equal the end time. For DELTA metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For CUMULATIVE metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
+},
+"value": {
+"$ref": "TypedValue",
+"description": "The value of the data point."
+}
+},
+"type": "object"
+},
+"PointData": {
+"description": "A point's value columns and time interval. Each point has one or more point values corresponding to the entries in point_descriptors field in the TimeSeriesDescriptor associated with this object.",
+"id": "PointData",
+"properties": {
+"timeInterval": {
+"$ref": "TimeInterval",
+"description": "The time interval associated with the point."
+},
+"values": {
+"description": "The values that make up the point.",
+"items": {
+"$ref": "TypedValue"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PrometheusQueryLanguageCondition": {
+"description": "A condition type that allows alerting policies to be defined using Prometheus Query Language (PromQL) (https://prometheus.io/docs/prometheus/latest/querying/basics/).The PrometheusQueryLanguageCondition message contains information from a Prometheus alerting rule and its associated rule group.A Prometheus alerting rule is described here (https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/). The semantics of a Prometheus alerting rule is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#rule).A Prometheus rule group is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/). The semantics of a Prometheus rule group is described here (https://prometheus.io/docs/prometheus/latest/configuration/recording_rules/#rule_group).Because Cloud Alerting has no representation of a Prometheus rule group resource, we must embed the information of the parent rule group inside each of the conditions that refer to it. We must also update the contents of all Prometheus alerts in case the information of their rule group changes.The PrometheusQueryLanguageCondition protocol buffer combines the information of the corresponding rule group and alerting rule. The structure of the PrometheusQueryLanguageCondition protocol buffer does NOT mimic the structure of the Prometheus rule group and alerting rule YAML declarations. The PrometheusQueryLanguageCondition protocol buffer may change in the future to support future rule group and/or alerting rule features. There are no new such features at the present time (2023-06-26).",
+"id": "PrometheusQueryLanguageCondition",
+"properties": {
+"alertRule": {
+"description": "Optional. The alerting rule name of this alert in the corresponding Prometheus configuration file.Some external tools may require this field to be populated correctly in order to refer to the original Prometheus configuration file. The rule group name and the alert name are necessary to update the relevant AlertPolicies in case the definition of the rule group changes in the future.This field is optional. If this field is not empty, then it must be a valid Prometheus label name (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). This field may not exceed 2048 Unicode characters in length.",
+"type": "string"
+},
+"disableMetricValidation": {
+"description": "Optional. Whether to disable metric existence validation for this condition.This allows alerting policies to be defined on metrics that do not yet exist, improving advanced customer workflows such as configuring alerting policies using Terraform.Users with the monitoring.alertPolicyViewer role are able to see the name of the non-existent metric in the alerting policy condition.",
+"type": "boolean"
+},
+"duration": {
+"description": "Optional. Alerts are considered firing once their PromQL expression was evaluated to be \"true\" for this long. Alerts whose PromQL expression was not evaluated to be \"true\" for long enough are considered pending. Must be a non-negative duration or missing. This field is optional. Its default value is zero.",
+"format": "google-duration",
+"type": "string"
+},
+"evaluationInterval": {
+"description": "Optional. How often this rule should be evaluated. Must be a positive multiple of 30 seconds or missing. This field is optional. Its default value is 30 seconds. If this PrometheusQueryLanguageCondition was generated from a Prometheus alerting rule, then this value should be taken from the enclosing rule group.",
+"format": "google-duration",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Labels to add to or overwrite in the PromQL query result. Label names must be valid (https://prometheus.io/docs/concepts/data_model/#metric-names-and-labels). Label values can be templatized by using variables (https://cloud.google.com/monitoring/alerts/doc-variables#doc-vars). The only available variable names are the names of the labels in the PromQL result, including \"__name__\" and \"value\". \"labels\" may be empty.",
+"type": "object"
+},
+"query": {
+"description": "Required. The PromQL expression to evaluate. Every evaluation cycle this expression is evaluated at the current time, and all resultant time series become pending/firing alerts. This field must not be empty.",
+"type": "string"
+},
+"ruleGroup": {
+"description": "Optional. The rule group name of this alert in the corresponding Prometheus configuration file.Some external tools may require this field to be populated correctly in order to refer to the original Prometheus configuration file. The rule group name and the alert name are necessary to update the relevant AlertPolicies in case the definition of the rule group changes in the future.This field is optional. If this field is not empty, then it must contain a valid UTF-8 string. This field may not exceed 2048 Unicode characters in length.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"QueryTimeSeriesRequest": {
+"deprecated": true,
+"description": "The QueryTimeSeries request. For information about the status of Monitoring Query Language (MQL), see the MQL deprecation notice (https://cloud.google.com/stackdriver/docs/deprecations/mql).",
+"id": "QueryTimeSeriesRequest",
+"properties": {
+"pageSize": {
+"description": "A positive number that is the maximum number of time_series_data to return.",
+"format": "int32",
+"type": "integer"
+},
+"pageToken": {
+"description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.",
+"type": "string"
+},
+"query": {
+"description": "Required. The query in the Monitoring Query Language (https://cloud.google.com/monitoring/mql/reference) format. The default time zone is in UTC.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"QueryTimeSeriesResponse": {
+"deprecated": true,
+"description": "The QueryTimeSeries response. For information about the status of Monitoring Query Language (MQL), see the MQL deprecation notice (https://cloud.google.com/stackdriver/docs/deprecations/mql).",
+"id": "QueryTimeSeriesResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as page_token in the next call to this method.",
+"type": "string"
+},
+"partialErrors": {
+"description": "Query execution errors that may have caused the time series data returned to be incomplete. The available data will be available in the response.",
+"items": {
+"$ref": "Status"
+},
+"type": "array"
+},
+"timeSeriesData": {
+"description": "The time series data.",
+"items": {
+"$ref": "TimeSeriesData"
+},
+"type": "array"
+},
+"timeSeriesDescriptor": {
+"$ref": "TimeSeriesDescriptor",
+"description": "The descriptor for the time series data."
+}
+},
+"type": "object"
+},
+"Range": {
+"description": "The range of the population values.",
+"id": "Range",
+"properties": {
+"max": {
+"description": "The maximum of the population values.",
+"format": "double",
+"type": "number"
+},
+"min": {
+"description": "The minimum of the population values.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"RequestBasedSli": {
+"description": "Service Level Indicators for which atomic units of service are counted directly.",
+"id": "RequestBasedSli",
+"properties": {
+"distributionCut": {
+"$ref": "DistributionCut",
+"description": "distribution_cut is used when good_service is a count of values aggregated in a Distribution that fall into a good range. The total_service is the total count of all values aggregated in the Distribution."
+},
+"goodTotalRatio": {
+"$ref": "TimeSeriesRatio",
+"description": "good_total_ratio is used when the ratio of good_service to total_service is computed from two TimeSeries."
+}
+},
+"type": "object"
+},
+"ResourceGroup": {
+"description": "The resource submessage for group checks. It can be used instead of a monitored resource, when multiple resources are being monitored.",
+"id": "ResourceGroup",
+"properties": {
+"groupId": {
+"description": "The group of resources being monitored. Should be only the [GROUP_ID], and not the full-path projects/[PROJECT_ID_OR_NUMBER]/groups/[GROUP_ID].",
+"type": "string"
+},
+"resourceType": {
+"description": "The resource type of the group members.",
+"enum": [
+"RESOURCE_TYPE_UNSPECIFIED",
+"INSTANCE",
+"AWS_ELB_LOAD_BALANCER"
+],
+"enumDescriptions": [
+"Default value (not valid).",
+"A group of instances from Google Cloud Platform (GCP) or Amazon Web Services (AWS).",
+"A group of Amazon ELB load balancers."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResponseStatusCode": {
+"description": "A status to accept. Either a status code class like \"2xx\", or an integer status code like \"200\".",
+"id": "ResponseStatusCode",
+"properties": {
+"statusClass": {
+"description": "A class of status codes to accept.",
+"enum": [
+"STATUS_CLASS_UNSPECIFIED",
+"STATUS_CLASS_1XX",
+"STATUS_CLASS_2XX",
+"STATUS_CLASS_3XX",
+"STATUS_CLASS_4XX",
+"STATUS_CLASS_5XX",
+"STATUS_CLASS_ANY"
+],
+"enumDescriptions": [
+"Default value that matches no status codes.",
+"The class of status codes between 100 and 199.",
+"The class of status codes between 200 and 299.",
+"The class of status codes between 300 and 399.",
+"The class of status codes between 400 and 499.",
+"The class of status codes between 500 and 599.",
+"The class of all status codes."
+],
+"type": "string"
+},
+"statusValue": {
+"description": "A status code to accept.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"RowCountTest": {
+"description": "A test that checks if the number of rows in the result set violates some threshold.",
+"id": "RowCountTest",
+"properties": {
+"comparison": {
+"description": "Required. The comparison to apply between the number of rows returned by the query and the threshold.",
+"enum": [
+"COMPARISON_UNSPECIFIED",
+"COMPARISON_GT",
+"COMPARISON_GE",
+"COMPARISON_LT",
+"COMPARISON_LE",
+"COMPARISON_EQ",
+"COMPARISON_NE"
+],
+"enumDescriptions": [
+"No ordering relationship is specified.",
+"True if the left argument is greater than the right argument.",
+"True if the left argument is greater than or equal to the right argument.",
+"True if the left argument is less than the right argument.",
+"True if the left argument is less than or equal to the right argument.",
+"True if the left argument is equal to the right argument.",
+"True if the left argument is not equal to the right argument."
+],
+"type": "string"
+},
+"threshold": {
+"description": "Required. The value against which to compare the row count.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SendNotificationChannelVerificationCodeRequest": {
+"description": "The SendNotificationChannelVerificationCode request.",
+"id": "SendNotificationChannelVerificationCodeRequest",
+"properties": {},
+"type": "object"
+},
+"Service": {
+"description": "A Service is a discrete, autonomous, and network-accessible unit, designed to solve an individual concern (Wikipedia (https://en.wikipedia.org/wiki/Service-orientation)). In Cloud Monitoring, a Service acts as the root resource under which operational aspects of the service are accessible.",
+"id": "Service",
+"properties": {
+"appEngine": {
+"$ref": "AppEngine",
+"description": "Type used for App Engine services."
+},
+"basicService": {
+"$ref": "BasicService",
+"description": "Message that contains the service type and service labels of this service if it is a basic service. Documentation and examples here (https://cloud.google.com/stackdriver/docs/solutions/slo-monitoring/api/api-structures#basic-svc-w-basic-sli)."
+},
+"cloudEndpoints": {
+"$ref": "CloudEndpoints",
+"description": "Type used for Cloud Endpoints services."
+},
+"cloudRun": {
+"$ref": "CloudRun",
+"description": "Type used for Cloud Run services."
+},
+"clusterIstio": {
+"$ref": "ClusterIstio",
+"description": "Type used for Istio services that live in a Kubernetes cluster."
+},
+"custom": {
+"$ref": "Custom",
+"description": "Custom service type."
+},
+"displayName": {
+"description": "Name used for UI elements listing this Service.",
+"type": "string"
+},
+"gkeNamespace": {
+"$ref": "GkeNamespace",
+"description": "Type used for GKE Namespaces."
+},
+"gkeService": {
+"$ref": "GkeService",
+"description": "Type used for GKE Services (the Kubernetes concept of a service)."
+},
+"gkeWorkload": {
+"$ref": "GkeWorkload",
+"description": "Type used for GKE Workloads."
+},
+"istioCanonicalService": {
+"$ref": "IstioCanonicalService",
+"description": "Type used for canonical services scoped to an Istio mesh. Metrics for Istio are documented here (https://istio.io/latest/docs/reference/config/metrics/)"
+},
+"meshIstio": {
+"$ref": "MeshIstio",
+"description": "Type used for Istio services scoped to an Istio mesh."
+},
+"name": {
+"description": "Identifier. Resource name for this Service. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID] ",
+"type": "string"
+},
+"telemetry": {
+"$ref": "Telemetry",
+"description": "Configuration for how to query telemetry on a Service."
+},
+"userLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels which have been used to annotate the service. Label keys must start with a letter. Label keys and values may contain lowercase letters, numbers, underscores, and dashes. Label keys and values have a maximum length of 63 characters, and must be less than 128 bytes in size. Up to 64 label entries may be stored. For labels which do not have a semantic value, the empty string may be supplied for the label value.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"ServiceAgentAuthentication": {
+"description": "Contains information needed for generating either an OpenID Connect token (https://developers.google.com/identity/protocols/OpenIDConnect) or OAuth token (https://developers.google.com/identity/protocols/oauth2). The token will be generated for the Monitoring service agent service account.",
+"id": "ServiceAgentAuthentication",
+"properties": {
+"type": {
+"description": "Type of authentication.",
+"enum": [
+"SERVICE_AGENT_AUTHENTICATION_TYPE_UNSPECIFIED",
+"OIDC_TOKEN"
+],
+"enumDescriptions": [
+"Default value, will result in OIDC Authentication.",
+"OIDC Authentication"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceLevelIndicator": {
+"description": "A Service-Level Indicator (SLI) describes the \"performance\" of a service. For some services, the SLI is well-defined. In such cases, the SLI can be described easily by referencing the well-known SLI and providing the needed parameters. Alternatively, a \"custom\" SLI can be defined with a query to the underlying metric store. An SLI is defined to be good_service / total_service over any queried time interval. The value of performance always falls into the range 0 <= performance <= 1. A custom SLI describes how to compute this ratio, whether this is by dividing values from a pair of time series, cutting a Distribution into good and bad counts, or counting time windows in which the service complies with a criterion. For separation of concerns, a single Service-Level Indicator measures performance for only one aspect of service quality, such as fraction of successful queries or fast-enough queries.",
+"id": "ServiceLevelIndicator",
+"properties": {
+"basicSli": {
+"$ref": "BasicSli",
+"description": "Basic SLI on a well-known service type."
+},
+"requestBased": {
+"$ref": "RequestBasedSli",
+"description": "Request-based SLIs"
+},
+"windowsBased": {
+"$ref": "WindowsBasedSli",
+"description": "Windows-based SLIs"
+}
+},
+"type": "object"
+},
+"ServiceLevelObjective": {
+"description": "A Service-Level Objective (SLO) describes a level of desired good service. It consists of a service-level indicator (SLI), a performance goal, and a period over which the objective is to be evaluated against that goal. The SLO can use SLIs defined in a number of different manners. Typical SLOs might include \"99% of requests in each rolling week have latency below 200 milliseconds\" or \"99.5% of requests in each calendar month return successfully.\"",
+"id": "ServiceLevelObjective",
+"properties": {
+"calendarPeriod": {
+"description": "A calendar period, semantically \"since the start of the current \". At this time, only DAY, WEEK, FORTNIGHT, and MONTH are supported.",
+"enum": [
+"CALENDAR_PERIOD_UNSPECIFIED",
+"DAY",
+"WEEK",
+"FORTNIGHT",
+"MONTH",
+"QUARTER",
+"HALF",
+"YEAR"
+],
+"enumDescriptions": [
+"Undefined period, raises an error.",
+"A day.",
+"A week. Weeks begin on Monday, following ISO 8601 (https://en.wikipedia.org/wiki/ISO_week_date).",
+"A fortnight. The first calendar fortnight of the year begins at the start of week 1 according to ISO 8601 (https://en.wikipedia.org/wiki/ISO_week_date).",
+"A month.",
+"A quarter. Quarters start on dates 1-Jan, 1-Apr, 1-Jul, and 1-Oct of each year.",
+"A half-year. Half-years start on dates 1-Jan and 1-Jul.",
+"A year."
+],
+"type": "string"
+},
+"displayName": {
+"description": "Name used for UI elements listing this SLO.",
+"type": "string"
+},
+"goal": {
+"description": "The fraction of service that must be good in order for this objective to be met. 0 < goal <= 0.9999.",
+"format": "double",
+"type": "number"
+},
+"name": {
+"description": "Identifier. Resource name for this ServiceLevelObjective. The format is: projects/[PROJECT_ID_OR_NUMBER]/services/[SERVICE_ID]/serviceLevelObjectives/[SLO_NAME] ",
+"type": "string"
+},
+"rollingPeriod": {
+"description": "A rolling time period, semantically \"in the past \". Must be an integer multiple of 1 day no larger than 30 days.",
+"format": "google-duration",
+"type": "string"
+},
+"serviceLevelIndicator": {
+"$ref": "ServiceLevelIndicator",
+"description": "The definition of good service, used to measure and calculate the quality of the Service's performance with respect to a single aspect of service quality."
+},
+"userLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels which have been used to annotate the service-level objective. Label keys must start with a letter. Label keys and values may contain lowercase letters, numbers, underscores, and dashes. Label keys and values have a maximum length of 63 characters, and must be less than 128 bytes in size. Up to 64 label entries may be stored. For labels which do not have a semantic value, the empty string may be supplied for the label value.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Snooze": {
+"description": "A Snooze will prevent any alerts from being opened, and close any that are already open. The Snooze will work on alerts that match the criteria defined in the Snooze. The Snooze will be active from interval.start_time through interval.end_time.",
+"id": "Snooze",
+"properties": {
+"criteria": {
+"$ref": "Criteria",
+"description": "Required. This defines the criteria for applying the Snooze. See Criteria for more information."
+},
+"displayName": {
+"description": "Required. A display name for the Snooze. This can be, at most, 512 unicode characters.",
+"type": "string"
+},
+"interval": {
+"$ref": "TimeInterval",
+"description": "Required. The Snooze will be active from interval.start_time through interval.end_time. interval.start_time cannot be in the past. There is a 15 second clock skew to account for the time it takes for a request to reach the API from the UI."
+},
+"name": {
+"description": "Required. Identifier. The name of the Snooze. The format is: projects/[PROJECT_ID_OR_NUMBER]/snoozes/[SNOOZE_ID] The ID of the Snooze will be generated by the system.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SourceContext": {
+"description": "SourceContext represents information about the source of a protobuf element, like the file in which it is defined.",
+"id": "SourceContext",
+"properties": {
+"fileName": {
+"description": "The path-qualified name of the .proto file that contained the associated protobuf element. For example: \"google/protobuf/source_context.proto\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SpanContext": {
+"description": "The context of a span. This is attached to an Exemplar in Distribution values during aggregation.It contains the name of a span with format: projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID] ",
+"id": "SpanContext",
+"properties": {
+"spanName": {
+"description": "The resource name of the span. The format is: projects/[PROJECT_ID_OR_NUMBER]/traces/[TRACE_ID]/spans/[SPAN_ID] [TRACE_ID] is a unique identifier for a trace within a project; it is a 32-character hexadecimal encoding of a 16-byte array.[SPAN_ID] is a unique identifier for a span within a trace; it is a 16-character hexadecimal encoding of an 8-byte array.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SqlCondition": {
+"description": "A condition that allows alerting policies to be defined using GoogleSQL. SQL conditions examine a sliding window of logs using GoogleSQL. Alert policies with SQL conditions may incur additional billing.",
+"id": "SqlCondition",
+"properties": {
+"booleanTest": {
+"$ref": "BooleanTest",
+"description": "Test the boolean value in the indicated column."
+},
+"daily": {
+"$ref": "Daily",
+"description": "Schedule the query to execute every so many days."
+},
+"hourly": {
+"$ref": "Hourly",
+"description": "Schedule the query to execute every so many hours."
+},
+"minutes": {
+"$ref": "Minutes",
+"description": "Schedule the query to execute every so many minutes."
+},
+"query": {
+"description": "Required. The Log Analytics SQL query to run, as a string. The query must conform to the required shape. Specifically, the query must not try to filter the input by time. A filter will automatically be applied to filter the input so that the query receives all rows received since the last time the query was run.For example, the following query extracts all log entries containing an HTTP request: SELECT timestamp, log_name, severity, http_request, resource, labels FROM my-project.global._Default._AllLogs WHERE http_request IS NOT NULL ",
+"type": "string"
+},
+"rowCountTest": {
+"$ref": "RowCountTest",
+"description": "Test the row count against a threshold."
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SyntheticMonitorTarget": {
+"description": "Describes a Synthetic Monitor to be invoked by Uptime.",
+"id": "SyntheticMonitorTarget",
+"properties": {
+"cloudFunctionV2": {
+"$ref": "CloudFunctionV2Target",
+"description": "Target a Synthetic Monitor GCFv2 instance."
+}
+},
+"type": "object"
+},
+"TcpCheck": {
+"description": "Information required for a TCP Uptime check request.",
+"id": "TcpCheck",
+"properties": {
+"pingConfig": {
+"$ref": "PingConfig",
+"description": "Contains information needed to add pings to a TCP check."
+},
+"port": {
+"description": "The TCP port on the server against which to run the check. Will be combined with host (specified within the monitored_resource) to construct the full URL. Required.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Telemetry": {
+"description": "Configuration for how to query telemetry on a Service.",
+"id": "Telemetry",
+"properties": {
+"resourceName": {
+"description": "The full name of the resource that defines this service. Formatted as described in https://cloud.google.com/apis/design/resource_names.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TimeInterval": {
+"description": "Describes a time interval: Reads: A half-open time interval. It includes the end time but excludes the start time: (startTime, endTime]. The start time must be specified, must be earlier than the end time, and should be no older than the data retention period for the metric. Writes: A closed time interval. It extends from the start time to the end time, and includes both: [startTime, endTime]. Valid time intervals depend on the MetricKind (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.metricDescriptors#MetricKind) of the metric value. The end time must not be earlier than the start time, and the end time must not be more than 25 hours in the past or more than five minutes in the future. For GAUGE metrics, the startTime value is technically optional; if no value is specified, the start time defaults to the value of the end time, and the interval represents a single point in time. If both start and end times are specified, they must be identical. Such an interval is valid only for GAUGE metrics, which are point-in-time measurements. The end time of a new interval must be at least a millisecond after the end time of the previous interval. For DELTA metrics, the start time and end time must specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For DELTA metrics, the start time of the next interval must be at least a millisecond after the end time of the previous interval. For CUMULATIVE metrics, the start time and end time must specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points. The new start time must be at least a millisecond after the end time of the previous interval. The start time of a new interval must be at least a millisecond after the end time of the previous interval because intervals are closed. If the start time of a new interval is the same as the end time of the previous interval, then data written at the new start time could overwrite data written at the previous end time.",
+"id": "TimeInterval",
+"properties": {
+"endTime": {
+"description": "Required. The end of the time interval.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TimeOfDay": {
+"description": "Represents a time of day. The date and time zone are either not significant or are specified elsewhere. An API may choose to allow leap seconds. Related types are google.type.Date and google.protobuf.Timestamp.",
+"id": "TimeOfDay",
+"properties": {
+"hours": {
+"description": "Hours of a day in 24 hour format. Must be greater than or equal to 0 and typically must be less than or equal to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.",
+"format": "int32",
+"type": "integer"
+},
+"minutes": {
+"description": "Minutes of an hour. Must be greater than or equal to 0 and less than or equal to 59.",
+"format": "int32",
+"type": "integer"
+},
+"nanos": {
+"description": "Fractions of seconds, in nanoseconds. Must be greater than or equal to 0 and less than or equal to 999,999,999.",
+"format": "int32",
+"type": "integer"
+},
+"seconds": {
+"description": "Seconds of a minute. Must be greater than or equal to 0 and typically must be less than or equal to 59. An API may allow the value 60 if it allows leap-seconds.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"TimeSeries": {
+"description": "A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series.",
+"id": "TimeSeries",
+"properties": {
+"description": {
+"description": "Input only. A detailed description of the time series that will be associated with the google.api.MetricDescriptor for the metric. Once set, this field cannot be changed through CreateTimeSeries.",
+"type": "string"
+},
+"metadata": {
+"$ref": "MonitoredResourceMetadata",
+"description": "Output only. The associated monitored resource metadata. When reading a time series, this field will include metadata labels that are explicitly named in the reduction. When creating a time series, this field is ignored."
+},
+"metric": {
+"$ref": "Metric",
+"description": "The associated metric. A fully-specified metric used to identify the time series."
+},
+"metricKind": {
+"description": "The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric's descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either GAUGE (the default) or CUMULATIVE.",
+"enum": [
+"METRIC_KIND_UNSPECIFIED",
+"GAUGE",
+"DELTA",
+"CUMULATIVE"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"An instantaneous measurement of a value.",
+"The change in a value during a time interval.",
+"A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
+],
+"type": "string"
+},
+"points": {
+"description": "The data points of this time series. When listing time series, points are returned in reverse time order.When creating a time series, this field must contain exactly one point and the point's type must be the same as the value type of the associated metric. If the associated metric's descriptor must be auto-created, then the value type of the descriptor is determined by the point's type, which must be BOOL, INT64, DOUBLE, or DISTRIBUTION.",
+"items": {
+"$ref": "Point"
+},
+"type": "array"
+},
+"resource": {
+"$ref": "MonitoredResource",
+"description": "The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data. For more information, see Monitored resources for custom metrics (https://cloud.google.com/monitoring/custom-metrics/creating-metrics#custom-metric-resources)."
+},
+"unit": {
+"description": "The units in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The unit defines the representation of the stored metric values. This field can only be changed through CreateTimeSeries when it is empty.",
+"type": "string"
+},
+"valueType": {
+"description": "The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the type of the data in the points field.",
+"enum": [
+"VALUE_TYPE_UNSPECIFIED",
+"BOOL",
+"INT64",
+"DOUBLE",
+"STRING",
+"DISTRIBUTION",
+"MONEY"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The value is a boolean. This value type can be used only if the metric kind is GAUGE.",
+"The value is a signed 64-bit integer.",
+"The value is a double precision floating point number.",
+"The value is a text string. This value type can be used only if the metric kind is GAUGE.",
+"The value is a Distribution.",
+"The value is money."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"TimeSeriesData": {
+"description": "Represents the values of a time series associated with a TimeSeriesDescriptor.",
+"id": "TimeSeriesData",
+"properties": {
+"labelValues": {
+"description": "The values of the labels in the time series identifier, given in the same order as the label_descriptors field of the TimeSeriesDescriptor associated with this object. Each value must have a value of the type given in the corresponding entry of label_descriptors.",
+"items": {
+"$ref": "LabelValue"
+},
+"type": "array"
+},
+"pointData": {
+"description": "The points in the time series.",
+"items": {
+"$ref": "PointData"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TimeSeriesDescriptor": {
+"description": "A descriptor for the labels and points in a time series.",
+"id": "TimeSeriesDescriptor",
+"properties": {
+"labelDescriptors": {
+"description": "Descriptors for the labels.",
+"items": {
+"$ref": "LabelDescriptor"
+},
+"type": "array"
+},
+"pointDescriptors": {
+"description": "Descriptors for the point data value columns.",
+"items": {
+"$ref": "ValueDescriptor"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TimeSeriesRatio": {
+"description": "A TimeSeriesRatio specifies two TimeSeries to use for computing the good_service / total_service ratio. The specified TimeSeries must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE. The TimeSeriesRatio must specify exactly two of good, bad, and total, and the relationship good_service + bad_service = total_service will be assumed.",
+"id": "TimeSeriesRatio",
+"properties": {
+"badServiceFilter": {
+"description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying bad service, either demanded service that was not provided or demanded service that was of inadequate quality. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE.",
+"type": "string"
+},
+"goodServiceFilter": {
+"description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying good service provided. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE.",
+"type": "string"
+},
+"totalServiceFilter": {
+"description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries quantifying total demanded service. Must have ValueType = DOUBLE or ValueType = INT64 and must have MetricKind = DELTA or MetricKind = CUMULATIVE.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Trigger": {
+"description": "Specifies how many time series must fail a predicate to trigger a condition. If not specified, then a {count: 1} trigger is used.",
+"id": "Trigger",
+"properties": {
+"count": {
+"description": "The absolute number of time series that must fail the predicate for the condition to be triggered.",
+"format": "int32",
+"type": "integer"
+},
+"percent": {
+"description": "The percentage of time series that must fail the predicate for the condition to be triggered.",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"Type": {
+"description": "A protocol buffer message type.",
+"id": "Type",
+"properties": {
+"edition": {
+"description": "The source edition string, only valid when syntax is SYNTAX_EDITIONS.",
+"type": "string"
+},
+"fields": {
+"description": "The list of fields.",
+"items": {
+"$ref": "Field"
+},
+"type": "array"
+},
+"name": {
+"description": "The fully qualified message name.",
+"type": "string"
+},
+"oneofs": {
+"description": "The list of types appearing in oneof definitions in this type.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"options": {
+"description": "The protocol buffer options.",
+"items": {
+"$ref": "Option"
+},
+"type": "array"
+},
+"sourceContext": {
+"$ref": "SourceContext",
+"description": "The source context."
+},
+"syntax": {
+"description": "The source syntax.",
+"enum": [
+"SYNTAX_PROTO2",
+"SYNTAX_PROTO3",
+"SYNTAX_EDITIONS"
+],
+"enumDescriptions": [
+"Syntax proto2.",
+"Syntax proto3.",
+"Syntax editions."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"TypedValue": {
+"description": "A single strongly-typed value.",
+"id": "TypedValue",
+"properties": {
+"boolValue": {
+"description": "A Boolean value: true or false.",
+"type": "boolean"
+},
+"distributionValue": {
+"$ref": "Distribution",
+"description": "A distribution value."
+},
+"doubleValue": {
+"description": "A 64-bit double-precision floating-point number. Its magnitude is approximately \u00b110\u00b1300 and it has 16 significant digits of precision.",
+"format": "double",
+"type": "number"
+},
+"int64Value": {
+"description": "A 64-bit integer. Its range is approximately \u00b19.2x1018.",
+"format": "int64",
+"type": "string"
+},
+"stringValue": {
+"description": "A variable-length string value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UptimeCheckConfig": {
+"description": "This message configures which resources and services to monitor for availability.",
+"id": "UptimeCheckConfig",
+"properties": {
+"checkerType": {
+"description": "The type of checkers to use to execute the Uptime check.",
+"enum": [
+"CHECKER_TYPE_UNSPECIFIED",
+"STATIC_IP_CHECKERS",
+"VPC_CHECKERS"
+],
+"enumDescriptions": [
+"The default checker type. Currently converted to STATIC_IP_CHECKERS on creation, the default conversion behavior may change in the future.",
+"STATIC_IP_CHECKERS are used for uptime checks that perform egress across the public internet. STATIC_IP_CHECKERS use the static IP addresses returned by ListUptimeCheckIps.",
+"VPC_CHECKERS are used for uptime checks that perform egress using Service Directory and private network access. When using VPC_CHECKERS, the monitored resource type must be servicedirectory_service."
+],
+"type": "string"
+},
+"contentMatchers": {
+"description": "The content that is expected to appear in the data returned by the target server against which the check is run. Currently, only the first entry in the content_matchers list is supported, and additional entries will be ignored. This field is optional and should only be specified if a content match is required as part of the/ Uptime check.",
+"items": {
+"$ref": "ContentMatcher"
+},
+"type": "array"
+},
+"displayName": {
+"description": "A human-friendly name for the Uptime check configuration. The display name should be unique within a Cloud Monitoring Workspace in order to make it easier to identify; however, uniqueness is not enforced. Required.",
+"type": "string"
+},
+"httpCheck": {
+"$ref": "HttpCheck",
+"description": "Contains information needed to make an HTTP or HTTPS check."
+},
+"internalCheckers": {
+"deprecated": true,
+"description": "The internal checkers that this check will egress from. If is_internal is true and this list is empty, the check will egress from all the InternalCheckers configured for the project that owns this UptimeCheckConfig.",
+"items": {
+"$ref": "InternalChecker"
+},
+"type": "array"
+},
+"isInternal": {
+"deprecated": true,
+"description": "If this is true, then checks are made only from the 'internal_checkers'. If it is false, then checks are made only from the 'selected_regions'. It is an error to provide 'selected_regions' when is_internal is true, or to provide 'internal_checkers' when is_internal is false.",
+"type": "boolean"
+},
+"monitoredResource": {
+"$ref": "MonitoredResource",
+"description": "The monitored resource (https://cloud.google.com/monitoring/api/resources) associated with the configuration. The following monitored resource types are valid for this field: uptime_url, gce_instance, gae_app, aws_ec2_instance, aws_elb_load_balancer k8s_service servicedirectory_service cloud_run_revision"
+},
+"name": {
+"description": "Identifier. A unique resource name for this Uptime check configuration. The format is: projects/[PROJECT_ID_OR_NUMBER]/uptimeCheckConfigs/[UPTIME_CHECK_ID] [PROJECT_ID_OR_NUMBER] is the Workspace host project associated with the Uptime check.This field should be omitted when creating the Uptime check configuration; on create, the resource name is assigned by the server and included in the response.",
+"type": "string"
+},
+"period": {
+"description": "How often, in seconds, the Uptime check is performed. Currently, the only supported values are 60s (1 minute), 300s (5 minutes), 600s (10 minutes), and 900s (15 minutes). Optional, defaults to 60s.",
+"format": "google-duration",
+"type": "string"
+},
+"resourceGroup": {
+"$ref": "ResourceGroup",
+"description": "The group resource associated with the configuration."
+},
+"selectedRegions": {
+"description": "The list of regions from which the check will be run. Some regions contain one location, and others contain more than one. If this field is specified, enough regions must be provided to include a minimum of 3 locations. Not specifying this field will result in Uptime checks running from all available regions.",
+"items": {
+"enum": [
+"REGION_UNSPECIFIED",
+"USA",
+"EUROPE",
+"SOUTH_AMERICA",
+"ASIA_PACIFIC",
+"USA_OREGON",
+"USA_IOWA",
+"USA_VIRGINIA"
+],
+"enumDescriptions": [
+"Default value if no region is specified. Will result in Uptime checks running from all regions.",
+"Allows checks to run from locations within the United States of America.",
+"Allows checks to run from locations within the continent of Europe.",
+"Allows checks to run from locations within the continent of South America.",
+"Allows checks to run from locations within the Asia Pacific area (ex: Singapore).",
+"Allows checks to run from locations within the western United States of America",
+"Allows checks to run from locations within the central United States of America",
+"Allows checks to run from locations within the eastern United States of America"
+],
+"type": "string"
+},
+"type": "array"
+},
+"syntheticMonitor": {
+"$ref": "SyntheticMonitorTarget",
+"description": "Specifies a Synthetic Monitor to invoke."
+},
+"tcpCheck": {
+"$ref": "TcpCheck",
+"description": "Contains information needed to make a TCP check."
+},
+"timeout": {
+"description": "The maximum amount of time to wait for the request to complete (must be between 1 and 60 seconds). Required.",
+"format": "google-duration",
+"type": "string"
+},
+"userLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "User-supplied key/value data to be used for organizing and identifying the UptimeCheckConfig objects.The field can contain up to 64 entries. Each key and value is limited to 63 Unicode characters or 128 bytes, whichever is smaller. Labels and values can contain only lowercase letters, numerals, underscores, and dashes. Keys must begin with a letter.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"UptimeCheckIp": {
+"description": "Contains the region, location, and list of IP addresses where checkers in the location run from.",
+"id": "UptimeCheckIp",
+"properties": {
+"ipAddress": {
+"description": "The IP address from which the Uptime check originates. This is a fully specified IP address (not an IP address range). Most IP addresses, as of this publication, are in IPv4 format; however, one should not rely on the IP addresses being in IPv4 format indefinitely, and should support interpreting this field in either IPv4 or IPv6 format.",
+"type": "string"
+},
+"location": {
+"description": "A more specific location within the region that typically encodes a particular city/town/metro (and its containing state/province or country) within the broader umbrella region category.",
+"type": "string"
+},
+"region": {
+"description": "A broad region category in which the IP address is located.",
+"enum": [
+"REGION_UNSPECIFIED",
+"USA",
+"EUROPE",
+"SOUTH_AMERICA",
+"ASIA_PACIFIC",
+"USA_OREGON",
+"USA_IOWA",
+"USA_VIRGINIA"
+],
+"enumDescriptions": [
+"Default value if no region is specified. Will result in Uptime checks running from all regions.",
+"Allows checks to run from locations within the United States of America.",
+"Allows checks to run from locations within the continent of Europe.",
+"Allows checks to run from locations within the continent of South America.",
+"Allows checks to run from locations within the Asia Pacific area (ex: Singapore).",
+"Allows checks to run from locations within the western United States of America",
+"Allows checks to run from locations within the central United States of America",
+"Allows checks to run from locations within the eastern United States of America"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ValueDescriptor": {
+"description": "A descriptor for the value columns in a data point.",
+"id": "ValueDescriptor",
+"properties": {
+"key": {
+"description": "The value key.",
+"type": "string"
+},
+"metricKind": {
+"description": "The value stream kind.",
+"enum": [
+"METRIC_KIND_UNSPECIFIED",
+"GAUGE",
+"DELTA",
+"CUMULATIVE"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"An instantaneous measurement of a value.",
+"The change in a value during a time interval.",
+"A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
+],
+"type": "string"
+},
+"unit": {
+"description": "The unit in which time_series point values are reported. unit follows the UCUM format for units as seen in https://unitsofmeasure.org/ucum.html. unit is only valid if value_type is INTEGER, DOUBLE, DISTRIBUTION.",
+"type": "string"
+},
+"valueType": {
+"description": "The value type.",
+"enum": [
+"VALUE_TYPE_UNSPECIFIED",
+"BOOL",
+"INT64",
+"DOUBLE",
+"STRING",
+"DISTRIBUTION",
+"MONEY"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The value is a boolean. This value type can be used only if the metric kind is GAUGE.",
+"The value is a signed 64-bit integer.",
+"The value is a double precision floating point number.",
+"The value is a text string. This value type can be used only if the metric kind is GAUGE.",
+"The value is a Distribution.",
+"The value is money."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"VerifyNotificationChannelRequest": {
+"description": "The VerifyNotificationChannel request.",
+"id": "VerifyNotificationChannelRequest",
+"properties": {
+"code": {
+"description": "Required. The verification code that was delivered to the channel as a result of invoking the SendNotificationChannelVerificationCode API method or that was retrieved from a verified channel via GetNotificationChannelVerificationCode. For example, one might have \"G-123456\" or \"TKNZGhhd2EyN3I1MnRnMjRv\" (in general, one is only guaranteed that the code is valid UTF-8; one should not make any assumptions regarding the structure or format of the code).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"WindowsBasedSli": {
+"description": "A WindowsBasedSli defines good_service as the count of time windows for which the provided service was of good quality. Criteria for determining if service was good are embedded in the window_criterion.",
+"id": "WindowsBasedSli",
+"properties": {
+"goodBadMetricFilter": {
+"description": "A monitoring filter (https://cloud.google.com/monitoring/api/v3/filters) specifying a TimeSeries with ValueType = BOOL. The window is good if any true values appear in the window.",
+"type": "string"
+},
+"goodTotalRatioThreshold": {
+"$ref": "PerformanceThreshold",
+"description": "A window is good if its performance is high enough."
+},
+"metricMeanInRange": {
+"$ref": "MetricRange",
+"description": "A window is good if the metric's value is in a good range, averaged across returned streams."
+},
+"metricSumInRange": {
+"$ref": "MetricRange",
+"description": "A window is good if the metric's value is in a good range, summed across returned streams."
+},
+"windowPeriod": {
+"description": "Duration over which window quality is evaluated. Must be an integer fraction of a day and at least 60s.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Monitoring API",
+"version": "v3",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/mybusinessbusinesscalls.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/mybusinessbusinesscalls.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..bbcea6b39fc0a425128fde672d0e55203212e4a4
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/mybusinessbusinesscalls.v1.json
@@ -0,0 +1,398 @@
+{
+ "basePath": "",
+ "baseUrl": "https://mybusinessbusinesscalls.googleapis.com/",
+ "batchPath": "batch",
+ "canonicalName": "My Business Business Calls",
+ "description": "The My Business Business Calls API manages business calls information of a location on Google and collect insights like the number of missed calls to their location. Additional information about Business calls can be found at https://support.google.com/business/answer/9688285?p=call_history. If the Google Business Profile links to a Google Ads account and call history is turned on, calls that last longer than a specific time, and that can be attributed to an ad interaction, will show in the linked Google Ads account under the \"Calls from Ads\" conversion. If smart bidding and call conversions are used in the optimization strategy, there could be a change in ad spend. Learn more about smart bidding. To view and perform actions on a location's calls, you need to be a `OWNER`, `CO_OWNER` or `MANAGER` of the location. Note - If you have a quota of 0 after enabling the API, please request for GBP API access.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://developers.google.com/my-business/",
+ "fullyEncodeReservedExpansion": true,
+ "icons": {
+ "x16": "http://www.google.com/images/icons/product/search-16.gif",
+ "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "id": "mybusinessbusinesscalls:v1",
+ "kind": "discovery#restDescription",
+ "mtlsRootUrl": "https://mybusinessbusinesscalls.mtls.googleapis.com/",
+ "name": "mybusinessbusinesscalls",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "$.xgafv": {
+ "description": "V1 error format.",
+ "enum": [
+ "1",
+ "2"
+ ],
+ "enumDescriptions": [
+ "v1 error format",
+ "v2 error format"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "access_token": {
+ "description": "OAuth access token.",
+ "location": "query",
+ "type": "string"
+ },
+ "alt": {
+ "default": "json",
+ "description": "Data format for response.",
+ "enum": [
+ "json",
+ "media",
+ "proto"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json",
+ "Media download with context-dependent Content-Type",
+ "Responses with Content-Type of application/x-protobuf"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "callback": {
+ "description": "JSONP",
+ "location": "query",
+ "type": "string"
+ },
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
+ "type": "string"
+ },
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
+ "type": "string"
+ },
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
+ "type": "string"
+ },
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+ "location": "query",
+ "type": "string"
+ },
+ "uploadType": {
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ },
+ "upload_protocol": {
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "protocol": "rest",
+ "resources": {
+ "locations": {
+ "methods": {
+ "getBusinesscallssettings": {
+ "description": "Returns the Business calls settings resource for the given location.",
+ "flatPath": "v1/locations/{locationsId}/businesscallssettings",
+ "httpMethod": "GET",
+ "id": "mybusinessbusinesscalls.locations.getBusinesscallssettings",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "name": {
+ "description": "Required. The BusinessCallsSettings to get. The `name` field is used to identify the business call settings to get. Format: locations/{location_id}/businesscallssettings.",
+ "location": "path",
+ "pattern": "^locations/[^/]+/businesscallssettings$",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "v1/{+name}",
+ "response": {
+ "$ref": "BusinessCallsSettings"
+ }
+ },
+ "updateBusinesscallssettings": {
+ "description": "Updates the Business call settings for the specified location.",
+ "flatPath": "v1/locations/{locationsId}/businesscallssettings",
+ "httpMethod": "PATCH",
+ "id": "mybusinessbusinesscalls.locations.updateBusinesscallssettings",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "name": {
+ "description": "Required. The resource name of the calls settings. Format: locations/{location}/businesscallssettings",
+ "location": "path",
+ "pattern": "^locations/[^/]+/businesscallssettings$",
+ "required": true,
+ "type": "string"
+ },
+ "updateMask": {
+ "description": "Required. The list of fields to update.",
+ "format": "google-fieldmask",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "v1/{+name}",
+ "request": {
+ "$ref": "BusinessCallsSettings"
+ },
+ "response": {
+ "$ref": "BusinessCallsSettings"
+ }
+ }
+ },
+ "resources": {
+ "businesscallsinsights": {
+ "methods": {
+ "list": {
+ "description": "Returns insights for Business calls for a location.",
+ "flatPath": "v1/locations/{locationsId}/businesscallsinsights",
+ "httpMethod": "GET",
+ "id": "mybusinessbusinesscalls.locations.businesscallsinsights.list",
+ "parameterOrder": [
+ "parent"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Optional. A filter constraining the calls insights to return. The response includes only entries that match the filter. If the MetricType is not provided, AGGREGATE_COUNT is returned. If no end_date is provided, the last date for which data is available is used. If no start_date is provided, we will default to the first date for which data is available, which is currently 6 months. If start_date is before the date when data is available, data is returned starting from the date when it is available. At this time we support following filters. 1. start_date=\"DATE\" where date is in YYYY-MM-DD format. 2. end_date=\"DATE\" where date is in YYYY-MM-DD format. 3. metric_type=XYZ where XYZ is a valid MetricType. 4. Conjunctions(AND) of all of the above. e.g., \"start_date=2021-08-01 AND end_date=2021-08-10 AND metric_type=AGGREGATE_COUNT\" The AGGREGATE_COUNT metric_type ignores the DD part of the date.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageSize": {
+ "description": "Optional. The maximum number of BusinessCallsInsights to return. If unspecified, at most 20 will be returned. Some of the metric_types(e.g, AGGREGATE_COUNT) returns a single page. For these metrics, the page_size is ignored.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "pageToken": {
+ "description": "Optional. A page token, received from a previous `ListBusinessCallsInsights` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListBusinessCallsInsights` must match the call that provided the page token. Some of the metric_types (e.g, AGGREGATE_COUNT) returns a single page. For these metrics, the pake_token is ignored.",
+ "location": "query",
+ "type": "string"
+ },
+ "parent": {
+ "description": "Required. The parent location to fetch calls insights for. Format: locations/{location_id}",
+ "location": "path",
+ "pattern": "^locations/[^/]+$",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "v1/{+parent}/businesscallsinsights",
+ "response": {
+ "$ref": "ListBusinessCallsInsightsResponse"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "revision": "20230603",
+ "rootUrl": "https://mybusinessbusinesscalls.googleapis.com/",
+ "schemas": {
+ "AggregateMetrics": {
+ "description": "Metrics aggregated over the input time range.",
+ "id": "AggregateMetrics",
+ "properties": {
+ "answeredCallsCount": {
+ "description": "Total count of answered calls.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "endDate": {
+ "$ref": "Date",
+ "description": "End date for this metric."
+ },
+ "hourlyMetrics": {
+ "description": "A list of metrics by hour of day.",
+ "items": {
+ "$ref": "HourlyMetrics"
+ },
+ "type": "array"
+ },
+ "missedCallsCount": {
+ "description": "Total count of missed calls.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "startDate": {
+ "$ref": "Date",
+ "description": "Date for this metric. If metric is monthly, only year and month are used."
+ },
+ "weekdayMetrics": {
+ "description": "A list of metrics by day of week.",
+ "items": {
+ "$ref": "WeekDayMetrics"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "BusinessCallsInsights": {
+ "description": "Insights for calls made to a location.",
+ "id": "BusinessCallsInsights",
+ "properties": {
+ "aggregateMetrics": {
+ "$ref": "AggregateMetrics",
+ "description": "Metric for the time range based on start_date and end_date."
+ },
+ "metricType": {
+ "description": "The metric for which the value applies.",
+ "enum": [
+ "METRIC_TYPE_UNSPECIFIED",
+ "AGGREGATE_COUNT"
+ ],
+ "enumDescriptions": [
+ "Type of metric is unspecified.",
+ "The metrics provided are counts aggregated over the input time_range."
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Required. The resource name of the calls insights. Format: locations/{location}/businesscallsinsights",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BusinessCallsSettings": {
+ "description": "Business calls settings for a location.",
+ "id": "BusinessCallsSettings",
+ "properties": {
+ "callsState": {
+ "description": "Required. The state of this location's enrollment in Business calls.",
+ "enum": [
+ "CALLS_STATE_UNSPECIFIED",
+ "ENABLED",
+ "DISABLED"
+ ],
+ "enumDescriptions": [
+ "Unspecified.",
+ "Business calls is enabled for the location.",
+ "Business calls is disabled for the location."
+ ],
+ "type": "string"
+ },
+ "consentTime": {
+ "description": "Input only. Time when the end user provided consent to the API user to enable business calls.",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "name": {
+ "description": "Required. The resource name of the calls settings. Format: locations/{location}/businesscallssettings",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Date": {
+ "description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+ "id": "Date",
+ "properties": {
+ "day": {
+ "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "month": {
+ "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "year": {
+ "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HourlyMetrics": {
+ "description": "Metrics for an hour.",
+ "id": "HourlyMetrics",
+ "properties": {
+ "hour": {
+ "description": "Hour of the day. Allowed values are 0-23.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "missedCallsCount": {
+ "description": "Total count of missed calls for this hour.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "ListBusinessCallsInsightsResponse": {
+ "description": "Response message for ListBusinessCallsInsights.",
+ "id": "ListBusinessCallsInsightsResponse",
+ "properties": {
+ "businessCallsInsights": {
+ "description": "A collection of business calls insights for the location.",
+ "items": {
+ "$ref": "BusinessCallsInsights"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages. Some of the metric_types (e.g, AGGREGATE_COUNT) returns a single page. For these metrics, the next_page_token will be empty.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "WeekDayMetrics": {
+ "description": "Metrics for a week day.",
+ "id": "WeekDayMetrics",
+ "properties": {
+ "day": {
+ "description": "Day of the week. Allowed values are Sunday - Saturday.",
+ "enum": [
+ "DAY_OF_WEEK_UNSPECIFIED",
+ "MONDAY",
+ "TUESDAY",
+ "WEDNESDAY",
+ "THURSDAY",
+ "FRIDAY",
+ "SATURDAY",
+ "SUNDAY"
+ ],
+ "enumDescriptions": [
+ "The day of the week is unspecified.",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday",
+ "Sunday"
+ ],
+ "type": "string"
+ },
+ "missedCallsCount": {
+ "description": "Total count of missed calls for this hour.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "servicePath": "",
+ "title": "My Business Business Calls API",
+ "version": "v1",
+ "version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/netapp.v1beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/netapp.v1beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..fe27bc8f8f316f5276a38bc2609a92a731ea41b4
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/netapp.v1beta1.json
@@ -0,0 +1,4220 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://netapp.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "NetApp Files",
+"description": "Google Cloud NetApp Volumes is a fully-managed, cloud-based data storage service that provides advanced data management capabilities and highly scalable performance with global availability.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/netapp/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "netapp:v1beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://netapp.mtls.googleapis.com/",
+"name": "netapp",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1beta1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"activeDirectories": {
+"methods": {
+"create": {
+"description": "CreateActiveDirectory Creates the active directory specified in the request.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/activeDirectories",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.activeDirectories.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"activeDirectoryId": {
+"description": "Required. ID of the active directory to create. Must be unique within the parent resource. Must contain only letters, numbers and hyphen, with the first character a letter , the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Value for parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/activeDirectories",
+"request": {
+"$ref": "ActiveDirectory"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Delete the active directory specified in the request.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/activeDirectories/{activeDirectoriesId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.activeDirectories.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the active directory.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/activeDirectories/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Describes a specified active directory.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/activeDirectories/{activeDirectoriesId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.activeDirectories.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the active directory.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/activeDirectories/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "ActiveDirectory"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists active directories.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/activeDirectories",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.activeDirectories.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filtering results",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Hint for how to order the results",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. Server may return fewer items than requested. If unspecified, the server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent value for ListActiveDirectoriesRequest",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/activeDirectories",
+"response": {
+"$ref": "ListActiveDirectoriesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update the parameters of an active directories.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/activeDirectories/{activeDirectoriesId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.activeDirectories.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the active directory. Format: `projects/{project_number}/locations/{location_id}/activeDirectories/{active_directory_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/activeDirectories/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask is used to specify the fields to be overwritten in the Active Directory resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "ActiveDirectory"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"backupPolicies": {
+"methods": {
+"create": {
+"description": "Creates new backup policy",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupPolicies",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.backupPolicies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"backupPolicyId": {
+"description": "Required. The ID to use for the backup policy. The ID must be unique within the specified location. Must contain only letters, numbers and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The location to create the backup policies of, in the format `projects/{project_id}/locations/{location}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/backupPolicies",
+"request": {
+"$ref": "BackupPolicy"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Warning! This operation will permanently delete the backup policy.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupPolicies/{backupPoliciesId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.backupPolicies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The backup policy resource name, in the format `projects/{project_id}/locations/{location}/backupPolicies/{backup_policy_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns the description of the specified backup policy by backup_policy_id.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupPolicies/{backupPoliciesId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.backupPolicies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The backupPolicy resource name, in the format `projects/{project_id}/locations/{location}/backupPolicies/{backup_policy_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "BackupPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns list of all available backup policies.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupPolicies",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.backupPolicies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filtering results",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Hint for how to order the results",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. Server may return fewer items than requested. If unspecified, the server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent value for ListBackupPoliciesRequest",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/backupPolicies",
+"response": {
+"$ref": "ListBackupPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates settings of a specific backup policy.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupPolicies/{backupPoliciesId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.backupPolicies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the backup policy. Format: `projects/{project_id}/locations/{location}/backupPolicies/{backup_policy_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupPolicies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask is used to specify the fields to be overwritten in the Backup Policy resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "BackupPolicy"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"backupVaults": {
+"methods": {
+"create": {
+"description": "Creates new backup vault",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.backupVaults.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"backupVaultId": {
+"description": "Required. The ID to use for the backupVault. The ID must be unique within the specified location. Must contain only letters, numbers and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The location to create the backup vaults, in the format `projects/{project_id}/locations/{location}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/backupVaults",
+"request": {
+"$ref": "BackupVault"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Warning! This operation will permanently delete the backup vault.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults/{backupVaultsId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.backupVaults.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The backupVault resource name, in the format `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupVaults/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns the description of the specified backup vault",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults/{backupVaultsId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.backupVaults.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The backupVault resource name, in the format `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupVaults/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "BackupVault"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns list of all available backup vaults.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.backupVaults.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value to use if there are additional results to retrieve for this list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The location for which to retrieve backupVault information, in the format `projects/{project_id}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/backupVaults",
+"response": {
+"$ref": "ListBackupVaultsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the settings of a specific backup vault.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults/{backupVaultsId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.backupVaults.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the backup vault. Format: `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupVaults/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask is used to specify the fields to be overwritten in the Backup resource to be updated. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "BackupVault"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"backups": {
+"methods": {
+"create": {
+"description": "Creates a backup from the volume specified in the request The backup can be created from the given snapshot if specified in the request. If no snapshot specified, there'll be a new snapshot taken to initiate the backup creation.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults/{backupVaultsId}/backups",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.backupVaults.backups.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"backupId": {
+"description": "Required. The ID to use for the backup. The ID must be unique within the specified backupVault. Must contain only letters, numbers and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The NetApp backupVault to create the backups of, in the format `projects/*/locations/*/backupVaults/{backup_vault_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupVaults/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/backups",
+"request": {
+"$ref": "Backup"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Warning! This operation will permanently delete the backup.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults/{backupVaultsId}/backups/{backupsId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.backupVaults.backups.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The backup resource name, in the format `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}/backups/{backup_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupVaults/[^/]+/backups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns the description of the specified backup",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults/{backupVaultsId}/backups/{backupsId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.backupVaults.backups.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The backup resource name, in the format `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}/backups/{backup_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupVaults/[^/]+/backups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Backup"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns descriptions of all backups for a backupVault.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults/{backupVaultsId}/backups",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.backupVaults.backups.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter. If specified, backups will be returned based on the attribute name that matches the filter expression. If empty, then no backups are filtered out. See https://google.aip.dev/160",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return. The service may return fewer than this value. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value to use if there are additional results to retrieve for this list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The backupVault for which to retrieve backup information, in the format `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}`. To retrieve backup information for all locations, use \"-\" for the `{location}` value. To retrieve backup information for all backupVaults, use \"-\" for the `{backup_vault_id}` value. To retrieve backup information for a volume, use \"-\" for the `{backup_vault_id}` value and specify volume full name with the filter.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupVaults/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/backups",
+"response": {
+"$ref": "ListBackupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Update backup with full spec.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/backupVaults/{backupVaultsId}/backups/{backupsId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.backupVaults.backups.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the backup. Format: `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}/backups/{backup_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/backupVaults/[^/]+/backups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask is used to specify the fields to be overwritten in the Backup resource to be updated. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Backup"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"kmsConfigs": {
+"methods": {
+"create": {
+"description": "Creates a new KMS config.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/kmsConfigs",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.kmsConfigs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"kmsConfigId": {
+"description": "Required. Id of the requesting KmsConfig. Must be unique within the parent resource. Must contain only letters, numbers and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Value for parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/kmsConfigs",
+"request": {
+"$ref": "KmsConfig"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Warning! This operation will permanently delete the Kms config.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/kmsConfigs/{kmsConfigsId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.kmsConfigs.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the KmsConfig.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/kmsConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"encrypt": {
+"description": "Encrypt the existing volumes without CMEK encryption with the desired the KMS config for the whole region.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/kmsConfigs/{kmsConfigsId}:encrypt",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.kmsConfigs.encrypt",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the KmsConfig.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/kmsConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:encrypt",
+"request": {
+"$ref": "EncryptVolumesRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns the description of the specified KMS config by kms_config_id.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/kmsConfigs/{kmsConfigsId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.kmsConfigs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the KmsConfig",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/kmsConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "KmsConfig"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns descriptions of all KMS configs owned by the caller.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/kmsConfigs",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.kmsConfigs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value to use if there are additional results to retrieve for this list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent value",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/kmsConfigs",
+"response": {
+"$ref": "ListKmsConfigsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the Kms config properties with the full spec",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/kmsConfigs/{kmsConfigsId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.kmsConfigs.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the KmsConfig.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/kmsConfigs/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask is used to specify the fields to be overwritten in the KmsConfig resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "KmsConfig"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"verify": {
+"description": "Verifies KMS config reachability.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/kmsConfigs/{kmsConfigsId}:verify",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.kmsConfigs.verify",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the KMS Config to be verified.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/kmsConfigs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:verify",
+"request": {
+"$ref": "VerifyKmsConfigRequest"
+},
+"response": {
+"$ref": "VerifyKmsConfigResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"storagePools": {
+"methods": {
+"create": {
+"description": "Creates a new storage pool.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/storagePools",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.storagePools.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Value for parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"storagePoolId": {
+"description": "Required. Id of the requesting storage pool. Must be unique within the parent resource. Must contain only letters, numbers and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/storagePools",
+"request": {
+"$ref": "StoragePool"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Warning! This operation will permanently delete the storage pool.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/storagePools/{storagePoolsId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.storagePools.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the storage pool",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/storagePools/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns the description of the specified storage pool by poolId.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/storagePools/{storagePoolsId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.storagePools.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the storage pool",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/storagePools/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "StoragePool"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns descriptions of all storage pools owned by the caller.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/storagePools",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.storagePools.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value to use if there are additional results to retrieve for this list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent value",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/storagePools",
+"response": {
+"$ref": "ListStoragePoolsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the storage pool properties with the full spec",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/storagePools/{storagePoolsId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.storagePools.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the storage pool",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/storagePools/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask is used to specify the fields to be overwritten in the StoragePool resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "StoragePool"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"switch": {
+"description": "This operation will switch the active/replica zone for a regional storagePool.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/storagePools/{storagePoolsId}:switch",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.storagePools.switch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the storage pool",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/storagePools/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:switch",
+"request": {
+"$ref": "SwitchActiveReplicaZoneRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"validateDirectoryService": {
+"description": "ValidateDirectoryService does a connectivity check for a directory service policy attached to the storage pool.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/storagePools/{storagePoolsId}:validateDirectoryService",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.storagePools.validateDirectoryService",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the storage pool",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/storagePools/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:validateDirectoryService",
+"request": {
+"$ref": "ValidateDirectoryServiceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"volumes": {
+"methods": {
+"create": {
+"description": "Creates a new Volume in a given project and location.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Value for parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"volumeId": {
+"description": "Required. Id of the requesting volume. Must be unique within the parent resource. Must contain only letters, numbers and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/volumes",
+"request": {
+"$ref": "Volume"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.volumes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "If this field is set as true, CCFE will not block the volume resource deletion even if it has any snapshots resource. (Otherwise, the request will only work if the volume has no snapshots.)",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. Name of the volume",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.volumes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the volume",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Volume"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Volumes in a given project.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.volumes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Filtering results",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Hint for how to order the results",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested page size. Server may return fewer items than requested. If unspecified, the server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. Parent value for ListVolumesRequest",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/volumes",
+"response": {
+"$ref": "ListVolumesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.volumes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the volume",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Field mask is used to specify the fields to be overwritten in the Volume resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Volume"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"revert": {
+"description": "Revert an existing volume to a specified snapshot. Warning! This operation will permanently revert all changes made after the snapshot was created.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}:revert",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.revert",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the volume, in the format of projects/{project_id}/locations/{location}/volumes/{volume_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:revert",
+"request": {
+"$ref": "RevertVolumeRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"replications": {
+"methods": {
+"create": {
+"description": "Create a new replication for a volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.replications.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The NetApp volume to create the replications of, in the format `projects/{project_id}/locations/{location}/volumes/{volume_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"replicationId": {
+"description": "Required. ID of the replication to create. Must be unique within the parent resource. Must contain only letters, numbers and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/replications",
+"request": {
+"$ref": "Replication"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a replication.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications/{replicationsId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.volumes.replications.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The replication resource name, in the format `projects/*/locations/*/volumes/*/replications/{replication_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/replications/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"establishPeering": {
+"description": "Establish replication peering.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications/{replicationsId}:establishPeering",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.replications.establishPeering",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the replication, in the format of projects/{project_id}/locations/{location}/volumes/{volume_id}/replications/{replication_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/replications/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:establishPeering",
+"request": {
+"$ref": "EstablishPeeringRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Describe a replication for a volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications/{replicationsId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.volumes.replications.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The replication resource name, in the format `projects/{project_id}/locations/{location}/volumes/{volume_id}/replications/{replication_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/replications/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Replication"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns descriptions of all replications for a volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.volumes.replications.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value to use if there are additional results to retrieve for this list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The volume for which to retrieve replication information, in the format `projects/{project_id}/locations/{location}/volumes/{volume_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/replications",
+"response": {
+"$ref": "ListReplicationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the settings of a specific replication.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications/{replicationsId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.volumes.replications.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the Replication. Format: `projects/{project_id}/locations/{location}/volumes/{volume_id}/replications/{replication_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/replications/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Mask of fields to update. At least one path must be supplied in this field.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Replication"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"resume": {
+"description": "Resume Cross Region Replication.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications/{replicationsId}:resume",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.replications.resume",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the replication, in the format of projects/{project_id}/locations/{location}/volumes/{volume_id}/replications/{replication_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/replications/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:resume",
+"request": {
+"$ref": "ResumeReplicationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"reverseDirection": {
+"description": "Reverses direction of replication. Source becomes destination and destination becomes source.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications/{replicationsId}:reverseDirection",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.replications.reverseDirection",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the replication, in the format of projects/{project_id}/locations/{location}/volumes/{volume_id}/replications/{replication_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/replications/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:reverseDirection",
+"request": {
+"$ref": "ReverseReplicationDirectionRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"stop": {
+"description": "Stop Cross Region Replication.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications/{replicationsId}:stop",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.replications.stop",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the replication, in the format of projects/{project_id}/locations/{location}/volumes/{volume_id}/replications/{replication_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/replications/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:stop",
+"request": {
+"$ref": "StopReplicationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"sync": {
+"description": "Syncs the replication. This will invoke one time volume data transfer from source to destination.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/replications/{replicationsId}:sync",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.replications.sync",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name of the replication, in the format of projects/{project_id}/locations/{location}/volumes/{volume_id}/replications/{replication_id}.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/replications/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}:sync",
+"request": {
+"$ref": "SyncReplicationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"snapshots": {
+"methods": {
+"create": {
+"description": "Create a new snapshot for a volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots",
+"httpMethod": "POST",
+"id": "netapp.projects.locations.volumes.snapshots.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The NetApp volume to create the snapshots of, in the format `projects/{project_id}/locations/{location}/volumes/{volume_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"snapshotId": {
+"description": "Required. ID of the snapshot to create. Must be unique within the parent resource. Must contain only letters, numbers and hyphen, with the first character a letter, the last a letter or a number, and a 63 character maximum.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/snapshots",
+"request": {
+"$ref": "Snapshot"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a snapshot.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots/{snapshotsId}",
+"httpMethod": "DELETE",
+"id": "netapp.projects.locations.volumes.snapshots.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The snapshot resource name, in the format `projects/*/locations/*/volumes/*/snapshots/{snapshot_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/snapshots/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Describe a snapshot for a volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots/{snapshotsId}",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.volumes.snapshots.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The snapshot resource name, in the format `projects/{project_id}/locations/{location}/volumes/{volume_id}/snapshots/{snapshot_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/snapshots/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"response": {
+"$ref": "Snapshot"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns descriptions of all snapshots for a volume.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots",
+"httpMethod": "GET",
+"id": "netapp.projects.locations.volumes.snapshots.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results. Supported values are \"name\", \"name desc\" or \"\" (unsorted).",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value to use if there are additional results to retrieve for this list request.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The volume for which to retrieve snapshot information, in the format `projects/{project_id}/locations/{location}/volumes/{volume_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta1/{+parent}/snapshots",
+"response": {
+"$ref": "ListSnapshotsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the settings of a specific snapshot.",
+"flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/volumes/{volumesId}/snapshots/{snapshotsId}",
+"httpMethod": "PATCH",
+"id": "netapp.projects.locations.volumes.snapshots.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the snapshot. Format: `projects/{project_id}/locations/{location}/volumes/{volume_id}/snapshots/{snapshot_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/volumes/[^/]+/snapshots/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Mask of fields to update. At least one path must be supplied in this field.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta1/{+name}",
+"request": {
+"$ref": "Snapshot"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241209",
+"rootUrl": "https://netapp.googleapis.com/",
+"schemas": {
+"ActiveDirectory": {
+"description": "ActiveDirectory is the public representation of the active directory config.",
+"id": "ActiveDirectory",
+"properties": {
+"administrators": {
+"description": "Optional. Users to be added to the Built-in Admininstrators group.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"aesEncryption": {
+"description": "If enabled, AES encryption will be enabled for SMB communication.",
+"type": "boolean"
+},
+"backupOperators": {
+"description": "Optional. Users to be added to the Built-in Backup Operator active directory group.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Output only. Create time of the active directory.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Description of the active directory.",
+"type": "string"
+},
+"dns": {
+"description": "Required. Comma separated list of DNS server IP addresses for the Active Directory domain.",
+"type": "string"
+},
+"domain": {
+"description": "Required. Name of the Active Directory domain",
+"type": "string"
+},
+"encryptDcConnections": {
+"description": "If enabled, traffic between the SMB server to Domain Controller (DC) will be encrypted.",
+"type": "boolean"
+},
+"kdcHostname": {
+"description": "Name of the active directory machine. This optional parameter is used only while creating kerberos volume",
+"type": "string"
+},
+"kdcIp": {
+"description": "KDC server IP address for the active directory machine.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels for the active directory.",
+"type": "object"
+},
+"ldapSigning": {
+"description": "Specifies whether or not the LDAP traffic needs to be signed.",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. The resource name of the active directory. Format: `projects/{project_number}/locations/{location_id}/activeDirectories/{active_directory_id}`.",
+"type": "string"
+},
+"netBiosPrefix": {
+"description": "Required. NetBIOSPrefix is used as a prefix for SMB server name.",
+"type": "string"
+},
+"nfsUsersWithLdap": {
+"description": "If enabled, will allow access to local users and LDAP users. If access is needed for only LDAP users, it has to be disabled.",
+"type": "boolean"
+},
+"organizationalUnit": {
+"description": "The Organizational Unit (OU) within the Windows Active Directory the user belongs to.",
+"type": "string"
+},
+"password": {
+"description": "Required. Password of the Active Directory domain administrator.",
+"type": "string"
+},
+"securityOperators": {
+"description": "Optional. Domain users to be given the SeSecurityPrivilege.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"site": {
+"description": "The Active Directory site the service will limit Domain Controller discovery too.",
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of the AD.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"UPDATING",
+"IN_USE",
+"DELETING",
+"ERROR",
+"DIAGNOSING"
+],
+"enumDescriptions": [
+"Unspecified Active Directory State",
+"Active Directory State is Creating",
+"Active Directory State is Ready",
+"Active Directory State is Updating",
+"Active Directory State is In use",
+"Active Directory State is Deleting",
+"Active Directory State is Error",
+"Active Directory State is Diagnosing."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateDetails": {
+"description": "Output only. The state details of the Active Directory.",
+"readOnly": true,
+"type": "string"
+},
+"username": {
+"description": "Required. Username of the Active Directory domain administrator.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Backup": {
+"description": "A NetApp Backup.",
+"id": "Backup",
+"properties": {
+"backupType": {
+"description": "Output only. Type of backup, manually created or created by a backup policy.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"MANUAL",
+"SCHEDULED"
+],
+"enumDescriptions": [
+"Unspecified backup type.",
+"Manual backup type.",
+"Scheduled backup type."
+],
+"readOnly": true,
+"type": "string"
+},
+"chainStorageBytes": {
+"description": "Output only. Total size of all backups in a chain in bytes = baseline backup size + sum(incremental backup size)",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time when the backup was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "A description of the backup with 2048 characters or less. Requests with longer descriptions will be rejected.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Resource labels to represent user provided metadata.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. The resource name of the backup. Format: `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}/backups/{backup_id}`.",
+"type": "string"
+},
+"satisfiesPzi": {
+"description": "Output only. Reserved for future use",
+"readOnly": true,
+"type": "boolean"
+},
+"satisfiesPzs": {
+"description": "Output only. Reserved for future use",
+"readOnly": true,
+"type": "boolean"
+},
+"sourceSnapshot": {
+"description": "If specified, backup will be created from the given snapshot. If not specified, there will be a new snapshot taken to initiate the backup creation. Format: `projects/{project_id}/locations/{location}/volumes/{volume_id}/snapshots/{snapshot_id}`",
+"type": "string"
+},
+"sourceVolume": {
+"description": "Volume full name of this backup belongs to. Format: `projects/{projects_id}/locations/{location}/volumes/{volume_id}`",
+"type": "string"
+},
+"state": {
+"description": "Output only. The backup state.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"UPLOADING",
+"READY",
+"DELETING",
+"ERROR",
+"UPDATING"
+],
+"enumDescriptions": [
+"State not set.",
+"Backup is being created. While in this state, the snapshot for the backup point-in-time may not have been created yet, and so the point-in-time may not have been fixed.",
+"Backup is being uploaded. While in this state, none of the writes to the volume will be included in the backup.",
+"Backup is available for use.",
+"Backup is being deleted.",
+"Backup is not valid and cannot be used for creating new volumes or restoring existing volumes.",
+"Backup is being updated."
+],
+"readOnly": true,
+"type": "string"
+},
+"volumeUsageBytes": {
+"description": "Output only. Size of the file system when the backup was created. When creating a new volume from the backup, the volume capacity will have to be at least as big.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"BackupConfig": {
+"description": "BackupConfig contains backup related config on a volume.",
+"id": "BackupConfig",
+"properties": {
+"backupChainBytes": {
+"description": "Output only. Total size of all backups in a chain in bytes = baseline backup size + sum(incremental backup size).",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"backupPolicies": {
+"description": "Optional. When specified, schedule backups will be created based on the policy configuration.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"backupVault": {
+"description": "Optional. Name of backup vault. Format: projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}",
+"type": "string"
+},
+"scheduledBackupEnabled": {
+"description": "Optional. When set to true, scheduled backup is enabled on the volume. This field should be nil when there's no backup policy attached.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"BackupPolicy": {
+"description": "Backup Policy.",
+"id": "BackupPolicy",
+"properties": {
+"assignedVolumeCount": {
+"description": "Output only. The total number of volumes assigned by this backup policy.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"createTime": {
+"description": "Output only. The time when the backup policy was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"dailyBackupLimit": {
+"description": "Number of daily backups to keep. Note that the minimum daily backup limit is 2.",
+"format": "int32",
+"type": "integer"
+},
+"description": {
+"description": "Description of the backup policy.",
+"type": "string"
+},
+"enabled": {
+"description": "If enabled, make backups automatically according to the schedules. This will be applied to all volumes that have this policy attached and enforced on volume level. If not specified, default is true.",
+"type": "boolean"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Resource labels to represent user provided metadata.",
+"type": "object"
+},
+"monthlyBackupLimit": {
+"description": "Number of monthly backups to keep. Note that the sum of daily, weekly and monthly backups should be greater than 1.",
+"format": "int32",
+"type": "integer"
+},
+"name": {
+"description": "Identifier. The resource name of the backup policy. Format: `projects/{project_id}/locations/{location}/backupPolicies/{backup_policy_id}`.",
+"type": "string"
+},
+"state": {
+"description": "Output only. The backup policy state.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"DELETING",
+"ERROR",
+"UPDATING"
+],
+"enumDescriptions": [
+"State not set.",
+"BackupPolicy is being created.",
+"BackupPolicy is available for use.",
+"BackupPolicy is being deleted.",
+"BackupPolicy is not valid and cannot be used.",
+"BackupPolicy is being updated."
+],
+"readOnly": true,
+"type": "string"
+},
+"weeklyBackupLimit": {
+"description": "Number of weekly backups to keep. Note that the sum of daily, weekly and monthly backups should be greater than 1.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"BackupVault": {
+"description": "A NetApp BackupVault.",
+"id": "BackupVault",
+"properties": {
+"createTime": {
+"description": "Output only. Create time of the backup vault.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Description of the backup vault.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Resource labels to represent user provided metadata.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. The resource name of the backup vault. Format: `projects/{project_id}/locations/{location}/backupVaults/{backup_vault_id}`.",
+"type": "string"
+},
+"state": {
+"description": "Output only. The backup vault state.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"DELETING",
+"ERROR",
+"UPDATING"
+],
+"enumDescriptions": [
+"State not set.",
+"BackupVault is being created.",
+"BackupVault is available for use.",
+"BackupVault is being deleted.",
+"BackupVault is not valid and cannot be used.",
+"BackupVault is being updated."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"DailySchedule": {
+"description": "Make a snapshot every day e.g. at 04:00, 05:20, 23:50",
+"id": "DailySchedule",
+"properties": {
+"hour": {
+"description": "Set the hour to start the snapshot (0-23), defaults to midnight (0).",
+"format": "double",
+"type": "number"
+},
+"minute": {
+"description": "Set the minute of the hour to start the snapshot (0-59), defaults to the top of the hour (0).",
+"format": "double",
+"type": "number"
+},
+"snapshotsToKeep": {
+"description": "The maximum number of Snapshots to keep for the hourly schedule",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"DestinationVolumeParameters": {
+"description": "DestinationVolumeParameters specify input parameters used for creating destination volume.",
+"id": "DestinationVolumeParameters",
+"properties": {
+"description": {
+"description": "Description for the destination volume.",
+"type": "string"
+},
+"shareName": {
+"description": "Destination volume's share name. If not specified, source volume's share name will be used.",
+"type": "string"
+},
+"storagePool": {
+"description": "Required. Existing destination StoragePool name.",
+"type": "string"
+},
+"tieringPolicy": {
+"$ref": "TieringPolicy",
+"description": "Optional. Tiering policy for the volume."
+},
+"volumeId": {
+"description": "Desired destination volume resource id. If not specified, source volume's resource id will be used. This value must start with a lowercase letter followed by up to 62 lowercase letters, numbers, or hyphens, and cannot end with a hyphen.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EncryptVolumesRequest": {
+"description": "EncryptVolumesRequest specifies the KMS config to encrypt existing volumes.",
+"id": "EncryptVolumesRequest",
+"properties": {},
+"type": "object"
+},
+"EstablishPeeringRequest": {
+"description": "EstablishPeeringRequest establishes cluster and svm peerings between the source and the destination replications.",
+"id": "EstablishPeeringRequest",
+"properties": {
+"peerClusterName": {
+"description": "Required. Name of the user's local source cluster to be peered with the destination cluster.",
+"type": "string"
+},
+"peerIpAddresses": {
+"description": "Optional. List of IPv4 ip addresses to be used for peering.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"peerSvmName": {
+"description": "Required. Name of the user's local source vserver svm to be peered with the destination vserver svm.",
+"type": "string"
+},
+"peerVolumeName": {
+"description": "Required. Name of the user's local source volume to be peered with the destination volume.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExportPolicy": {
+"description": "Defines the export policy for the volume.",
+"id": "ExportPolicy",
+"properties": {
+"rules": {
+"description": "Required. List of export policy rules",
+"items": {
+"$ref": "SimpleExportPolicyRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"HourlySchedule": {
+"description": "Make a snapshot every hour e.g. at 04:00, 05:00, 06:00.",
+"id": "HourlySchedule",
+"properties": {
+"minute": {
+"description": "Set the minute of the hour to start the snapshot (0-59), defaults to the top of the hour (0).",
+"format": "double",
+"type": "number"
+},
+"snapshotsToKeep": {
+"description": "The maximum number of Snapshots to keep for the hourly schedule",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"HybridPeeringDetails": {
+"description": "HybridPeeringDetails contains details about the hybrid peering.",
+"id": "HybridPeeringDetails",
+"properties": {
+"command": {
+"description": "Optional. Copy-paste-able commands to be used on user's ONTAP to accept peering requests.",
+"type": "string"
+},
+"commandExpiryTime": {
+"description": "Optional. Expiration time for the peering command to be executed on user's ONTAP.",
+"format": "google-datetime",
+"type": "string"
+},
+"passphrase": {
+"description": "Optional. Temporary passphrase generated to accept cluster peering command.",
+"type": "string"
+},
+"subnetIp": {
+"description": "Optional. IP address of the subnet.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HybridReplicationParameters": {
+"description": "The Hybrid Replication parameters for the volume.",
+"id": "HybridReplicationParameters",
+"properties": {
+"clusterLocation": {
+"description": "Optional. Name of source cluster location associated with the Hybrid replication. This is a free-form field for the display purpose only.",
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of the replication.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Labels to be added to the replication as the key value pairs.",
+"type": "object"
+},
+"peerClusterName": {
+"description": "Required. Name of the user's local source cluster to be peered with the destination cluster.",
+"type": "string"
+},
+"peerIpAddresses": {
+"description": "Required. List of node ip addresses to be peered with.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"peerSvmName": {
+"description": "Required. Name of the user's local source vserver svm to be peered with the destination vserver svm.",
+"type": "string"
+},
+"peerVolumeName": {
+"description": "Required. Name of the user's local source volume to be peered with the destination volume.",
+"type": "string"
+},
+"replication": {
+"description": "Required. Desired name for the replication of this volume.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"KmsConfig": {
+"description": "KmsConfig is the customer managed encryption key(CMEK) configuration.",
+"id": "KmsConfig",
+"properties": {
+"createTime": {
+"description": "Output only. Create time of the KmsConfig.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"cryptoKeyName": {
+"description": "Required. Customer managed crypto key resource full name. Format: projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key}.",
+"type": "string"
+},
+"description": {
+"description": "Description of the KmsConfig.",
+"type": "string"
+},
+"instructions": {
+"description": "Output only. Instructions to provide the access to the customer provided encryption key.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels as key value pairs",
+"type": "object"
+},
+"name": {
+"description": "Identifier. Name of the KmsConfig.",
+"type": "string"
+},
+"serviceAccount": {
+"description": "Output only. The Service account which will have access to the customer provided encryption key.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the KmsConfig.",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"CREATING",
+"DELETING",
+"UPDATING",
+"IN_USE",
+"ERROR",
+"KEY_CHECK_PENDING",
+"KEY_NOT_REACHABLE",
+"DISABLING",
+"DISABLED",
+"MIGRATING"
+],
+"enumDescriptions": [
+"Unspecified KmsConfig State",
+"KmsConfig State is Ready",
+"KmsConfig State is Creating",
+"KmsConfig State is Deleting",
+"KmsConfig State is Updating",
+"KmsConfig State is In Use.",
+"KmsConfig State is Error",
+"KmsConfig State is Pending to verify crypto key access.",
+"KmsConfig State is Not accessbile by the SDE service account to the crypto key.",
+"KmsConfig State is Disabling.",
+"KmsConfig State is Disabled.",
+"KmsConfig State is Migrating. The existing volumes are migrating from SMEK to CMEK."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateDetails": {
+"description": "Output only. State details of the KmsConfig.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListActiveDirectoriesResponse": {
+"description": "ListActiveDirectoriesResponse contains all the active directories requested.",
+"id": "ListActiveDirectoriesResponse",
+"properties": {
+"activeDirectories": {
+"description": "The list of active directories.",
+"items": {
+"$ref": "ActiveDirectory"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListBackupPoliciesResponse": {
+"description": "ListBackupPoliciesResponse contains all the backup policies requested.",
+"id": "ListBackupPoliciesResponse",
+"properties": {
+"backupPolicies": {
+"description": "The list of backup policies.",
+"items": {
+"$ref": "BackupPolicy"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListBackupVaultsResponse": {
+"description": "ListBackupVaultsResponse is the result of ListBackupVaultsRequest.",
+"id": "ListBackupVaultsResponse",
+"properties": {
+"backupVaults": {
+"description": "A list of backupVaults in the project for the specified location.",
+"items": {
+"$ref": "BackupVault"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The token you can use to retrieve the next page of results. Not returned if there are no more results in the list.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListBackupsResponse": {
+"description": "ListBackupsResponse is the result of ListBackupsRequest.",
+"id": "ListBackupsResponse",
+"properties": {
+"backups": {
+"description": "A list of backups in the project.",
+"items": {
+"$ref": "Backup"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The token you can use to retrieve the next page of results. Not returned if there are no more results in the list.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListKmsConfigsResponse": {
+"description": "ListKmsConfigsResponse is the response to a ListKmsConfigsRequest.",
+"id": "ListKmsConfigsResponse",
+"properties": {
+"kmsConfigs": {
+"description": "The list of KmsConfigs",
+"items": {
+"$ref": "KmsConfig"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListReplicationsResponse": {
+"description": "ListReplicationsResponse is the result of ListReplicationsRequest.",
+"id": "ListReplicationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The token you can use to retrieve the next page of results. Not returned if there are no more results in the list.",
+"type": "string"
+},
+"replications": {
+"description": "A list of replications in the project for the specified volume.",
+"items": {
+"$ref": "Replication"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListSnapshotsResponse": {
+"description": "ListSnapshotsResponse is the result of ListSnapshotsRequest.",
+"id": "ListSnapshotsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The token you can use to retrieve the next page of results. Not returned if there are no more results in the list.",
+"type": "string"
+},
+"snapshots": {
+"description": "A list of snapshots in the project for the specified volume.",
+"items": {
+"$ref": "Snapshot"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListStoragePoolsResponse": {
+"description": "ListStoragePoolsResponse is the response to a ListStoragePoolsRequest.",
+"id": "ListStoragePoolsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"storagePools": {
+"description": "The list of StoragePools",
+"items": {
+"$ref": "StoragePool"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListVolumesResponse": {
+"description": "Message for response to listing Volumes",
+"id": "ListVolumesResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"volumes": {
+"description": "The list of Volume",
+"items": {
+"$ref": "Volume"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LocationMetadata": {
+"description": "Metadata for a given google.cloud.location.Location.",
+"id": "LocationMetadata",
+"properties": {
+"supportedServiceLevels": {
+"description": "Output only. Supported service levels in a location.",
+"items": {
+"enum": [
+"SERVICE_LEVEL_UNSPECIFIED",
+"PREMIUM",
+"EXTREME",
+"STANDARD",
+"FLEX"
+],
+"enumDescriptions": [
+"Unspecified service level.",
+"Premium service level.",
+"Extreme service level.",
+"Standard service level.",
+"Flex service level."
+],
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"MonthlySchedule": {
+"description": "Make a snapshot once a month e.g. at 2nd 04:00, 7th 05:20, 24th 23:50",
+"id": "MonthlySchedule",
+"properties": {
+"daysOfMonth": {
+"description": "Set the day or days of the month to make a snapshot (1-31). Accepts a comma separated number of days. Defaults to '1'.",
+"type": "string"
+},
+"hour": {
+"description": "Set the hour to start the snapshot (0-23), defaults to midnight (0).",
+"format": "double",
+"type": "number"
+},
+"minute": {
+"description": "Set the minute of the hour to start the snapshot (0-59), defaults to the top of the hour (0).",
+"format": "double",
+"type": "number"
+},
+"snapshotsToKeep": {
+"description": "The maximum number of Snapshots to keep for the hourly schedule",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"MountOption": {
+"description": "View only mount options for a volume.",
+"id": "MountOption",
+"properties": {
+"export": {
+"description": "Export string",
+"type": "string"
+},
+"exportFull": {
+"description": "Full export string",
+"type": "string"
+},
+"instructions": {
+"description": "Instructions for mounting",
+"type": "string"
+},
+"protocol": {
+"description": "Protocol to mount with.",
+"enum": [
+"PROTOCOLS_UNSPECIFIED",
+"NFSV3",
+"NFSV4",
+"SMB"
+],
+"enumDescriptions": [
+"Unspecified protocol",
+"NFS V3 protocol",
+"NFS V4 protocol",
+"SMB protocol"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have been canceled successfully have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Replication": {
+"description": "Replication is a nested resource under Volume, that describes a cross-region replication relationship between 2 volumes in different regions.",
+"id": "Replication",
+"properties": {
+"clusterLocation": {
+"description": "Optional. Location of the user cluster.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Replication create time.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "A description about this replication relationship.",
+"type": "string"
+},
+"destinationVolume": {
+"description": "Output only. Full name of destination volume resource. Example : \"projects/{project}/locations/{location}/volumes/{volume_id}\"",
+"readOnly": true,
+"type": "string"
+},
+"destinationVolumeParameters": {
+"$ref": "DestinationVolumeParameters",
+"description": "Required. Input only. Destination volume parameters"
+},
+"healthy": {
+"description": "Output only. Condition of the relationship. Can be one of the following: - true: The replication relationship is healthy. It has not missed the most recent scheduled transfer. - false: The replication relationship is not healthy. It has missed the most recent scheduled transfer.",
+"readOnly": true,
+"type": "boolean"
+},
+"hybridPeeringDetails": {
+"$ref": "HybridPeeringDetails",
+"description": "Output only. Hybrid peering details.",
+"readOnly": true
+},
+"hybridReplicationType": {
+"description": "Output only. Type of the hybrid replication.",
+"enum": [
+"HYBRID_REPLICATION_TYPE_UNSPECIFIED",
+"MIGRATION",
+"CONTINUOUS_REPLICATION"
+],
+"enumDescriptions": [
+"Unspecified hybrid replication type.",
+"Hybrid replication type for migration.",
+"Hybrid replication type for continuous replication."
+],
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Resource labels to represent user provided metadata.",
+"type": "object"
+},
+"mirrorState": {
+"description": "Output only. Indicates the state of mirroring.",
+"enum": [
+"MIRROR_STATE_UNSPECIFIED",
+"PREPARING",
+"MIRRORED",
+"STOPPED",
+"TRANSFERRING",
+"BASELINE_TRANSFERRING",
+"ABORTED"
+],
+"enumDescriptions": [
+"Unspecified MirrorState",
+"Destination volume is being prepared.",
+"Destination volume has been initialized and is ready to receive replication transfers.",
+"Destination volume is not receiving replication transfers.",
+"Incremental replication is in progress.",
+"Baseline replication is in progress.",
+"Replication is aborted."
+],
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Identifier. The resource name of the Replication. Format: `projects/{project_id}/locations/{location}/volumes/{volume_id}/replications/{replication_id}`.",
+"type": "string"
+},
+"replicationSchedule": {
+"description": "Required. Indicates the schedule for replication.",
+"enum": [
+"REPLICATION_SCHEDULE_UNSPECIFIED",
+"EVERY_10_MINUTES",
+"HOURLY",
+"DAILY"
+],
+"enumDescriptions": [
+"Unspecified ReplicationSchedule",
+"Replication happens once every 10 minutes.",
+"Replication happens once every hour.",
+"Replication happens once every day."
+],
+"type": "string"
+},
+"role": {
+"description": "Output only. Indicates whether this points to source or destination.",
+"enum": [
+"REPLICATION_ROLE_UNSPECIFIED",
+"SOURCE",
+"DESTINATION"
+],
+"enumDescriptions": [
+"Unspecified replication role",
+"Indicates Source volume.",
+"Indicates Destination volume."
+],
+"readOnly": true,
+"type": "string"
+},
+"sourceVolume": {
+"description": "Output only. Full name of source volume resource. Example : \"projects/{project}/locations/{location}/volumes/{volume_id}\"",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the replication.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"UPDATING",
+"DELETING",
+"ERROR",
+"PENDING_CLUSTER_PEERING",
+"PENDING_SVM_PEERING"
+],
+"enumDescriptions": [
+"Unspecified replication State",
+"Replication is creating.",
+"Replication is ready.",
+"Replication is updating.",
+"Replication is deleting.",
+"Replication is in error state.",
+"Replication is waiting for cluster peering to be established.",
+"Replication is waiting for SVM peering to be established."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateDetails": {
+"description": "Output only. State details of the replication.",
+"readOnly": true,
+"type": "string"
+},
+"transferStats": {
+"$ref": "TransferStats",
+"description": "Output only. Replication transfer statistics.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"RestoreParameters": {
+"description": "The RestoreParameters if volume is created from a snapshot or backup.",
+"id": "RestoreParameters",
+"properties": {
+"sourceBackup": {
+"description": "Full name of the backup resource. Format: projects/{project}/locations/{location}/backupVaults/{backup_vault_id}/backups/{backup_id}",
+"type": "string"
+},
+"sourceSnapshot": {
+"description": "Full name of the snapshot resource. Format: projects/{project}/locations/{location}/volumes/{volume}/snapshots/{snapshot}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResumeReplicationRequest": {
+"description": "ResumeReplicationRequest resumes a stopped replication.",
+"id": "ResumeReplicationRequest",
+"properties": {},
+"type": "object"
+},
+"ReverseReplicationDirectionRequest": {
+"description": "ReverseReplicationDirectionRequest reverses direction of replication. Source becomes destination and destination becomes source.",
+"id": "ReverseReplicationDirectionRequest",
+"properties": {},
+"type": "object"
+},
+"RevertVolumeRequest": {
+"description": "RevertVolumeRequest reverts the given volume to the specified snapshot.",
+"id": "RevertVolumeRequest",
+"properties": {
+"snapshotId": {
+"description": "Required. The snapshot resource ID, in the format 'my-snapshot', where the specified ID is the {snapshot_id} of the fully qualified name like projects/{project_id}/locations/{location_id}/volumes/{volume_id}/snapshots/{snapshot_id}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SimpleExportPolicyRule": {
+"description": "An export policy rule describing various export options.",
+"id": "SimpleExportPolicyRule",
+"properties": {
+"accessType": {
+"description": "Access type (ReadWrite, ReadOnly, None)",
+"enum": [
+"ACCESS_TYPE_UNSPECIFIED",
+"READ_ONLY",
+"READ_WRITE",
+"READ_NONE"
+],
+"enumDescriptions": [
+"Unspecified Access Type",
+"Read Only",
+"Read Write",
+"None"
+],
+"type": "string"
+},
+"allowedClients": {
+"description": "Comma separated list of allowed clients IP addresses",
+"type": "string"
+},
+"hasRootAccess": {
+"description": "Whether Unix root access will be granted.",
+"type": "string"
+},
+"kerberos5ReadOnly": {
+"description": "If enabled (true) the rule defines a read only access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'authentication' kerberos security mode.",
+"type": "boolean"
+},
+"kerberos5ReadWrite": {
+"description": "If enabled (true) the rule defines read and write access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'authentication' kerberos security mode. The 'kerberos5ReadOnly' value be ignored if this is enabled.",
+"type": "boolean"
+},
+"kerberos5iReadOnly": {
+"description": "If enabled (true) the rule defines a read only access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'integrity' kerberos security mode.",
+"type": "boolean"
+},
+"kerberos5iReadWrite": {
+"description": "If enabled (true) the rule defines read and write access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'integrity' kerberos security mode. The 'kerberos5iReadOnly' value be ignored if this is enabled.",
+"type": "boolean"
+},
+"kerberos5pReadOnly": {
+"description": "If enabled (true) the rule defines a read only access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'privacy' kerberos security mode.",
+"type": "boolean"
+},
+"kerberos5pReadWrite": {
+"description": "If enabled (true) the rule defines read and write access for clients matching the 'allowedClients' specification. It enables nfs clients to mount using 'privacy' kerberos security mode. The 'kerberos5pReadOnly' value be ignored if this is enabled.",
+"type": "boolean"
+},
+"nfsv3": {
+"description": "NFS V3 protocol.",
+"type": "boolean"
+},
+"nfsv4": {
+"description": "NFS V4 protocol.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Snapshot": {
+"description": "Snapshot is a point-in-time version of a Volume's content.",
+"id": "Snapshot",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the snapshot was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "A description of the snapshot with 2048 characters or less. Requests with longer descriptions will be rejected.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Resource labels to represent user provided metadata.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. The resource name of the snapshot. Format: `projects/{project_id}/locations/{location}/volumes/{volume_id}/snapshots/{snapshot_id}`.",
+"type": "string"
+},
+"state": {
+"description": "Output only. The snapshot state.",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"CREATING",
+"DELETING",
+"UPDATING",
+"DISABLED",
+"ERROR"
+],
+"enumDescriptions": [
+"Unspecified Snapshot State",
+"Snapshot State is Ready",
+"Snapshot State is Creating",
+"Snapshot State is Deleting",
+"Snapshot State is Updating",
+"Snapshot State is Disabled",
+"Snapshot State is Error"
+],
+"readOnly": true,
+"type": "string"
+},
+"stateDetails": {
+"description": "Output only. State details of the storage pool",
+"readOnly": true,
+"type": "string"
+},
+"usedBytes": {
+"description": "Output only. Current storage usage for the snapshot in bytes.",
+"format": "double",
+"readOnly": true,
+"type": "number"
+}
+},
+"type": "object"
+},
+"SnapshotPolicy": {
+"description": "Snapshot Policy for a volume.",
+"id": "SnapshotPolicy",
+"properties": {
+"dailySchedule": {
+"$ref": "DailySchedule",
+"description": "Daily schedule policy."
+},
+"enabled": {
+"description": "If enabled, make snapshots automatically according to the schedules. Default is false.",
+"type": "boolean"
+},
+"hourlySchedule": {
+"$ref": "HourlySchedule",
+"description": "Hourly schedule policy."
+},
+"monthlySchedule": {
+"$ref": "MonthlySchedule",
+"description": "Monthly schedule policy."
+},
+"weeklySchedule": {
+"$ref": "WeeklySchedule",
+"description": "Weekly schedule policy."
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StopReplicationRequest": {
+"description": "StopReplicationRequest stops a replication until resumed.",
+"id": "StopReplicationRequest",
+"properties": {
+"force": {
+"description": "Indicates whether to stop replication forcefully while data transfer is in progress. Warning! if force is true, this will abort any current transfers and can lead to data loss due to partial transfer. If force is false, stop replication will fail while data transfer is in progress and you will need to retry later.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"StoragePool": {
+"description": "StoragePool is a container for volumes with a service level and capacity. Volumes can be created in a pool of sufficient available capacity. StoragePool capacity is what you are billed for.",
+"id": "StoragePool",
+"properties": {
+"activeDirectory": {
+"description": "Optional. Specifies the Active Directory to be used for creating a SMB volume.",
+"type": "string"
+},
+"allowAutoTiering": {
+"description": "Optional. True if the storage pool supports Auto Tiering enabled volumes. Default is false. Auto-tiering can be enabled after storage pool creation but it can't be disabled once enabled.",
+"type": "boolean"
+},
+"capacityGib": {
+"description": "Required. Capacity in GIB of the pool",
+"format": "int64",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Create time of the storage pool",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of the storage pool",
+"type": "string"
+},
+"encryptionType": {
+"description": "Output only. Specifies the current pool encryption key source.",
+"enum": [
+"ENCRYPTION_TYPE_UNSPECIFIED",
+"SERVICE_MANAGED",
+"CLOUD_KMS"
+],
+"enumDescriptions": [
+"The source of the encryption key is not specified.",
+"Google managed encryption key.",
+"Customer managed encryption key, which is stored in KMS."
+],
+"readOnly": true,
+"type": "string"
+},
+"globalAccessAllowed": {
+"deprecated": true,
+"description": "Deprecated. Used to allow SO pool to access AD or DNS server from other regions.",
+"type": "boolean"
+},
+"kmsConfig": {
+"description": "Optional. Specifies the KMS config to be used for volume encryption.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Labels as key value pairs",
+"type": "object"
+},
+"ldapEnabled": {
+"description": "Optional. Flag indicating if the pool is NFS LDAP enabled or not.",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. Name of the storage pool",
+"type": "string"
+},
+"network": {
+"description": "Required. VPC Network name. Format: projects/{project}/global/networks/{network}",
+"type": "string"
+},
+"psaRange": {
+"description": "Optional. This field is not implemented. The values provided in this field are ignored.",
+"type": "string"
+},
+"replicaZone": {
+"description": "Optional. Specifies the replica zone for regional storagePool.",
+"type": "string"
+},
+"satisfiesPzi": {
+"description": "Output only. Reserved for future use",
+"readOnly": true,
+"type": "boolean"
+},
+"satisfiesPzs": {
+"description": "Output only. Reserved for future use",
+"readOnly": true,
+"type": "boolean"
+},
+"serviceLevel": {
+"description": "Required. Service level of the storage pool",
+"enum": [
+"SERVICE_LEVEL_UNSPECIFIED",
+"PREMIUM",
+"EXTREME",
+"STANDARD",
+"FLEX"
+],
+"enumDescriptions": [
+"Unspecified service level.",
+"Premium service level.",
+"Extreme service level.",
+"Standard service level.",
+"Flex service level."
+],
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the storage pool",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"CREATING",
+"DELETING",
+"UPDATING",
+"RESTORING",
+"DISABLED",
+"ERROR"
+],
+"enumDescriptions": [
+"Unspecified Storage Pool State",
+"Storage Pool State is Ready",
+"Storage Pool State is Creating",
+"Storage Pool State is Deleting",
+"Storage Pool State is Updating",
+"Storage Pool State is Restoring",
+"Storage Pool State is Disabled",
+"Storage Pool State is Error"
+],
+"readOnly": true,
+"type": "string"
+},
+"stateDetails": {
+"description": "Output only. State details of the storage pool",
+"readOnly": true,
+"type": "string"
+},
+"volumeCapacityGib": {
+"description": "Output only. Allocated size of all volumes in GIB in the storage pool",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"volumeCount": {
+"description": "Output only. Volume count of the storage pool",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"zone": {
+"description": "Optional. Specifies the active zone for regional storagePool.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SwitchActiveReplicaZoneRequest": {
+"description": "SwitchActiveReplicaZoneRequest switch the active/replica zone for a regional storagePool.",
+"id": "SwitchActiveReplicaZoneRequest",
+"properties": {},
+"type": "object"
+},
+"SyncReplicationRequest": {
+"description": "SyncReplicationRequest syncs the replication from source to destination.",
+"id": "SyncReplicationRequest",
+"properties": {},
+"type": "object"
+},
+"TieringPolicy": {
+"description": "Defines tiering policy for the volume.",
+"id": "TieringPolicy",
+"properties": {
+"coolingThresholdDays": {
+"description": "Optional. Time in days to mark the volume's data block as cold and make it eligible for tiering, can be range from 7-183. Default is 31.",
+"format": "int32",
+"type": "integer"
+},
+"tierAction": {
+"description": "Optional. Flag indicating if the volume has tiering policy enable/pause. Default is PAUSED.",
+"enum": [
+"TIER_ACTION_UNSPECIFIED",
+"ENABLED",
+"PAUSED"
+],
+"enumDescriptions": [
+"Unspecified.",
+"When tiering is enabled, new cold data will be tiered.",
+"When paused, tiering won't be performed on new data. Existing data stays tiered until accessed."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"TransferStats": {
+"description": "TransferStats reports all statistics related to replication transfer.",
+"id": "TransferStats",
+"properties": {
+"lagDuration": {
+"description": "Lag duration indicates the duration by which Destination region volume content lags behind the primary region volume content.",
+"format": "google-duration",
+"type": "string"
+},
+"lastTransferBytes": {
+"description": "Last transfer size in bytes.",
+"format": "int64",
+"type": "string"
+},
+"lastTransferDuration": {
+"description": "Time taken during last transfer.",
+"format": "google-duration",
+"type": "string"
+},
+"lastTransferEndTime": {
+"description": "Time when last transfer completed.",
+"format": "google-datetime",
+"type": "string"
+},
+"lastTransferError": {
+"description": "A message describing the cause of the last transfer failure.",
+"type": "string"
+},
+"totalTransferDuration": {
+"description": "Cumulative time taken across all transfers for the replication relationship.",
+"format": "google-duration",
+"type": "string"
+},
+"transferBytes": {
+"description": "Cumulative bytes trasferred so far for the replication relatinonship.",
+"format": "int64",
+"type": "string"
+},
+"updateTime": {
+"description": "Time when progress was updated last.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ValidateDirectoryServiceRequest": {
+"description": "ValidateDirectoryServiceRequest validates the directory service policy attached to the storage pool.",
+"id": "ValidateDirectoryServiceRequest",
+"properties": {
+"directoryServiceType": {
+"description": "Type of directory service policy attached to the storage pool.",
+"enum": [
+"DIRECTORY_SERVICE_TYPE_UNSPECIFIED",
+"ACTIVE_DIRECTORY"
+],
+"enumDescriptions": [
+"Directory service type is not specified.",
+"Active directory policy attached to the storage pool."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"VerifyKmsConfigRequest": {
+"description": "VerifyKmsConfigRequest specifies the KMS config to be validated.",
+"id": "VerifyKmsConfigRequest",
+"properties": {},
+"type": "object"
+},
+"VerifyKmsConfigResponse": {
+"description": "VerifyKmsConfigResponse contains the information if the config is correctly and error message.",
+"id": "VerifyKmsConfigResponse",
+"properties": {
+"healthError": {
+"description": "Output only. Error message if config is not healthy.",
+"readOnly": true,
+"type": "string"
+},
+"healthy": {
+"description": "Output only. If the customer key configured correctly to the encrypt volume.",
+"readOnly": true,
+"type": "boolean"
+},
+"instructions": {
+"description": "Output only. Instructions for the customers to provide the access to the encryption key.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Volume": {
+"description": "Volume provides a filesystem that you can mount.",
+"id": "Volume",
+"properties": {
+"activeDirectory": {
+"description": "Output only. Specifies the ActiveDirectory name of a SMB volume.",
+"readOnly": true,
+"type": "string"
+},
+"backupConfig": {
+"$ref": "BackupConfig",
+"description": "BackupConfig of the volume."
+},
+"capacityGib": {
+"description": "Required. Capacity in GIB of the volume",
+"format": "int64",
+"type": "string"
+},
+"coldTierSizeGib": {
+"description": "Output only. Size of the volume cold tier data in GiB.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. Create time of the volume",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. Description of the volume",
+"type": "string"
+},
+"encryptionType": {
+"description": "Output only. Specified the current volume encryption key source.",
+"enum": [
+"ENCRYPTION_TYPE_UNSPECIFIED",
+"SERVICE_MANAGED",
+"CLOUD_KMS"
+],
+"enumDescriptions": [
+"The source of the encryption key is not specified.",
+"Google managed encryption key.",
+"Customer managed encryption key, which is stored in KMS."
+],
+"readOnly": true,
+"type": "string"
+},
+"exportPolicy": {
+"$ref": "ExportPolicy",
+"description": "Optional. Export policy of the volume"
+},
+"hasReplication": {
+"description": "Output only. Indicates whether the volume is part of a replication relationship.",
+"readOnly": true,
+"type": "boolean"
+},
+"hybridReplicationParameters": {
+"$ref": "HybridReplicationParameters",
+"description": "Optional. The Hybrid Replication parameters for the volume."
+},
+"kerberosEnabled": {
+"description": "Optional. Flag indicating if the volume is a kerberos volume or not, export policy rules control kerberos security modes (krb5, krb5i, krb5p).",
+"type": "boolean"
+},
+"kmsConfig": {
+"description": "Output only. Specifies the KMS config to be used for volume encryption.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Labels as key value pairs",
+"type": "object"
+},
+"largeCapacity": {
+"description": "Optional. Flag indicating if the volume will be a large capacity volume or a regular volume.",
+"type": "boolean"
+},
+"ldapEnabled": {
+"description": "Output only. Flag indicating if the volume is NFS LDAP enabled or not.",
+"readOnly": true,
+"type": "boolean"
+},
+"mountOptions": {
+"description": "Output only. Mount options of this volume",
+"items": {
+"$ref": "MountOption"
+},
+"readOnly": true,
+"type": "array"
+},
+"multipleEndpoints": {
+"description": "Optional. Flag indicating if the volume will have an IP address per node for volumes supporting multiple IP endpoints. Only the volume with large_capacity will be allowed to have multiple endpoints.",
+"type": "boolean"
+},
+"name": {
+"description": "Identifier. Name of the volume",
+"type": "string"
+},
+"network": {
+"description": "Output only. VPC Network name. Format: projects/{project}/global/networks/{network}",
+"readOnly": true,
+"type": "string"
+},
+"protocols": {
+"description": "Required. Protocols required for the volume",
+"items": {
+"enum": [
+"PROTOCOLS_UNSPECIFIED",
+"NFSV3",
+"NFSV4",
+"SMB"
+],
+"enumDescriptions": [
+"Unspecified protocol",
+"NFS V3 protocol",
+"NFS V4 protocol",
+"SMB protocol"
+],
+"type": "string"
+},
+"type": "array"
+},
+"psaRange": {
+"description": "Output only. This field is not implemented. The values provided in this field are ignored.",
+"readOnly": true,
+"type": "string"
+},
+"replicaZone": {
+"description": "Output only. Specifies the replica zone for regional volume.",
+"readOnly": true,
+"type": "string"
+},
+"restoreParameters": {
+"$ref": "RestoreParameters",
+"description": "Optional. Specifies the source of the volume to be created from."
+},
+"restrictedActions": {
+"description": "Optional. List of actions that are restricted on this volume.",
+"items": {
+"enum": [
+"RESTRICTED_ACTION_UNSPECIFIED",
+"DELETE"
+],
+"enumDescriptions": [
+"Unspecified restricted action",
+"Prevent volume from being deleted when mounted."
+],
+"type": "string"
+},
+"type": "array"
+},
+"securityStyle": {
+"description": "Optional. Security Style of the Volume",
+"enum": [
+"SECURITY_STYLE_UNSPECIFIED",
+"NTFS",
+"UNIX"
+],
+"enumDescriptions": [
+"SecurityStyle is unspecified",
+"SecurityStyle uses NTFS",
+"SecurityStyle uses UNIX"
+],
+"type": "string"
+},
+"serviceLevel": {
+"description": "Output only. Service level of the volume",
+"enum": [
+"SERVICE_LEVEL_UNSPECIFIED",
+"PREMIUM",
+"EXTREME",
+"STANDARD",
+"FLEX"
+],
+"enumDescriptions": [
+"Unspecified service level.",
+"Premium service level.",
+"Extreme service level.",
+"Standard service level.",
+"Flex service level."
+],
+"readOnly": true,
+"type": "string"
+},
+"shareName": {
+"description": "Required. Share name of the volume",
+"type": "string"
+},
+"smbSettings": {
+"description": "Optional. SMB share settings for the volume.",
+"items": {
+"enum": [
+"SMB_SETTINGS_UNSPECIFIED",
+"ENCRYPT_DATA",
+"BROWSABLE",
+"CHANGE_NOTIFY",
+"NON_BROWSABLE",
+"OPLOCKS",
+"SHOW_SNAPSHOT",
+"SHOW_PREVIOUS_VERSIONS",
+"ACCESS_BASED_ENUMERATION",
+"CONTINUOUSLY_AVAILABLE"
+],
+"enumDescriptions": [
+"Unspecified default option",
+"SMB setting encrypt data",
+"SMB setting browsable",
+"SMB setting notify change",
+"SMB setting not to notify change",
+"SMB setting oplocks",
+"SMB setting to show snapshots",
+"SMB setting to show previous versions",
+"SMB setting to access volume based on enumerartion",
+"Continuously available enumeration"
+],
+"type": "string"
+},
+"type": "array"
+},
+"snapReserve": {
+"description": "Optional. Snap_reserve specifies percentage of volume storage reserved for snapshot storage. Default is 0 percent.",
+"format": "double",
+"type": "number"
+},
+"snapshotDirectory": {
+"description": "Optional. Snapshot_directory if enabled (true) the volume will contain a read-only .snapshot directory which provides access to each of the volume's snapshots.",
+"type": "boolean"
+},
+"snapshotPolicy": {
+"$ref": "SnapshotPolicy",
+"description": "Optional. SnapshotPolicy for a volume."
+},
+"state": {
+"description": "Output only. State of the volume",
+"enum": [
+"STATE_UNSPECIFIED",
+"READY",
+"CREATING",
+"DELETING",
+"UPDATING",
+"RESTORING",
+"DISABLED",
+"ERROR",
+"PREPARING",
+"READ_ONLY"
+],
+"enumDescriptions": [
+"Unspecified Volume State",
+"Volume State is Ready",
+"Volume State is Creating",
+"Volume State is Deleting",
+"Volume State is Updating",
+"Volume State is Restoring",
+"Volume State is Disabled",
+"Volume State is Error",
+"Volume State is Preparing. Note that this is different from CREATING where CREATING means the volume is being created, while PREPARING means the volume is created and now being prepared for the replication.",
+"Volume State is Read Only"
+],
+"readOnly": true,
+"type": "string"
+},
+"stateDetails": {
+"description": "Output only. State details of the volume",
+"readOnly": true,
+"type": "string"
+},
+"storagePool": {
+"description": "Required. StoragePool name of the volume",
+"type": "string"
+},
+"tieringPolicy": {
+"$ref": "TieringPolicy",
+"description": "Tiering policy for the volume."
+},
+"unixPermissions": {
+"description": "Optional. Default unix style permission (e.g. 777) the mount point will be created with. Applicable for NFS protocol types only.",
+"type": "string"
+},
+"usedGib": {
+"description": "Output only. Used capacity in GIB of the volume. This is computed periodically and it does not represent the realtime usage.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"zone": {
+"description": "Output only. Specifies the active zone for regional volume.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"WeeklySchedule": {
+"description": "Make a snapshot every week e.g. at Monday 04:00, Wednesday 05:20, Sunday 23:50",
+"id": "WeeklySchedule",
+"properties": {
+"day": {
+"description": "Set the day or days of the week to make a snapshot. Accepts a comma separated days of the week. Defaults to 'Sunday'.",
+"type": "string"
+},
+"hour": {
+"description": "Set the hour to start the snapshot (0-23), defaults to midnight (0).",
+"format": "double",
+"type": "number"
+},
+"minute": {
+"description": "Set the minute of the hour to start the snapshot (0-59), defaults to the top of the hour (0).",
+"format": "double",
+"type": "number"
+},
+"snapshotsToKeep": {
+"description": "The maximum number of Snapshots to keep for the hourly schedule",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "NetApp API",
+"version": "v1beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/networkservices.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/networkservices.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..a1535c1ce4e67c7c07079e4bf57c3ca1bcb47735
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/networkservices.v1.json
@@ -0,0 +1,5856 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://networkservices.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "NetworkServices",
+"description": "",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/networking",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "networkservices:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://networkservices.mtls.googleapis.com/",
+"name": "networkservices",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"authzExtensions": {
+"methods": {
+"create": {
+"description": "Creates a new `AuthzExtension` resource in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/authzExtensions",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.authzExtensions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"authzExtensionId": {
+"description": "Required. User-provided ID of the `AuthzExtension` resource to be created.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource of the `AuthzExtension` resource. Must be in the format `projects/{project}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/authzExtensions",
+"request": {
+"$ref": "AuthzExtension"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified `AuthzExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/authzExtensions/{authzExtensionsId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.authzExtensions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the `AuthzExtension` resource to delete. Must be in the format `projects/{project}/locations/{location}/authzExtensions/{authz_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/authzExtensions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of the specified `AuthzExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/authzExtensions/{authzExtensionsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.authzExtensions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the `AuthzExtension` resource to get. Must be in the format `projects/{project}/locations/{location}/authzExtensions/{authz_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/authzExtensions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "AuthzExtension"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists `AuthzExtension` resources in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/authzExtensions",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.authzExtensions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filtering results.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Hint for how to order the results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. The server might return fewer items than requested. If unspecified, the server picks an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results that the server returns.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the `AuthzExtension` resources are listed, specified in the following format: `projects/{project}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/authzExtensions",
+"response": {
+"$ref": "ListAuthzExtensionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of the specified `AuthzExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/authzExtensions/{authzExtensionsId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.authzExtensions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Identifier. Name of the `AuthzExtension` resource in the following format: `projects/{project}/locations/{location}/authzExtensions/{authz_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/authzExtensions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Used to specify the fields to be overwritten in the `AuthzExtension` resource by the update. The fields specified in the `update_mask` are relative to the resource, not the full request. A field is overwritten if it is in the mask. If the user does not specify a mask, then all fields are overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "AuthzExtension"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"edgeCacheKeysets": {
+"methods": {
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheKeysets/{edgeCacheKeysetsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.edgeCacheKeysets.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheKeysets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheKeysets/{edgeCacheKeysetsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.edgeCacheKeysets.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheKeysets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheKeysets/{edgeCacheKeysetsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.edgeCacheKeysets.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheKeysets/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"edgeCacheOrigins": {
+"methods": {
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheOrigins/{edgeCacheOriginsId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.edgeCacheOrigins.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheOrigins/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheOrigins/{edgeCacheOriginsId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.edgeCacheOrigins.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheOrigins/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheOrigins/{edgeCacheOriginsId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.edgeCacheOrigins.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheOrigins/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"edgeCacheServices": {
+"methods": {
+"getIamPolicy": {
+"description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheServices/{edgeCacheServicesId}:getIamPolicy",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.edgeCacheServices.getIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"options.requestedPolicyVersion": {
+"description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheServices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:getIamPolicy",
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"setIamPolicy": {
+"description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheServices/{edgeCacheServicesId}:setIamPolicy",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.edgeCacheServices.setIamPolicy",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheServices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:setIamPolicy",
+"request": {
+"$ref": "SetIamPolicyRequest"
+},
+"response": {
+"$ref": "Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"testIamPermissions": {
+"description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/edgeCacheServices/{edgeCacheServicesId}:testIamPermissions",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.edgeCacheServices.testIamPermissions",
+"parameterOrder": [
+"resource"
+],
+"parameters": {
+"resource": {
+"description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/edgeCacheServices/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+resource}:testIamPermissions",
+"request": {
+"$ref": "TestIamPermissionsRequest"
+},
+"response": {
+"$ref": "TestIamPermissionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"endpointPolicies": {
+"methods": {
+"create": {
+"description": "Creates a new EndpointPolicy in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointPolicies",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.endpointPolicies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"endpointPolicyId": {
+"description": "Required. Short name of the EndpointPolicy resource to be created. E.g. \"CustomECS\".",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource of the EndpointPolicy. Must be in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/endpointPolicies",
+"request": {
+"$ref": "EndpointPolicy"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single EndpointPolicy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointPolicies/{endpointPoliciesId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.endpointPolicies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the EndpointPolicy to delete. Must be in the format `projects/*/locations/global/endpointPolicies/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpointPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single EndpointPolicy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointPolicies/{endpointPoliciesId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.endpointPolicies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the EndpointPolicy to get. Must be in the format `projects/*/locations/global/endpointPolicies/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpointPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "EndpointPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists EndpointPolicies in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointPolicies",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.endpointPolicies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of EndpointPolicies to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListEndpointPoliciesResponse` Indicates that this is a continuation of a prior `ListEndpointPolicies` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the EndpointPolicies should be listed, specified in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/endpointPolicies",
+"response": {
+"$ref": "ListEndpointPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single EndpointPolicy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/endpointPolicies/{endpointPoliciesId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.endpointPolicies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the EndpointPolicy resource. It matches pattern `projects/{project}/locations/global/endpointPolicies/{endpoint_policy}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/endpointPolicies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the EndpointPolicy resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "EndpointPolicy"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"gateways": {
+"methods": {
+"create": {
+"description": "Creates a new Gateway in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/gateways",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.gateways.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"gatewayId": {
+"description": "Required. Short name of the Gateway resource to be created.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource of the Gateway. Must be in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/gateways",
+"request": {
+"$ref": "Gateway"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Gateway.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/gateways/{gatewaysId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.gateways.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the Gateway to delete. Must be in the format `projects/*/locations/*/gateways/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/gateways/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Gateway.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/gateways/{gatewaysId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.gateways.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the Gateway to get. Must be in the format `projects/*/locations/*/gateways/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/gateways/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Gateway"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Gateways in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/gateways",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.gateways.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of Gateways to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListGatewaysResponse` Indicates that this is a continuation of a prior `ListGateways` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the Gateways should be listed, specified in the format `projects/*/locations/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/gateways",
+"response": {
+"$ref": "ListGatewaysResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Gateway.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/gateways/{gatewaysId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.gateways.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the Gateway resource. It matches pattern `projects/*/locations/*/gateways/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/gateways/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the Gateway resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Gateway"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"routeViews": {
+"methods": {
+"get": {
+"description": "Get a single RouteView of a Gateway.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/gateways/{gatewaysId}/routeViews/{routeViewsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.gateways.routeViews.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the GatewayRouteView resource. Formats: projects/{project_number}/locations/{location}/gateways/{gateway_name}/routeViews/{route_view_name}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/gateways/[^/]+/routeViews/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GatewayRouteView"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists RouteViews",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/gateways/{gatewaysId}/routeViews",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.gateways.routeViews.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of GatewayRouteViews to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListGatewayRouteViewsResponse` Indicates that this is a continuation of a prior `ListGatewayRouteViews` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Gateway to which a Route is associated. Formats: projects/{project_number}/locations/{location}/gateways/{gateway_name}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/gateways/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/routeViews",
+"response": {
+"$ref": "ListGatewayRouteViewsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"grpcRoutes": {
+"methods": {
+"create": {
+"description": "Creates a new GrpcRoute in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/grpcRoutes",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.grpcRoutes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"grpcRouteId": {
+"description": "Required. Short name of the GrpcRoute resource to be created.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource of the GrpcRoute. Must be in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/grpcRoutes",
+"request": {
+"$ref": "GrpcRoute"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single GrpcRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/grpcRoutes/{grpcRoutesId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.grpcRoutes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the GrpcRoute to delete. Must be in the format `projects/*/locations/global/grpcRoutes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/grpcRoutes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single GrpcRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/grpcRoutes/{grpcRoutesId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.grpcRoutes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the GrpcRoute to get. Must be in the format `projects/*/locations/global/grpcRoutes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/grpcRoutes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GrpcRoute"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists GrpcRoutes in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/grpcRoutes",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.grpcRoutes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of GrpcRoutes to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListGrpcRoutesResponse` Indicates that this is a continuation of a prior `ListGrpcRoutes` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the GrpcRoutes should be listed, specified in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/grpcRoutes",
+"response": {
+"$ref": "ListGrpcRoutesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single GrpcRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/grpcRoutes/{grpcRoutesId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.grpcRoutes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the GrpcRoute resource. It matches pattern `projects/*/locations/global/grpcRoutes/`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/grpcRoutes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the GrpcRoute resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "GrpcRoute"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"httpRoutes": {
+"methods": {
+"create": {
+"description": "Creates a new HttpRoute in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/httpRoutes",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.httpRoutes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"httpRouteId": {
+"description": "Required. Short name of the HttpRoute resource to be created.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource of the HttpRoute. Must be in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/httpRoutes",
+"request": {
+"$ref": "HttpRoute"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single HttpRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/httpRoutes/{httpRoutesId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.httpRoutes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the HttpRoute to delete. Must be in the format `projects/*/locations/global/httpRoutes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/httpRoutes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single HttpRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/httpRoutes/{httpRoutesId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.httpRoutes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the HttpRoute to get. Must be in the format `projects/*/locations/global/httpRoutes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/httpRoutes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "HttpRoute"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists HttpRoute in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/httpRoutes",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.httpRoutes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of HttpRoutes to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListHttpRoutesResponse` Indicates that this is a continuation of a prior `ListHttpRoutes` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the HttpRoutes should be listed, specified in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/httpRoutes",
+"response": {
+"$ref": "ListHttpRoutesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single HttpRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/httpRoutes/{httpRoutesId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.httpRoutes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the HttpRoute resource. It matches pattern `projects/*/locations/global/httpRoutes/http_route_name>`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/httpRoutes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the HttpRoute resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "HttpRoute"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"lbRouteExtensions": {
+"methods": {
+"create": {
+"description": "Creates a new `LbRouteExtension` resource in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbRouteExtensions",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.lbRouteExtensions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"lbRouteExtensionId": {
+"description": "Required. User-provided ID of the `LbRouteExtension` resource to be created.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource of the `LbRouteExtension` resource. Must be in the format `projects/{project}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/lbRouteExtensions",
+"request": {
+"$ref": "LbRouteExtension"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified `LbRouteExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbRouteExtensions/{lbRouteExtensionsId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.lbRouteExtensions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the `LbRouteExtension` resource to delete. Must be in the format `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/lbRouteExtensions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of the specified `LbRouteExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbRouteExtensions/{lbRouteExtensionsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.lbRouteExtensions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the `LbRouteExtension` resource to get. Must be in the format `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/lbRouteExtensions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "LbRouteExtension"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists `LbRouteExtension` resources in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbRouteExtensions",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.lbRouteExtensions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filtering results.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Hint for how to order the results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. The server might return fewer items than requested. If unspecified, the server picks an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results that the server returns.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the `LbRouteExtension` resources are listed, specified in the following format: `projects/{project}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/lbRouteExtensions",
+"response": {
+"$ref": "ListLbRouteExtensionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of the specified `LbRouteExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbRouteExtensions/{lbRouteExtensionsId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.lbRouteExtensions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Identifier. Name of the `LbRouteExtension` resource in the following format: `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/lbRouteExtensions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Used to specify the fields to be overwritten in the `LbRouteExtension` resource by the update. The fields specified in the `update_mask` are relative to the resource, not the full request. A field is overwritten if it is in the mask. If the user does not specify a mask, then all fields are overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "LbRouteExtension"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"lbTrafficExtensions": {
+"methods": {
+"create": {
+"description": "Creates a new `LbTrafficExtension` resource in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbTrafficExtensions",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.lbTrafficExtensions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"lbTrafficExtensionId": {
+"description": "Required. User-provided ID of the `LbTrafficExtension` resource to be created.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource of the `LbTrafficExtension` resource. Must be in the format `projects/{project}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/lbTrafficExtensions",
+"request": {
+"$ref": "LbTrafficExtension"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified `LbTrafficExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbTrafficExtensions/{lbTrafficExtensionsId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.lbTrafficExtensions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the `LbTrafficExtension` resource to delete. Must be in the format `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/lbTrafficExtensions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of the specified `LbTrafficExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbTrafficExtensions/{lbTrafficExtensionsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.lbTrafficExtensions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the `LbTrafficExtension` resource to get. Must be in the format `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/lbTrafficExtensions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "LbTrafficExtension"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists `LbTrafficExtension` resources in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbTrafficExtensions",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.lbTrafficExtensions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filtering results.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Hint for how to order the results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. The server might return fewer items than requested. If unspecified, the server picks an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results that the server returns.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the `LbTrafficExtension` resources are listed, specified in the following format: `projects/{project}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/lbTrafficExtensions",
+"response": {
+"$ref": "ListLbTrafficExtensionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of the specified `LbTrafficExtension` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/lbTrafficExtensions/{lbTrafficExtensionsId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.lbTrafficExtensions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Identifier. Name of the `LbTrafficExtension` resource in the following format: `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/lbTrafficExtensions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server can ignore the request if it has already been completed. The server guarantees that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, ignores the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Used to specify the fields to be overwritten in the `LbTrafficExtension` resource by the update. The fields specified in the `update_mask` are relative to the resource, not the full request. A field is overwritten if it is in the mask. If the user does not specify a mask, then all fields are overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "LbTrafficExtension"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"meshes": {
+"methods": {
+"create": {
+"description": "Creates a new Mesh in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/meshes",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.meshes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"meshId": {
+"description": "Required. Short name of the Mesh resource to be created.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource of the Mesh. Must be in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/meshes",
+"request": {
+"$ref": "Mesh"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Mesh.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/meshes/{meshesId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.meshes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the Mesh to delete. Must be in the format `projects/*/locations/global/meshes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/meshes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Mesh.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/meshes/{meshesId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.meshes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the Mesh to get. Must be in the format `projects/*/locations/global/meshes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/meshes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Mesh"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Meshes in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/meshes",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.meshes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of Meshes to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListMeshesResponse` Indicates that this is a continuation of a prior `ListMeshes` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the Meshes should be listed, specified in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/meshes",
+"response": {
+"$ref": "ListMeshesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Mesh.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/meshes/{meshesId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.meshes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the Mesh resource. It matches pattern `projects/*/locations/global/meshes/`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/meshes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the Mesh resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "Mesh"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"routeViews": {
+"methods": {
+"get": {
+"description": "Get a single RouteView of a Mesh.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/meshes/{meshesId}/routeViews/{routeViewsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.meshes.routeViews.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the MeshRouteView resource. Format: projects/{project_number}/locations/{location}/meshes/{mesh_name}/routeViews/{route_view_name}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/meshes/[^/]+/routeViews/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "MeshRouteView"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists RouteViews",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/meshes/{meshesId}/routeViews",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.meshes.routeViews.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of MeshRouteViews to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListMeshRouteViewsResponse` Indicates that this is a continuation of a prior `ListMeshRouteViews` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Mesh to which a Route is associated. Format: projects/{project_number}/locations/{location}/meshes/{mesh_name}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/meshes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/routeViews",
+"response": {
+"$ref": "ListMeshRouteViewsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"serviceBindings": {
+"methods": {
+"create": {
+"description": "Creates a new ServiceBinding in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceBindings",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.serviceBindings.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the ServiceBinding. Must be in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"serviceBindingId": {
+"description": "Required. Short name of the ServiceBinding resource to be created.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/serviceBindings",
+"request": {
+"$ref": "ServiceBinding"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single ServiceBinding.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceBindings/{serviceBindingsId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.serviceBindings.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the ServiceBinding to delete. Must be in the format `projects/*/locations/global/serviceBindings/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/serviceBindings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single ServiceBinding.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceBindings/{serviceBindingsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.serviceBindings.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the ServiceBinding to get. Must be in the format `projects/*/locations/global/serviceBindings/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/serviceBindings/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "ServiceBinding"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists ServiceBinding in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceBindings",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.serviceBindings.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of ServiceBindings to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListServiceBindingsResponse` Indicates that this is a continuation of a prior `ListRouters` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the ServiceBindings should be listed, specified in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/serviceBindings",
+"response": {
+"$ref": "ListServiceBindingsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"serviceLbPolicies": {
+"methods": {
+"create": {
+"description": "Creates a new ServiceLbPolicy in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceLbPolicies",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.serviceLbPolicies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the ServiceLbPolicy. Must be in the format `projects/{project}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"serviceLbPolicyId": {
+"description": "Required. Short name of the ServiceLbPolicy resource to be created. E.g. for resource name `projects/{project}/locations/{location}/serviceLbPolicies/{service_lb_policy_name}`. the id is value of {service_lb_policy_name}",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/serviceLbPolicies",
+"request": {
+"$ref": "ServiceLbPolicy"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single ServiceLbPolicy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceLbPolicies/{serviceLbPoliciesId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.serviceLbPolicies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the ServiceLbPolicy to delete. Must be in the format `projects/{project}/locations/{location}/serviceLbPolicies/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/serviceLbPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single ServiceLbPolicy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceLbPolicies/{serviceLbPoliciesId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.serviceLbPolicies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the ServiceLbPolicy to get. Must be in the format `projects/{project}/locations/{location}/serviceLbPolicies/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/serviceLbPolicies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "ServiceLbPolicy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists ServiceLbPolicies in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceLbPolicies",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.serviceLbPolicies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of ServiceLbPolicies to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListServiceLbPoliciesResponse` Indicates that this is a continuation of a prior `ListRouters` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the ServiceLbPolicies should be listed, specified in the format `projects/{project}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/serviceLbPolicies",
+"response": {
+"$ref": "ListServiceLbPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single ServiceLbPolicy.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/serviceLbPolicies/{serviceLbPoliciesId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.serviceLbPolicies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the ServiceLbPolicy resource. It matches pattern `projects/{project}/locations/{location}/serviceLbPolicies/{service_lb_policy_name}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/serviceLbPolicies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the ServiceLbPolicy resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "ServiceLbPolicy"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"tcpRoutes": {
+"methods": {
+"create": {
+"description": "Creates a new TcpRoute in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tcpRoutes",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.tcpRoutes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the TcpRoute. Must be in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"tcpRouteId": {
+"description": "Required. Short name of the TcpRoute resource to be created.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tcpRoutes",
+"request": {
+"$ref": "TcpRoute"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single TcpRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tcpRoutes/{tcpRoutesId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.tcpRoutes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the TcpRoute to delete. Must be in the format `projects/*/locations/global/tcpRoutes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tcpRoutes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single TcpRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tcpRoutes/{tcpRoutesId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.tcpRoutes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the TcpRoute to get. Must be in the format `projects/*/locations/global/tcpRoutes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tcpRoutes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "TcpRoute"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists TcpRoute in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tcpRoutes",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.tcpRoutes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of TcpRoutes to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListTcpRoutesResponse` Indicates that this is a continuation of a prior `ListTcpRoutes` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the TcpRoutes should be listed, specified in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tcpRoutes",
+"response": {
+"$ref": "ListTcpRoutesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single TcpRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tcpRoutes/{tcpRoutesId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.tcpRoutes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the TcpRoute resource. It matches pattern `projects/*/locations/global/tcpRoutes/tcp_route_name>`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tcpRoutes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the TcpRoute resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "TcpRoute"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"tlsRoutes": {
+"methods": {
+"create": {
+"description": "Creates a new TlsRoute in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tlsRoutes",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.tlsRoutes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the TlsRoute. Must be in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"tlsRouteId": {
+"description": "Required. Short name of the TlsRoute resource to be created.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tlsRoutes",
+"request": {
+"$ref": "TlsRoute"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single TlsRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tlsRoutes/{tlsRoutesId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.tlsRoutes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the TlsRoute to delete. Must be in the format `projects/*/locations/global/tlsRoutes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tlsRoutes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single TlsRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tlsRoutes/{tlsRoutesId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.tlsRoutes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the TlsRoute to get. Must be in the format `projects/*/locations/global/tlsRoutes/*`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tlsRoutes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "TlsRoute"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists TlsRoute in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tlsRoutes",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.tlsRoutes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of TlsRoutes to return per call.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListTlsRoutesResponse` Indicates that this is a continuation of a prior `ListTlsRoutes` call, and that the system should return the next page of data.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the TlsRoutes should be listed, specified in the format `projects/*/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tlsRoutes",
+"response": {
+"$ref": "ListTlsRoutesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single TlsRoute.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tlsRoutes/{tlsRoutesId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.tlsRoutes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the TlsRoute resource. It matches pattern `projects/*/locations/global/tlsRoutes/tls_route_name>`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tlsRoutes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Field mask is used to specify the fields to be overwritten in the TlsRoute resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "TlsRoute"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"wasmPlugins": {
+"methods": {
+"create": {
+"description": "Creates a new `WasmPlugin` resource in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.wasmPlugins.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the `WasmPlugin` resource. Must be in the format `projects/{project}/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"wasmPluginId": {
+"description": "Required. User-provided ID of the `WasmPlugin` resource to be created.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/wasmPlugins",
+"request": {
+"$ref": "WasmPlugin"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified `WasmPlugin` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins/{wasmPluginsId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.wasmPlugins.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the `WasmPlugin` resource to delete. Must be in the format `projects/{project}/locations/global/wasmPlugins/{wasm_plugin}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/wasmPlugins/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of the specified `WasmPlugin` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins/{wasmPluginsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.wasmPlugins.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the `WasmPlugin` resource to get. Must be in the format `projects/{project}/locations/global/wasmPlugins/{wasm_plugin}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/wasmPlugins/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Determines how much data must be returned in the response. See [AIP-157](https://google.aip.dev/157).",
+"enum": [
+"WASM_PLUGIN_VIEW_UNSPECIFIED",
+"WASM_PLUGIN_VIEW_BASIC",
+"WASM_PLUGIN_VIEW_FULL"
+],
+"enumDescriptions": [
+"Unspecified value. Do not use.",
+"If specified in the `GET` request for a `WasmPlugin` resource, the server's response includes just the `WasmPlugin` resource.",
+"If specified in the `GET` request for a `WasmPlugin` resource, the server's response includes the `WasmPlugin` resource with all its versions."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "WasmPlugin"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists `WasmPlugin` resources in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.wasmPlugins.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of `WasmPlugin` resources to return per call. If not specified, at most 50 `WasmPlugin` resources are returned. The maximum value is 1000; values above 1000 are coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListWasmPluginsResponse` call. Indicates that this is a continuation of a prior `ListWasmPlugins` call, and that the next page of data is to be returned.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location from which the `WasmPlugin` resources are listed, specified in the following format: `projects/{project}/locations/global`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/wasmPlugins",
+"response": {
+"$ref": "ListWasmPluginsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of the specified `WasmPlugin` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins/{wasmPluginsId}",
+"httpMethod": "PATCH",
+"id": "networkservices.projects.locations.wasmPlugins.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. Name of the `WasmPlugin` resource in the following format: `projects/{project}/locations/{location}/wasmPlugins/{wasm_plugin}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/wasmPlugins/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Optional. Used to specify the fields to be overwritten in the `WasmPlugin` resource by the update. The fields specified in the `update_mask` field are relative to the resource, not the full request. An omitted `update_mask` field is treated as an implied `update_mask` field equivalent to all fields that are populated (that have a non-empty value). The `update_mask` field supports a special value `*`, which means that each field in the given `WasmPlugin` resource (including the empty ones) replaces the current value.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"request": {
+"$ref": "WasmPlugin"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"versions": {
+"methods": {
+"create": {
+"description": "Creates a new `WasmPluginVersion` resource in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins/{wasmPluginsId}/versions",
+"httpMethod": "POST",
+"id": "networkservices.projects.locations.wasmPlugins.versions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource of the `WasmPluginVersion` resource. Must be in the format `projects/{project}/locations/global/wasmPlugins/{wasm_plugin}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/wasmPlugins/[^/]+$",
+"required": true,
+"type": "string"
+},
+"wasmPluginVersionId": {
+"description": "Required. User-provided ID of the `WasmPluginVersion` resource to be created.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+parent}/versions",
+"request": {
+"$ref": "WasmPluginVersion"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified `WasmPluginVersion` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins/{wasmPluginsId}/versions/{versionsId}",
+"httpMethod": "DELETE",
+"id": "networkservices.projects.locations.wasmPlugins.versions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the `WasmPluginVersion` resource to delete. Must be in the format `projects/{project}/locations/global/wasmPlugins/{wasm_plugin}/versions/{wasm_plugin_version}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/wasmPlugins/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of the specified `WasmPluginVersion` resource.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins/{wasmPluginsId}/versions/{versionsId}",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.wasmPlugins.versions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. A name of the `WasmPluginVersion` resource to get. Must be in the format `projects/{project}/locations/global/wasmPlugins/{wasm_plugin}/versions/{wasm_plugin_version}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/wasmPlugins/[^/]+/versions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "WasmPluginVersion"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists `WasmPluginVersion` resources in a given project and location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/wasmPlugins/{wasmPluginsId}/versions",
+"httpMethod": "GET",
+"id": "networkservices.projects.locations.wasmPlugins.versions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Maximum number of `WasmPluginVersion` resources to return per call. If not specified, at most 50 `WasmPluginVersion` resources are returned. The maximum value is 1000; values above 1000 are coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The value returned by the last `ListWasmPluginVersionsResponse` call. Indicates that this is a continuation of a prior `ListWasmPluginVersions` call, and that the next page of data is to be returned.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The `WasmPlugin` resource whose `WasmPluginVersion`s are listed, specified in the following format: `projects/{project}/locations/global/wasmPlugins/{wasm_plugin}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/wasmPlugins/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/versions",
+"response": {
+"$ref": "ListWasmPluginVersionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241118",
+"rootUrl": "https://networkservices.googleapis.com/",
+"schemas": {
+"AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuthzExtension": {
+"description": "`AuthzExtension` is a resource that allows traffic forwarding to a callout backend service to make an authorization decision.",
+"id": "AuthzExtension",
+"properties": {
+"authority": {
+"description": "Required. The `:authority` header in the gRPC request sent from Envoy to the extension service.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A human-readable description of the resource.",
+"type": "string"
+},
+"failOpen": {
+"description": "Optional. Determines how the proxy behaves if the call to the extension fails or times out. When set to `TRUE`, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to `FALSE` or the default setting of `FALSE` is used, one of the following happens: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer. * If response headers have been delivered, then the HTTP stream to the downstream client is reset.",
+"type": "boolean"
+},
+"forwardHeaders": {
+"description": "Optional. List of the HTTP headers to forward to the extension (from the client). If omitted, all headers are sent. Each element is a string indicating the header name.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of labels associated with the `AuthzExtension` resource. The format must comply with [the requirements for labels](/compute/docs/labeling-resources#requirements) for Google Cloud resources.",
+"type": "object"
+},
+"loadBalancingScheme": {
+"description": "Required. All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service).",
+"enum": [
+"LOAD_BALANCING_SCHEME_UNSPECIFIED",
+"INTERNAL_MANAGED",
+"EXTERNAL_MANAGED"
+],
+"enumDescriptions": [
+"Default value. Do not use.",
+"Signifies that this is used for Internal HTTP(S) Load Balancing.",
+"Signifies that this is used for External Managed HTTP(S) Load Balancing."
+],
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. The metadata provided here is included as part of the `metadata_context` (of type `google.protobuf.Struct`) in the `ProcessingRequest` message sent to the extension server. The metadata is available under the namespace `com.google.authz_extension.`. The following variables are supported in the metadata Struct: `{forwarding_rule_id}` - substituted with the forwarding rule's fully qualified resource name.",
+"type": "object"
+},
+"name": {
+"description": "Required. Identifier. Name of the `AuthzExtension` resource in the following format: `projects/{project}/locations/{location}/authzExtensions/{authz_extension}`.",
+"type": "string"
+},
+"service": {
+"description": "Required. The reference to the service that runs the extension. To configure a callout extension, `service` must be a fully-qualified reference to a [backend service](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices) in the format: `https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}`.",
+"type": "string"
+},
+"timeout": {
+"description": "Required. Specifies the timeout for each individual message on the stream. The timeout must be between 10-10000 milliseconds.",
+"format": "google-duration",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"wireFormat": {
+"description": "Optional. The format of communication supported by the callout extension. If not specified, the default is `EXT_PROC_GRPC`.",
+"enum": [
+"WIRE_FORMAT_UNSPECIFIED",
+"EXT_PROC_GRPC"
+],
+"enumDescriptions": [
+"Not specified.",
+"The extension service uses ExtProc GRPC API over a gRPC stream. This is the default value if the wire format is not specified. The backend service for the extension must use HTTP2 or H2C as the protocol. All `supported_events` for a client request will be sent as part of the same gRPC stream."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "Binding",
+"properties": {
+"condition": {
+"$ref": "Expr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"EndpointMatcher": {
+"description": "A definition of a matcher that selects endpoints to which the policies should be applied.",
+"id": "EndpointMatcher",
+"properties": {
+"metadataLabelMatcher": {
+"$ref": "EndpointMatcherMetadataLabelMatcher",
+"description": "The matcher is based on node metadata presented by xDS clients."
+}
+},
+"type": "object"
+},
+"EndpointMatcherMetadataLabelMatcher": {
+"description": "The matcher that is based on node metadata presented by xDS clients.",
+"id": "EndpointMatcherMetadataLabelMatcher",
+"properties": {
+"metadataLabelMatchCriteria": {
+"description": "Specifies how matching should be done. Supported values are: MATCH_ANY: At least one of the Labels specified in the matcher should match the metadata presented by xDS client. MATCH_ALL: The metadata presented by the xDS client should contain all of the labels specified here. The selection is determined based on the best match. For example, suppose there are three EndpointPolicy resources P1, P2 and P3 and if P1 has a the matcher as MATCH_ANY , P2 has MATCH_ALL , and P3 has MATCH_ALL . If a client with label connects, the config from P1 will be selected. If a client with label connects, the config from P2 will be selected. If a client with label connects, the config from P3 will be selected. If there is more than one best match, (for example, if a config P4 with selector exists and if a client with label connects), pick up the one with older creation time.",
+"enum": [
+"METADATA_LABEL_MATCH_CRITERIA_UNSPECIFIED",
+"MATCH_ANY",
+"MATCH_ALL"
+],
+"enumDescriptions": [
+"Default value. Should not be used.",
+"At least one of the Labels specified in the matcher should match the metadata presented by xDS client.",
+"The metadata presented by the xDS client should contain all of the labels specified here."
+],
+"type": "string"
+},
+"metadataLabels": {
+"description": "The list of label value pairs that must match labels in the provided metadata based on filterMatchCriteria This list can have at most 64 entries. The list can be empty if the match criteria is MATCH_ANY, to specify a wildcard match (i.e this matches any client).",
+"items": {
+"$ref": "EndpointMatcherMetadataLabelMatcherMetadataLabels"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"EndpointMatcherMetadataLabelMatcherMetadataLabels": {
+"description": "Defines a name-pair value for a single label.",
+"id": "EndpointMatcherMetadataLabelMatcherMetadataLabels",
+"properties": {
+"labelName": {
+"description": "Required. Label name presented as key in xDS Node Metadata.",
+"type": "string"
+},
+"labelValue": {
+"description": "Required. Label value presented as value corresponding to the above key, in xDS Node Metadata.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EndpointPolicy": {
+"description": "EndpointPolicy is a resource that helps apply desired configuration on the endpoints that match specific criteria. For example, this resource can be used to apply \"authentication config\" an all endpoints that serve on port 8080.",
+"id": "EndpointPolicy",
+"properties": {
+"authorizationPolicy": {
+"description": "Optional. This field specifies the URL of AuthorizationPolicy resource that applies authorization policies to the inbound traffic at the matched endpoints. Refer to Authorization. If this field is not specified, authorization is disabled(no authz checks) for this endpoint.",
+"type": "string"
+},
+"clientTlsPolicy": {
+"description": "Optional. A URL referring to a ClientTlsPolicy resource. ClientTlsPolicy can be set to specify the authentication for traffic from the proxy to the actual endpoints. More specifically, it is applied to the outgoing traffic from the proxy to the endpoint. This is typically used for sidecar model where the proxy identifies itself as endpoint to the control plane, with the connection between sidecar and endpoint requiring authentication. If this field is not set, authentication is disabled(open). Applicable only when EndpointPolicyType is SIDECAR_PROXY.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"endpointMatcher": {
+"$ref": "EndpointMatcher",
+"description": "Required. A matcher that selects endpoints to which the policies should be applied."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the EndpointPolicy resource.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. Name of the EndpointPolicy resource. It matches pattern `projects/{project}/locations/global/endpointPolicies/{endpoint_policy}`.",
+"type": "string"
+},
+"serverTlsPolicy": {
+"description": "Optional. A URL referring to ServerTlsPolicy resource. ServerTlsPolicy is used to determine the authentication policy to be applied to terminate the inbound traffic at the identified backends. If this field is not set, authentication is disabled(open) for this endpoint.",
+"type": "string"
+},
+"trafficPortSelector": {
+"$ref": "TrafficPortSelector",
+"description": "Optional. Port selector for the (matched) endpoints. If no port selector is provided, the matched config is applied to all ports."
+},
+"type": {
+"description": "Required. The type of endpoint policy. This is primarily used to validate the configuration.",
+"enum": [
+"ENDPOINT_POLICY_TYPE_UNSPECIFIED",
+"SIDECAR_PROXY",
+"GRPC_SERVER"
+],
+"enumDescriptions": [
+"Default value. Must not be used.",
+"Represents a proxy deployed as a sidecar.",
+"Represents a proxyless gRPC backend."
+],
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Expr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "Expr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExtensionChain": {
+"description": "A single extension chain wrapper that contains the match conditions and extensions to execute.",
+"id": "ExtensionChain",
+"properties": {
+"extensions": {
+"description": "Required. A set of extensions to execute for the matching request. At least one extension is required. Up to 3 extensions can be defined for each extension chain for `LbTrafficExtension` resource. `LbRouteExtension` chains are limited to 1 extension per extension chain.",
+"items": {
+"$ref": "ExtensionChainExtension"
+},
+"type": "array"
+},
+"matchCondition": {
+"$ref": "ExtensionChainMatchCondition",
+"description": "Required. Conditions under which this chain is invoked for a request."
+},
+"name": {
+"description": "Required. The name for this extension chain. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExtensionChainExtension": {
+"description": "A single extension in the chain to execute for the matching request.",
+"id": "ExtensionChainExtension",
+"properties": {
+"authority": {
+"description": "Optional. The `:authority` header in the gRPC request sent from Envoy to the extension service. Required for Callout extensions. This field is not supported for plugin extensions. Setting it results in a validation error.",
+"type": "string"
+},
+"failOpen": {
+"description": "Optional. Determines how the proxy behaves if the call to the extension fails or times out. When set to `TRUE`, request or response processing continues without error. Any subsequent extensions in the extension chain are also executed. When set to `FALSE` or the default setting of `FALSE` is used, one of the following happens: * If response headers have not been delivered to the downstream client, a generic 500 error is returned to the client. The error response can be tailored by configuring a custom error response in the load balancer. * If response headers have been delivered, then the HTTP stream to the downstream client is reset.",
+"type": "boolean"
+},
+"forwardHeaders": {
+"description": "Optional. List of the HTTP headers to forward to the extension (from the client or backend). If omitted, all headers are sent. Each element is a string indicating the header name.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. The metadata provided here is included as part of the `metadata_context` (of type `google.protobuf.Struct`) in the `ProcessingRequest` message sent to the extension server. The metadata is available under the namespace `com.google....`. For example: `com.google.lb_traffic_extension.lbtrafficextension1.chain1.ext1`. The following variables are supported in the metadata: `{forwarding_rule_id}` - substituted with the forwarding rule's fully qualified resource name. This field is not supported for plugin extensions. Setting it results in a validation error.",
+"type": "object"
+},
+"name": {
+"description": "Required. The name for this extension. The name is logged as part of the HTTP request logs. The name must conform with RFC-1034, is restricted to lower-cased letters, numbers and hyphens, and can have a maximum length of 63 characters. Additionally, the first character must be a letter and the last a letter or a number.",
+"type": "string"
+},
+"service": {
+"description": "Required. The reference to the service that runs the extension. To configure a callout extension, `service` must be a fully-qualified reference to a [backend service](https://cloud.google.com/compute/docs/reference/rest/v1/backendServices) in the format: `https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/backendServices/{backendService}` or `https://www.googleapis.com/compute/v1/projects/{project}/global/backendServices/{backendService}`. To configure a plugin extension, `service` must be a reference to a [`WasmPlugin` resource](https://cloud.google.com/service-extensions/docs/reference/rest/v1beta1/projects.locations.wasmPlugins) in the format: `projects/{project}/locations/{location}/wasmPlugins/{plugin}` or `//networkservices.googleapis.com/projects/{project}/locations/{location}/wasmPlugins/{wasmPlugin}`. Plugin extensions are currently supported for the `LbTrafficExtension` and the `LbRouteExtension` resources.",
+"type": "string"
+},
+"supportedEvents": {
+"description": "Optional. A set of events during request or response processing for which this extension is called. This field is required for the `LbTrafficExtension` resource. It must not be set for the `LbRouteExtension` resource, otherwise a validation error is returned.",
+"items": {
+"enum": [
+"EVENT_TYPE_UNSPECIFIED",
+"REQUEST_HEADERS",
+"REQUEST_BODY",
+"RESPONSE_HEADERS",
+"RESPONSE_BODY",
+"REQUEST_TRAILERS",
+"RESPONSE_TRAILERS"
+],
+"enumDescriptions": [
+"Unspecified value. Do not use.",
+"If included in `supported_events`, the extension is called when the HTTP request headers arrive.",
+"If included in `supported_events`, the extension is called when the HTTP request body arrives.",
+"If included in `supported_events`, the extension is called when the HTTP response headers arrive.",
+"If included in `supported_events`, the extension is called when the HTTP response body arrives.",
+"If included in `supported_events`, the extension is called when the HTTP request trailers arrives.",
+"If included in `supported_events`, the extension is called when the HTTP response trailers arrives."
+],
+"type": "string"
+},
+"type": "array"
+},
+"timeout": {
+"description": "Optional. Specifies the timeout for each individual message on the stream. The timeout must be between `10`-`1000` milliseconds. Required for callout extensions. This field is not supported for plugin extensions. Setting it results in a validation error.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExtensionChainMatchCondition": {
+"description": "Conditions under which this chain is invoked for a request.",
+"id": "ExtensionChainMatchCondition",
+"properties": {
+"celExpression": {
+"description": "Required. A Common Expression Language (CEL) expression that is used to match requests for which the extension chain is executed. For more information, see [CEL matcher language reference](https://cloud.google.com/service-extensions/docs/cel-matcher-language-reference).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Gateway": {
+"description": "Gateway represents the configuration for a proxy, typically a load balancer. It captures the ip:port over which the services are exposed by the proxy, along with any policy configurations. Routes have reference to to Gateways to dictate how requests should be routed by this Gateway. Next id: 33",
+"id": "Gateway",
+"properties": {
+"addresses": {
+"description": "Optional. Zero or one IPv4 or IPv6 address on which the Gateway will receive the traffic. When no address is provided, an IP from the subnetwork is allocated This field only applies to gateways of type 'SECURE_WEB_GATEWAY'. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"certificateUrls": {
+"description": "Optional. A fully-qualified Certificates URL reference. The proxy presents a Certificate (selected based on SNI) when establishing a TLS connection. This feature only applies to gateways of type 'SECURE_WEB_GATEWAY'.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"envoyHeaders": {
+"description": "Optional. Determines if envoy will insert internal debug headers into upstream requests. Other Envoy headers may still be injected. By default, envoy will not insert any debug headers.",
+"enum": [
+"ENVOY_HEADERS_UNSPECIFIED",
+"NONE",
+"DEBUG_HEADERS"
+],
+"enumDescriptions": [
+"Defaults to NONE.",
+"Suppress envoy debug headers.",
+"Envoy will insert default internal debug headers into upstream requests: x-envoy-attempt-count x-envoy-is-timeout-retry x-envoy-expected-rq-timeout-ms x-envoy-original-path x-envoy-upstream-stream-duration-ms"
+],
+"type": "string"
+},
+"gatewaySecurityPolicy": {
+"description": "Optional. A fully-qualified GatewaySecurityPolicy URL reference. Defines how a server should apply security policy to inbound (VM to Proxy) initiated connections. For example: `projects/*/locations/*/gatewaySecurityPolicies/swg-policy`. This policy is specific to gateways of type 'SECURE_WEB_GATEWAY'.",
+"type": "string"
+},
+"ipVersion": {
+"description": "Optional. The IP Version that will be used by this gateway. Valid options are IPV4 or IPV6. Default is IPV4.",
+"enum": [
+"IP_VERSION_UNSPECIFIED",
+"IPV4",
+"IPV6"
+],
+"enumDescriptions": [
+"The type when IP version is not specified. Defaults to IPV4.",
+"The type for IP version 4.",
+"The type for IP version 6."
+],
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the Gateway resource.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. Name of the Gateway resource. It matches pattern `projects/*/locations/*/gateways/`.",
+"type": "string"
+},
+"network": {
+"description": "Optional. The relative resource name identifying the VPC network that is using this configuration. For example: `projects/*/global/networks/network-1`. Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY'.",
+"type": "string"
+},
+"ports": {
+"description": "Required. One or more port numbers (1-65535), on which the Gateway will receive traffic. The proxy binds to the specified ports. Gateways of type 'SECURE_WEB_GATEWAY' are limited to 1 port. Gateways of type 'OPEN_MESH' listen on 0.0.0.0 for IPv4 and :: for IPv6 and support multiple ports.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"routingMode": {
+"description": "Optional. The routing mode of the Gateway. This field is configurable only for gateways of type SECURE_WEB_GATEWAY. This field is required for gateways of type SECURE_WEB_GATEWAY.",
+"enum": [
+"EXPLICIT_ROUTING_MODE",
+"NEXT_HOP_ROUTING_MODE"
+],
+"enumDescriptions": [
+"The routing mode is explicit; clients are configured to send traffic through the gateway. This is the default routing mode.",
+"The routing mode is next-hop. Clients are unaware of the gateway, and a route (advanced route or other route type) can be configured to direct traffic from client to gateway. The gateway then acts as a next-hop to the destination."
+],
+"type": "string"
+},
+"scope": {
+"description": "Optional. Scope determines how configuration across multiple Gateway instances are merged. The configuration for multiple Gateway instances with the same scope will be merged as presented as a single coniguration to the proxy/load balancer. Max length 64 characters. Scope should start with a letter and can only have letters, numbers, hyphens.",
+"type": "string"
+},
+"selfLink": {
+"description": "Output only. Server-defined URL of this resource",
+"readOnly": true,
+"type": "string"
+},
+"serverTlsPolicy": {
+"description": "Optional. A fully-qualified ServerTLSPolicy URL reference. Specifies how TLS traffic is terminated. If empty, TLS termination is disabled.",
+"type": "string"
+},
+"subnetwork": {
+"description": "Optional. The relative resource name identifying the subnetwork in which this SWG is allocated. For example: `projects/*/regions/us-central1/subnetworks/network-1` Currently, this field is specific to gateways of type 'SECURE_WEB_GATEWAY\".",
+"type": "string"
+},
+"type": {
+"description": "Immutable. The type of the customer managed gateway. This field is required. If unspecified, an error is returned.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"OPEN_MESH",
+"SECURE_WEB_GATEWAY"
+],
+"enumDescriptions": [
+"The type of the customer managed gateway is unspecified.",
+"The type of the customer managed gateway is TrafficDirector Open Mesh.",
+"The type of the customer managed gateway is SecureWebGateway (SWG)."
+],
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GatewayRouteView": {
+"description": "GatewayRouteView defines view-only resource for Routes to a Gateway",
+"id": "GatewayRouteView",
+"properties": {
+"name": {
+"description": "Output only. Identifier. Full path name of the GatewayRouteView resource. Format: projects/{project_number}/locations/{location}/gateways/{gateway_name}/routeViews/{route_view_name}",
+"readOnly": true,
+"type": "string"
+},
+"routeId": {
+"description": "Output only. The resource id for the route.",
+"readOnly": true,
+"type": "string"
+},
+"routeLocation": {
+"description": "Output only. Location where the route exists.",
+"readOnly": true,
+"type": "string"
+},
+"routeProjectNumber": {
+"description": "Output only. Project number where the route exists.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"routeType": {
+"description": "Output only. Type of the route: HttpRoute,GrpcRoute,TcpRoute, or TlsRoute",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrpcRoute": {
+"description": "GrpcRoute is the resource defining how gRPC traffic routed by a Mesh or Gateway resource is routed.",
+"id": "GrpcRoute",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"gateways": {
+"description": "Optional. Gateways defines a list of gateways this GrpcRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"hostnames": {
+"description": "Required. Service hostnames with an optional port for which this route describes traffic. Format: [:] Hostname is the fully qualified domain name of a network host. This matches the RFC 1123 definition of a hostname with 2 notable exceptions: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateway must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same route, it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`. If a port is specified, then gRPC clients must use the channel URI with the port to match this rule (i.e. \"xds:///service:123\"), otherwise they must supply the URI without a port (i.e. \"xds:///service\").",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the GrpcRoute resource.",
+"type": "object"
+},
+"meshes": {
+"description": "Optional. Meshes defines a list of meshes this GrpcRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "Identifier. Name of the GrpcRoute resource. It matches pattern `projects/*/locations/global/grpcRoutes/`",
+"type": "string"
+},
+"rules": {
+"description": "Required. A list of detailed rules defining how to route traffic. Within a single GrpcRoute, the GrpcRoute.RouteAction associated with the first matching GrpcRoute.RouteRule will be executed. At least one rule must be supplied.",
+"items": {
+"$ref": "GrpcRouteRouteRule"
+},
+"type": "array"
+},
+"selfLink": {
+"description": "Output only. Server-defined URL of this resource",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrpcRouteDestination": {
+"description": "The destination to which traffic will be routed.",
+"id": "GrpcRouteDestination",
+"properties": {
+"serviceName": {
+"description": "Required. The URL of a destination service to which to route traffic. Must refer to either a BackendService or ServiceDirectoryService.",
+"type": "string"
+},
+"weight": {
+"description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GrpcRouteFaultInjectionPolicy": {
+"description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests.",
+"id": "GrpcRouteFaultInjectionPolicy",
+"properties": {
+"abort": {
+"$ref": "GrpcRouteFaultInjectionPolicyAbort",
+"description": "The specification for aborting to client requests."
+},
+"delay": {
+"$ref": "GrpcRouteFaultInjectionPolicyDelay",
+"description": "The specification for injecting delay to client requests."
+}
+},
+"type": "object"
+},
+"GrpcRouteFaultInjectionPolicyAbort": {
+"description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
+"id": "GrpcRouteFaultInjectionPolicyAbort",
+"properties": {
+"httpStatus": {
+"description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"percentage": {
+"description": "The percentage of traffic which will be aborted. The value must be between [0, 100]",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GrpcRouteFaultInjectionPolicyDelay": {
+"description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
+"id": "GrpcRouteFaultInjectionPolicyDelay",
+"properties": {
+"fixedDelay": {
+"description": "Specify a fixed delay before forwarding the request.",
+"format": "google-duration",
+"type": "string"
+},
+"percentage": {
+"description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GrpcRouteHeaderMatch": {
+"description": "A match against a collection of headers.",
+"id": "GrpcRouteHeaderMatch",
+"properties": {
+"key": {
+"description": "Required. The key of the header.",
+"type": "string"
+},
+"type": {
+"description": "Optional. Specifies how to match against the value of the header. If not specified, a default value of EXACT is used.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"EXACT",
+"REGULAR_EXPRESSION"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Will only match the exact value provided.",
+"Will match paths conforming to the prefix specified by value. RE2 syntax is supported."
+],
+"type": "string"
+},
+"value": {
+"description": "Required. The value of the header.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrpcRouteMethodMatch": {
+"description": "Specifies a match against a method.",
+"id": "GrpcRouteMethodMatch",
+"properties": {
+"caseSensitive": {
+"description": "Optional. Specifies that matches are case sensitive. The default value is true. case_sensitive must not be used with a type of REGULAR_EXPRESSION.",
+"type": "boolean"
+},
+"grpcMethod": {
+"description": "Required. Name of the method to match against. If unspecified, will match all methods.",
+"type": "string"
+},
+"grpcService": {
+"description": "Required. Name of the service to match against. If unspecified, will match all services.",
+"type": "string"
+},
+"type": {
+"description": "Optional. Specifies how to match against the name. If not specified, a default value of \"EXACT\" is used.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"EXACT",
+"REGULAR_EXPRESSION"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Will only match the exact name provided.",
+"Will interpret grpc_method and grpc_service as regexes. RE2 syntax is supported."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrpcRouteRetryPolicy": {
+"description": "The specifications for retries. Specifies one or more conditions for which this retry rule applies. Valid values are:",
+"id": "GrpcRouteRetryPolicy",
+"properties": {
+"numRetries": {
+"description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1.",
+"format": "uint32",
+"type": "integer"
+},
+"retryConditions": {
+"description": "- connect-failure: Router will retry on failures connecting to Backend Services, for example due to connection timeouts. - refused-stream: Router will retry if the backend service resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry. - cancelled: Router will retry if the gRPC status code in the response header is set to cancelled - deadline-exceeded: Router will retry if the gRPC status code in the response header is set to deadline-exceeded - resource-exhausted: Router will retry if the gRPC status code in the response header is set to resource-exhausted - unavailable: Router will retry if the gRPC status code in the response header is set to unavailable",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GrpcRouteRouteAction": {
+"description": "Specifies how to route matched traffic.",
+"id": "GrpcRouteRouteAction",
+"properties": {
+"destinations": {
+"description": "Optional. The destination services to which traffic should be forwarded. If multiple destinations are specified, traffic will be split between Backend Service(s) according to the weight field of these destinations.",
+"items": {
+"$ref": "GrpcRouteDestination"
+},
+"type": "array"
+},
+"faultInjectionPolicy": {
+"$ref": "GrpcRouteFaultInjectionPolicy",
+"description": "Optional. The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced on a percentage of requests before sending those requests to the destination service. Similarly requests from clients can be aborted by for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
+},
+"idleTimeout": {
+"description": "Optional. Specifies the idle timeout for the selected route. The idle timeout is defined as the period in which there are no bytes sent or received on either the upstream or downstream connection. If not set, the default idle timeout is 1 hour. If set to 0s, the timeout will be disabled.",
+"format": "google-duration",
+"type": "string"
+},
+"retryPolicy": {
+"$ref": "GrpcRouteRetryPolicy",
+"description": "Optional. Specifies the retry policy associated with this route."
+},
+"statefulSessionAffinity": {
+"$ref": "GrpcRouteStatefulSessionAffinityPolicy",
+"description": "Optional. Specifies cookie-based stateful session affinity."
+},
+"timeout": {
+"description": "Optional. Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrpcRouteRouteMatch": {
+"description": "Criteria for matching traffic. A RouteMatch will be considered to match when all supplied fields match.",
+"id": "GrpcRouteRouteMatch",
+"properties": {
+"headers": {
+"description": "Optional. Specifies a collection of headers to match.",
+"items": {
+"$ref": "GrpcRouteHeaderMatch"
+},
+"type": "array"
+},
+"method": {
+"$ref": "GrpcRouteMethodMatch",
+"description": "Optional. A gRPC method to match against. If this field is empty or omitted, will match all methods."
+}
+},
+"type": "object"
+},
+"GrpcRouteRouteRule": {
+"description": "Describes how to route traffic.",
+"id": "GrpcRouteRouteRule",
+"properties": {
+"action": {
+"$ref": "GrpcRouteRouteAction",
+"description": "Required. A detailed rule defining how to route traffic. This field is required."
+},
+"matches": {
+"description": "Optional. Matches define conditions used for matching the rule against incoming gRPC requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic.",
+"items": {
+"$ref": "GrpcRouteRouteMatch"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GrpcRouteStatefulSessionAffinityPolicy": {
+"description": "The specification for cookie-based stateful session affinity where the date plane supplies a \u201csession cookie\u201d with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
+"id": "GrpcRouteStatefulSessionAffinityPolicy",
+"properties": {
+"cookieTtl": {
+"description": "Required. The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpRoute": {
+"description": "HttpRoute is the resource defining how HTTP traffic should be routed by a Mesh or Gateway resource.",
+"id": "HttpRoute",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"gateways": {
+"description": "Optional. Gateways defines a list of gateways this HttpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"hostnames": {
+"description": "Required. Hostnames define a set of hosts that should match against the HTTP host header to select a HttpRoute to process the request. Hostname is the fully qualified domain name of a network host, as defined by RFC 1123 with the exception that: - IPs are not allowed. - A hostname may be prefixed with a wildcard label (`*.`). The wildcard label must appear by itself as the first label. Hostname can be \"precise\" which is a domain name without the terminating dot of a network host (e.g. `foo.example.com`) or \"wildcard\", which is a domain name prefixed with a single wildcard label (e.g. `*.example.com`). Note that as per RFC1035 and RFC1123, a label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character. No other punctuation is allowed. The routes associated with a Mesh or Gateways must have unique hostnames. If you attempt to attach multiple routes with conflicting hostnames, the configuration will be rejected. For example, while it is acceptable for routes for the hostnames `*.foo.bar.com` and `*.bar.com` to be associated with the same Mesh (or Gateways under the same scope), it is not possible to associate two routes both with `*.bar.com` or both with `bar.com`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the HttpRoute resource.",
+"type": "object"
+},
+"meshes": {
+"description": "Optional. Meshes defines a list of meshes this HttpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "Identifier. Name of the HttpRoute resource. It matches pattern `projects/*/locations/global/httpRoutes/http_route_name>`.",
+"type": "string"
+},
+"rules": {
+"description": "Required. Rules that define how traffic is routed and handled. Rules will be matched sequentially based on the RouteMatch specified for the rule.",
+"items": {
+"$ref": "HttpRouteRouteRule"
+},
+"type": "array"
+},
+"selfLink": {
+"description": "Output only. Server-defined URL of this resource",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpRouteCorsPolicy": {
+"description": "The Specification for allowing client side cross-origin requests.",
+"id": "HttpRouteCorsPolicy",
+"properties": {
+"allowCredentials": {
+"description": "In response to a preflight request, setting this to true indicates that the actual request can include user credentials. This translates to the Access-Control-Allow-Credentials header. Default value is false.",
+"type": "boolean"
+},
+"allowHeaders": {
+"description": "Specifies the content for Access-Control-Allow-Headers header.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"allowMethods": {
+"description": "Specifies the content for Access-Control-Allow-Methods header.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"allowOriginRegexes": {
+"description": "Specifies the regular expression patterns that match allowed origins. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"allowOrigins": {
+"description": "Specifies the list of origins that will be allowed to do CORS requests. An origin is allowed if it matches either an item in allow_origins or an item in allow_origin_regexes.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"disabled": {
+"description": "If true, the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect.",
+"type": "boolean"
+},
+"exposeHeaders": {
+"description": "Specifies the content for Access-Control-Expose-Headers header.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"maxAge": {
+"description": "Specifies how long result of a preflight request can be cached in seconds. This translates to the Access-Control-Max-Age header.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpRouteDestination": {
+"description": "Specifications of a destination to which the request should be routed to.",
+"id": "HttpRouteDestination",
+"properties": {
+"requestHeaderModifier": {
+"$ref": "HttpRouteHeaderModifier",
+"description": "Optional. The specification for modifying the headers of a matching request prior to delivery of the request to the destination. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
+},
+"responseHeaderModifier": {
+"$ref": "HttpRouteHeaderModifier",
+"description": "Optional. The specification for modifying the headers of a response prior to sending the response back to the client. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
+},
+"serviceName": {
+"description": "The URL of a BackendService to route traffic to.",
+"type": "string"
+},
+"weight": {
+"description": "Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"HttpRouteFaultInjectionPolicy": {
+"description": "The specification for fault injection introduced into traffic to test the resiliency of clients to destination service failure. As part of fault injection, when clients send requests to a destination, delays can be introduced by client proxy on a percentage of requests before sending those requests to the destination service. Similarly requests can be aborted by client proxy for a percentage of requests.",
+"id": "HttpRouteFaultInjectionPolicy",
+"properties": {
+"abort": {
+"$ref": "HttpRouteFaultInjectionPolicyAbort",
+"description": "The specification for aborting to client requests."
+},
+"delay": {
+"$ref": "HttpRouteFaultInjectionPolicyDelay",
+"description": "The specification for injecting delay to client requests."
+}
+},
+"type": "object"
+},
+"HttpRouteFaultInjectionPolicyAbort": {
+"description": "Specification of how client requests are aborted as part of fault injection before being sent to a destination.",
+"id": "HttpRouteFaultInjectionPolicyAbort",
+"properties": {
+"httpStatus": {
+"description": "The HTTP status code used to abort the request. The value must be between 200 and 599 inclusive.",
+"format": "int32",
+"type": "integer"
+},
+"percentage": {
+"description": "The percentage of traffic which will be aborted. The value must be between [0, 100]",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"HttpRouteFaultInjectionPolicyDelay": {
+"description": "Specification of how client requests are delayed as part of fault injection before being sent to a destination.",
+"id": "HttpRouteFaultInjectionPolicyDelay",
+"properties": {
+"fixedDelay": {
+"description": "Specify a fixed delay before forwarding the request.",
+"format": "google-duration",
+"type": "string"
+},
+"percentage": {
+"description": "The percentage of traffic on which delay will be injected. The value must be between [0, 100]",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"HttpRouteHeaderMatch": {
+"description": "Specifies how to select a route rule based on HTTP request headers.",
+"id": "HttpRouteHeaderMatch",
+"properties": {
+"exactMatch": {
+"description": "The value of the header should match exactly the content of exact_match.",
+"type": "string"
+},
+"header": {
+"description": "The name of the HTTP header to match against.",
+"type": "string"
+},
+"invertMatch": {
+"description": "If specified, the match result will be inverted before checking. Default value is set to false.",
+"type": "boolean"
+},
+"prefixMatch": {
+"description": "The value of the header must start with the contents of prefix_match.",
+"type": "string"
+},
+"presentMatch": {
+"description": "A header with header_name must exist. The match takes place whether or not the header has a value.",
+"type": "boolean"
+},
+"rangeMatch": {
+"$ref": "HttpRouteHeaderMatchIntegerRange",
+"description": "If specified, the rule will match if the request header value is within the range."
+},
+"regexMatch": {
+"description": "The value of the header must match the regular expression specified in regex_match. For regular expression grammar, please see: https://github.com/google/re2/wiki/Syntax",
+"type": "string"
+},
+"suffixMatch": {
+"description": "The value of the header must end with the contents of suffix_match.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpRouteHeaderMatchIntegerRange": {
+"description": "Represents an integer value range.",
+"id": "HttpRouteHeaderMatchIntegerRange",
+"properties": {
+"end": {
+"description": "End of the range (exclusive)",
+"format": "int32",
+"type": "integer"
+},
+"start": {
+"description": "Start of the range (inclusive)",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"HttpRouteHeaderModifier": {
+"description": "The specification for modifying HTTP header in HTTP request and HTTP response.",
+"id": "HttpRouteHeaderModifier",
+"properties": {
+"add": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Add the headers with given map where key is the name of the header, value is the value of the header.",
+"type": "object"
+},
+"remove": {
+"description": "Remove headers (matching by header names) specified in the list.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"set": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Completely overwrite/replace the headers with given map where key is the name of the header, value is the value of the header.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"HttpRouteHttpDirectResponse": {
+"description": "Static HTTP response object to be returned.",
+"id": "HttpRouteHttpDirectResponse",
+"properties": {
+"bytesBody": {
+"description": "Optional. Response body as bytes. Maximum body size is 4096B.",
+"format": "byte",
+"type": "string"
+},
+"status": {
+"description": "Required. Status to return as part of HTTP Response. Must be a positive integer.",
+"format": "int32",
+"type": "integer"
+},
+"stringBody": {
+"description": "Optional. Response body as a string. Maximum body length is 1024 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpRouteQueryParameterMatch": {
+"description": "Specifications to match a query parameter in the request.",
+"id": "HttpRouteQueryParameterMatch",
+"properties": {
+"exactMatch": {
+"description": "The value of the query parameter must exactly match the contents of exact_match. Only one of exact_match, regex_match, or present_match must be set.",
+"type": "string"
+},
+"presentMatch": {
+"description": "Specifies that the QueryParameterMatcher matches if request contains query parameter, irrespective of whether the parameter has a value or not. Only one of exact_match, regex_match, or present_match must be set.",
+"type": "boolean"
+},
+"queryParameter": {
+"description": "The name of the query parameter to match.",
+"type": "string"
+},
+"regexMatch": {
+"description": "The value of the query parameter must match the regular expression specified by regex_match. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of exact_match, regex_match, or present_match must be set.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpRouteRedirect": {
+"description": "The specification for redirecting traffic.",
+"id": "HttpRouteRedirect",
+"properties": {
+"hostRedirect": {
+"description": "The host that will be used in the redirect response instead of the one that was supplied in the request.",
+"type": "string"
+},
+"httpsRedirect": {
+"description": "If set to true, the URL scheme in the redirected request is set to https. If set to false, the URL scheme of the redirected request will remain the same as that of the request. The default is set to false.",
+"type": "boolean"
+},
+"pathRedirect": {
+"description": "The path that will be used in the redirect response instead of the one that was supplied in the request. path_redirect can not be supplied together with prefix_redirect. Supply one alone or neither. If neither is supplied, the path of the original request will be used for the redirect.",
+"type": "string"
+},
+"portRedirect": {
+"description": "The port that will be used in the redirected request instead of the one that was supplied in the request.",
+"format": "int32",
+"type": "integer"
+},
+"prefixRewrite": {
+"description": "Indicates that during redirection, the matched prefix (or path) should be swapped with this value. This option allows URLs be dynamically created based on the request.",
+"type": "string"
+},
+"responseCode": {
+"description": "The HTTP Status code to use for the redirect.",
+"enum": [
+"RESPONSE_CODE_UNSPECIFIED",
+"MOVED_PERMANENTLY_DEFAULT",
+"FOUND",
+"SEE_OTHER",
+"TEMPORARY_REDIRECT",
+"PERMANENT_REDIRECT"
+],
+"enumDescriptions": [
+"Default value",
+"Corresponds to 301.",
+"Corresponds to 302.",
+"Corresponds to 303.",
+"Corresponds to 307. In this case, the request method will be retained.",
+"Corresponds to 308. In this case, the request method will be retained."
+],
+"type": "string"
+},
+"stripQuery": {
+"description": "if set to true, any accompanying query portion of the original URL is removed prior to redirecting the request. If set to false, the query portion of the original URL is retained. The default is set to false.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"HttpRouteRequestMirrorPolicy": {
+"description": "Specifies the policy on how requests are shadowed to a separate mirrored destination service. The proxy does not wait for responses from the shadow service. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow.",
+"id": "HttpRouteRequestMirrorPolicy",
+"properties": {
+"destination": {
+"$ref": "HttpRouteDestination",
+"description": "The destination the requests will be mirrored to. The weight of the destination will be ignored."
+},
+"mirrorPercent": {
+"description": "Optional. The percentage of requests to get mirrored to the desired destination.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"HttpRouteRetryPolicy": {
+"description": "The specifications for retries.",
+"id": "HttpRouteRetryPolicy",
+"properties": {
+"numRetries": {
+"description": "Specifies the allowed number of retries. This number must be > 0. If not specified, default to 1.",
+"format": "int32",
+"type": "integer"
+},
+"perTryTimeout": {
+"description": "Specifies a non-zero timeout per retry attempt.",
+"format": "google-duration",
+"type": "string"
+},
+"retryConditions": {
+"description": "Specifies one or more conditions when this retry policy applies. Valid values are: 5xx: Proxy will attempt a retry if the destination service responds with any 5xx response code, of if the destination service does not respond at all, example: disconnect, reset, read timeout, connection failure and refused streams. gateway-error: Similar to 5xx, but only applies to response codes 502, 503, 504. reset: Proxy will attempt a retry if the destination service does not respond at all (disconnect/reset/read timeout) connect-failure: Proxy will retry on failures connecting to destination for example due to connection timeouts. retriable-4xx: Proxy will retry fro retriable 4xx response codes. Currently the only retriable error supported is 409. refused-stream: Proxy will retry if the destination resets the stream with a REFUSED_STREAM error code. This reset type indicates that it is safe to retry.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"HttpRouteRouteAction": {
+"description": "The specifications for routing traffic and applying associated policies.",
+"id": "HttpRouteRouteAction",
+"properties": {
+"corsPolicy": {
+"$ref": "HttpRouteCorsPolicy",
+"description": "The specification for allowing client side cross-origin requests."
+},
+"destinations": {
+"description": "The destination to which traffic should be forwarded.",
+"items": {
+"$ref": "HttpRouteDestination"
+},
+"type": "array"
+},
+"directResponse": {
+"$ref": "HttpRouteHttpDirectResponse",
+"description": "Optional. Static HTTP Response object to be returned regardless of the request."
+},
+"faultInjectionPolicy": {
+"$ref": "HttpRouteFaultInjectionPolicy",
+"description": "The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure. As part of fault injection, when clients send requests to a backend service, delays can be introduced on a percentage of requests before sending those requests to the backend service. Similarly requests from clients can be aborted for a percentage of requests. timeout and retry_policy will be ignored by clients that are configured with a fault_injection_policy"
+},
+"idleTimeout": {
+"description": "Optional. Specifies the idle timeout for the selected route. The idle timeout is defined as the period in which there are no bytes sent or received on either the upstream or downstream connection. If not set, the default idle timeout is 1 hour. If set to 0s, the timeout will be disabled.",
+"format": "google-duration",
+"type": "string"
+},
+"redirect": {
+"$ref": "HttpRouteRedirect",
+"description": "If set, the request is directed as configured by this field."
+},
+"requestHeaderModifier": {
+"$ref": "HttpRouteHeaderModifier",
+"description": "The specification for modifying the headers of a matching request prior to delivery of the request to the destination. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
+},
+"requestMirrorPolicy": {
+"$ref": "HttpRouteRequestMirrorPolicy",
+"description": "Specifies the policy on how requests intended for the routes destination are shadowed to a separate mirrored destination. Proxy will not wait for the shadow destination to respond before returning the response. Prior to sending traffic to the shadow service, the host/authority header is suffixed with -shadow."
+},
+"responseHeaderModifier": {
+"$ref": "HttpRouteHeaderModifier",
+"description": "The specification for modifying the headers of a response prior to sending the response back to the client. If HeaderModifiers are set on both the Destination and the RouteAction, they will be merged. Conflicts between the two will not be resolved on the configuration."
+},
+"retryPolicy": {
+"$ref": "HttpRouteRetryPolicy",
+"description": "Specifies the retry policy associated with this route."
+},
+"statefulSessionAffinity": {
+"$ref": "HttpRouteStatefulSessionAffinityPolicy",
+"description": "Optional. Specifies cookie-based stateful session affinity."
+},
+"timeout": {
+"description": "Specifies the timeout for selected route. Timeout is computed from the time the request has been fully processed (i.e. end of stream) up until the response has been completely processed. Timeout includes all retries.",
+"format": "google-duration",
+"type": "string"
+},
+"urlRewrite": {
+"$ref": "HttpRouteURLRewrite",
+"description": "The specification for rewrite URL before forwarding requests to the destination."
+}
+},
+"type": "object"
+},
+"HttpRouteRouteMatch": {
+"description": "RouteMatch defines specifications used to match requests. If multiple match types are set, this RouteMatch will match if ALL type of matches are matched.",
+"id": "HttpRouteRouteMatch",
+"properties": {
+"fullPathMatch": {
+"description": "The HTTP request path value should exactly match this value. Only one of full_path_match, prefix_match, or regex_match should be used.",
+"type": "string"
+},
+"headers": {
+"description": "Specifies a list of HTTP request headers to match against. ALL of the supplied headers must be matched.",
+"items": {
+"$ref": "HttpRouteHeaderMatch"
+},
+"type": "array"
+},
+"ignoreCase": {
+"description": "Specifies if prefix_match and full_path_match matches are case sensitive. The default value is false.",
+"type": "boolean"
+},
+"prefixMatch": {
+"description": "The HTTP request path value must begin with specified prefix_match. prefix_match must begin with a /. Only one of full_path_match, prefix_match, or regex_match should be used.",
+"type": "string"
+},
+"queryParameters": {
+"description": "Specifies a list of query parameters to match against. ALL of the query parameters must be matched.",
+"items": {
+"$ref": "HttpRouteQueryParameterMatch"
+},
+"type": "array"
+},
+"regexMatch": {
+"description": "The HTTP request path value must satisfy the regular expression specified by regex_match after removing any query parameters and anchor supplied with the original URL. For regular expression grammar, please see https://github.com/google/re2/wiki/Syntax Only one of full_path_match, prefix_match, or regex_match should be used.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpRouteRouteRule": {
+"description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
+"id": "HttpRouteRouteRule",
+"properties": {
+"action": {
+"$ref": "HttpRouteRouteAction",
+"description": "The detailed rule defining how to route matched traffic."
+},
+"matches": {
+"description": "A list of matches define conditions used for matching the rule against incoming HTTP requests. Each match is independent, i.e. this rule will be matched if ANY one of the matches is satisfied. If no matches field is specified, this rule will unconditionally match traffic. If a default rule is desired to be configured, add a rule with no matches specified to the end of the rules list.",
+"items": {
+"$ref": "HttpRouteRouteMatch"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"HttpRouteStatefulSessionAffinityPolicy": {
+"description": "The specification for cookie-based stateful session affinity where the date plane supplies a \u201csession cookie\u201d with the name \"GSSA\" which encodes a specific destination host and each request containing that cookie will be directed to that host as long as the destination host remains up and healthy. The gRPC proxyless mesh library or sidecar proxy will manage the session cookie but the client application code is responsible for copying the cookie from each RPC in the session to the next.",
+"id": "HttpRouteStatefulSessionAffinityPolicy",
+"properties": {
+"cookieTtl": {
+"description": "Required. The cookie TTL value for the Set-Cookie header generated by the data plane. The lifetime of the cookie may be set to a value from 1 to 86400 seconds (24 hours) inclusive.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"HttpRouteURLRewrite": {
+"description": "The specification for modifying the URL of the request, prior to forwarding the request to the destination.",
+"id": "HttpRouteURLRewrite",
+"properties": {
+"hostRewrite": {
+"description": "Prior to forwarding the request to the selected destination, the requests host header is replaced by this value.",
+"type": "string"
+},
+"pathPrefixRewrite": {
+"description": "Prior to forwarding the request to the selected destination, the matching portion of the requests path is replaced by this value.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LbRouteExtension": {
+"description": "`LbRouteExtension` is a resource that lets you control where traffic is routed to for a given request.",
+"id": "LbRouteExtension",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A human-readable description of the resource.",
+"type": "string"
+},
+"extensionChains": {
+"description": "Required. A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.",
+"items": {
+"$ref": "ExtensionChain"
+},
+"type": "array"
+},
+"forwardingRules": {
+"description": "Required. A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. There can be only one `LbRouteExtension` resource per forwarding rule.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of labels associated with the `LbRouteExtension` resource. The format must comply with [the requirements for labels](https://cloud.google.com/compute/docs/labeling-resources#requirements) for Google Cloud resources.",
+"type": "object"
+},
+"loadBalancingScheme": {
+"description": "Required. All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service).",
+"enum": [
+"LOAD_BALANCING_SCHEME_UNSPECIFIED",
+"INTERNAL_MANAGED",
+"EXTERNAL_MANAGED"
+],
+"enumDescriptions": [
+"Default value. Do not use.",
+"Signifies that this is used for Internal HTTP(S) Load Balancing.",
+"Signifies that this is used for External Managed HTTP(S) Load Balancing."
+],
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. The metadata provided here is included as part of the `metadata_context` (of type `google.protobuf.Struct`) in the `ProcessingRequest` message sent to the extension server. The metadata is available under the namespace `com.google.lb_route_extension.`. The following variables are supported in the metadata Struct: `{forwarding_rule_id}` - substituted with the forwarding rule's fully qualified resource name. This field is not supported for plugin extensions. Setting it results in a validation error.",
+"type": "object"
+},
+"name": {
+"description": "Required. Identifier. Name of the `LbRouteExtension` resource in the following format: `projects/{project}/locations/{location}/lbRouteExtensions/{lb_route_extension}`.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"LbTrafficExtension": {
+"description": "`LbTrafficExtension` is a resource that lets the extension service modify the headers and payloads of both requests and responses without impacting the choice of backend services or any other security policies associated with the backend service.",
+"id": "LbTrafficExtension",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A human-readable description of the resource.",
+"type": "string"
+},
+"extensionChains": {
+"description": "Required. A set of ordered extension chains that contain the match conditions and extensions to execute. Match conditions for each extension chain are evaluated in sequence for a given request. The first extension chain that has a condition that matches the request is executed. Any subsequent extension chains do not execute. Limited to 5 extension chains per resource.",
+"items": {
+"$ref": "ExtensionChain"
+},
+"type": "array"
+},
+"forwardingRules": {
+"description": "Optional. A list of references to the forwarding rules to which this service extension is attached. At least one forwarding rule is required. There can be only one `LBTrafficExtension` resource per forwarding rule.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of labels associated with the `LbTrafficExtension` resource. The format must comply with [the requirements for labels](https://cloud.google.com/compute/docs/labeling-resources#requirements) for Google Cloud resources.",
+"type": "object"
+},
+"loadBalancingScheme": {
+"description": "Required. All backend services and forwarding rules referenced by this extension must share the same load balancing scheme. Supported values: `INTERNAL_MANAGED`, `EXTERNAL_MANAGED`. For more information, refer to [Backend services overview](https://cloud.google.com/load-balancing/docs/backend-service).",
+"enum": [
+"LOAD_BALANCING_SCHEME_UNSPECIFIED",
+"INTERNAL_MANAGED",
+"EXTERNAL_MANAGED"
+],
+"enumDescriptions": [
+"Default value. Do not use.",
+"Signifies that this is used for Internal HTTP(S) Load Balancing.",
+"Signifies that this is used for External Managed HTTP(S) Load Balancing."
+],
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. The metadata provided here is included in the `ProcessingRequest.metadata_context.filter_metadata` map field. The metadata is available under the key `com.google.lb_traffic_extension.`. The following variables are supported in the metadata: `{forwarding_rule_id}` - substituted with the forwarding rule's fully qualified resource name. This field is not supported for plugin extensions. Setting it results in a validation error.",
+"type": "object"
+},
+"name": {
+"description": "Required. Identifier. Name of the `LbTrafficExtension` resource in the following format: `projects/{project}/locations/{location}/lbTrafficExtensions/{lb_traffic_extension}`.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListAuthzExtensionsResponse": {
+"description": "Message for response to listing `AuthzExtension` resources.",
+"id": "ListAuthzExtensionsResponse",
+"properties": {
+"authzExtensions": {
+"description": "The list of `AuthzExtension` resources.",
+"items": {
+"$ref": "AuthzExtension"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results that the server returns.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListEndpointPoliciesResponse": {
+"description": "Response returned by the ListEndpointPolicies method.",
+"id": "ListEndpointPoliciesResponse",
+"properties": {
+"endpointPolicies": {
+"description": "List of EndpointPolicy resources.",
+"items": {
+"$ref": "EndpointPolicy"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListGatewayRouteViewsResponse": {
+"description": "Response returned by the ListGatewayRouteViews method.",
+"id": "ListGatewayRouteViewsResponse",
+"properties": {
+"gatewayRouteViews": {
+"description": "List of GatewayRouteView resources.",
+"items": {
+"$ref": "GatewayRouteView"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListGatewaysResponse": {
+"description": "Response returned by the ListGateways method.",
+"id": "ListGatewaysResponse",
+"properties": {
+"gateways": {
+"description": "List of Gateway resources.",
+"items": {
+"$ref": "Gateway"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListGrpcRoutesResponse": {
+"description": "Response returned by the ListGrpcRoutes method.",
+"id": "ListGrpcRoutesResponse",
+"properties": {
+"grpcRoutes": {
+"description": "List of GrpcRoute resources.",
+"items": {
+"$ref": "GrpcRoute"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListHttpRoutesResponse": {
+"description": "Response returned by the ListHttpRoutes method.",
+"id": "ListHttpRoutesResponse",
+"properties": {
+"httpRoutes": {
+"description": "List of HttpRoute resources.",
+"items": {
+"$ref": "HttpRoute"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListLbRouteExtensionsResponse": {
+"description": "Message for response to listing `LbRouteExtension` resources.",
+"id": "ListLbRouteExtensionsResponse",
+"properties": {
+"lbRouteExtensions": {
+"description": "The list of `LbRouteExtension` resources.",
+"items": {
+"$ref": "LbRouteExtension"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results that the server returns.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLbTrafficExtensionsResponse": {
+"description": "Message for response to listing `LbTrafficExtension` resources.",
+"id": "ListLbTrafficExtensionsResponse",
+"properties": {
+"lbTrafficExtensions": {
+"description": "The list of `LbTrafficExtension` resources.",
+"items": {
+"$ref": "LbTrafficExtension"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results that the server returns.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMeshRouteViewsResponse": {
+"description": "Response returned by the ListMeshRouteViews method.",
+"id": "ListMeshRouteViewsResponse",
+"properties": {
+"meshRouteViews": {
+"description": "List of MeshRouteView resources.",
+"items": {
+"$ref": "MeshRouteView"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMeshesResponse": {
+"description": "Response returned by the ListMeshes method.",
+"id": "ListMeshesResponse",
+"properties": {
+"meshes": {
+"description": "List of Mesh resources.",
+"items": {
+"$ref": "Mesh"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListServiceBindingsResponse": {
+"description": "Response returned by the ListServiceBindings method.",
+"id": "ListServiceBindingsResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+},
+"serviceBindings": {
+"description": "List of ServiceBinding resources.",
+"items": {
+"$ref": "ServiceBinding"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListServiceLbPoliciesResponse": {
+"description": "Response returned by the ListServiceLbPolicies method.",
+"id": "ListServiceLbPoliciesResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+},
+"serviceLbPolicies": {
+"description": "List of ServiceLbPolicy resources.",
+"items": {
+"$ref": "ServiceLbPolicy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTcpRoutesResponse": {
+"description": "Response returned by the ListTcpRoutes method.",
+"id": "ListTcpRoutesResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+},
+"tcpRoutes": {
+"description": "List of TcpRoute resources.",
+"items": {
+"$ref": "TcpRoute"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTlsRoutesResponse": {
+"description": "Response returned by the ListTlsRoutes method.",
+"id": "ListTlsRoutesResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+},
+"tlsRoutes": {
+"description": "List of TlsRoute resources.",
+"items": {
+"$ref": "TlsRoute"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListWasmPluginVersionsResponse": {
+"description": "Response returned by the `ListWasmPluginVersions` method.",
+"id": "ListWasmPluginVersionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+},
+"wasmPluginVersions": {
+"description": "List of `WasmPluginVersion` resources.",
+"items": {
+"$ref": "WasmPluginVersion"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListWasmPluginsResponse": {
+"description": "Response returned by the `ListWasmPlugins` method.",
+"id": "ListWasmPluginsResponse",
+"properties": {
+"nextPageToken": {
+"description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.",
+"type": "string"
+},
+"wasmPlugins": {
+"description": "List of `WasmPlugin` resources.",
+"items": {
+"$ref": "WasmPlugin"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LoggingConfig": {
+"description": "The configuration for Platform Telemetry logging for Eventarc Advanced resources.",
+"id": "LoggingConfig",
+"properties": {
+"logSeverity": {
+"description": "Optional. The minimum severity of logs that will be sent to Stackdriver/Platform Telemetry. Logs at severitiy \u2265 this value will be sent, unless it is NONE.",
+"enum": [
+"LOG_SEVERITY_UNSPECIFIED",
+"NONE",
+"DEBUG",
+"INFO",
+"NOTICE",
+"WARNING",
+"ERROR",
+"CRITICAL",
+"ALERT",
+"EMERGENCY"
+],
+"enumDescriptions": [
+"Log severity is not specified. This value is treated the same as NONE, but is used to distinguish between no update and update to NONE in update_masks.",
+"Default value at resource creation, presence of this value must be treated as no logging/disable logging.",
+"Debug or trace level logging.",
+"Routine information, such as ongoing status or performance.",
+"Normal but significant events, such as start up, shut down, or a configuration change.",
+"Warning events might cause problems.",
+"Error events are likely to cause problems.",
+"Critical events cause more severe problems or outages.",
+"A person must take action immediately.",
+"One or more systems are unusable."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Mesh": {
+"description": "Mesh represents a logical configuration grouping for workload to workload communication within a service mesh. Routes that point to mesh dictate how requests are routed within this logical mesh boundary.",
+"id": "Mesh",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"envoyHeaders": {
+"description": "Optional. Determines if envoy will insert internal debug headers into upstream requests. Other Envoy headers may still be injected. By default, envoy will not insert any debug headers.",
+"enum": [
+"ENVOY_HEADERS_UNSPECIFIED",
+"NONE",
+"DEBUG_HEADERS"
+],
+"enumDescriptions": [
+"Defaults to NONE.",
+"Suppress envoy debug headers.",
+"Envoy will insert default internal debug headers into upstream requests: x-envoy-attempt-count x-envoy-is-timeout-retry x-envoy-expected-rq-timeout-ms x-envoy-original-path x-envoy-upstream-stream-duration-ms"
+],
+"type": "string"
+},
+"interceptionPort": {
+"description": "Optional. If set to a valid TCP port (1-65535), instructs the SIDECAR proxy to listen on the specified port of localhost (127.0.0.1) address. The SIDECAR proxy will expect all traffic to be redirected to this port regardless of its actual ip:port destination. If unset, a port '15001' is used as the interception port. This is applicable only for sidecar proxy deployments.",
+"format": "int32",
+"type": "integer"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the Mesh resource.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. Name of the Mesh resource. It matches pattern `projects/*/locations/global/meshes/`.",
+"type": "string"
+},
+"selfLink": {
+"description": "Output only. Server-defined URL of this resource",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"MeshRouteView": {
+"description": "MeshRouteView defines view-only resource for Routes to a Mesh",
+"id": "MeshRouteView",
+"properties": {
+"name": {
+"description": "Output only. Identifier. Full path name of the MeshRouteView resource. Format: projects/{project_number}/locations/{location}/meshes/{mesh_name}/routeViews/{route_view_name}",
+"readOnly": true,
+"type": "string"
+},
+"routeId": {
+"description": "Output only. The resource id for the route.",
+"readOnly": true,
+"type": "string"
+},
+"routeLocation": {
+"description": "Output only. Location where the route exists.",
+"readOnly": true,
+"type": "string"
+},
+"routeProjectNumber": {
+"description": "Output only. Project number where the route exists.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"routeType": {
+"description": "Output only. Type of the route: HttpRoute,GrpcRoute,TcpRoute, or TlsRoute",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"RetryFilterPerRouteConfig": {
+"id": "RetryFilterPerRouteConfig",
+"properties": {
+"cryptoKeyName": {
+"description": "The name of the crypto key to use for encrypting event data.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceBinding": {
+"description": "ServiceBinding is the resource that defines a Service Directory Service to be used in a BackendService resource.",
+"id": "ServiceBinding",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the ServiceBinding resource.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. Name of the ServiceBinding resource. It matches pattern `projects/*/locations/global/serviceBindings/service_binding_name`.",
+"type": "string"
+},
+"service": {
+"description": "Required. The full Service Directory Service name of the format projects/*/locations/*/namespaces/*/services/*",
+"type": "string"
+},
+"serviceId": {
+"description": "Output only. The unique identifier of the Service Directory Service against which the Service Binding resource is validated. This is populated when the Service Binding resource is used in another resource (like Backend Service). This is of the UUID4 format.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceLbPolicy": {
+"description": "ServiceLbPolicy holds global load balancing and traffic distribution configuration that can be applied to a BackendService.",
+"id": "ServiceLbPolicy",
+"properties": {
+"autoCapacityDrain": {
+"$ref": "ServiceLbPolicyAutoCapacityDrain",
+"description": "Optional. Configuration to automatically move traffic away for unhealthy IG/NEG for the associated Backend Service."
+},
+"createTime": {
+"description": "Output only. The timestamp when this resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"failoverConfig": {
+"$ref": "ServiceLbPolicyFailoverConfig",
+"description": "Optional. Configuration related to health based failover."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the ServiceLbPolicy resource.",
+"type": "object"
+},
+"loadBalancingAlgorithm": {
+"description": "Optional. The type of load balancing algorithm to be used. The default behavior is WATERFALL_BY_REGION.",
+"enum": [
+"LOAD_BALANCING_ALGORITHM_UNSPECIFIED",
+"SPRAY_TO_WORLD",
+"SPRAY_TO_REGION",
+"WATERFALL_BY_REGION",
+"WATERFALL_BY_ZONE"
+],
+"enumDescriptions": [
+"The type of the loadbalancing algorithm is unspecified.",
+"Balance traffic across all backends across the world proportionally based on capacity.",
+"Direct traffic to the nearest region with endpoints and capacity before spilling over to other regions and spread the traffic from each client to all the MIGs/NEGs in a region.",
+"Direct traffic to the nearest region with endpoints and capacity before spilling over to other regions. All MIGs/NEGs within a region are evenly loaded but each client might not spread the traffic to all the MIGs/NEGs in the region.",
+"Attempt to keep traffic in a single zone closest to the client, before spilling over to other zones."
+],
+"type": "string"
+},
+"name": {
+"description": "Identifier. Name of the ServiceLbPolicy resource. It matches pattern `projects/{project}/locations/{location}/serviceLbPolicies/{service_lb_policy_name}`.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when this resource was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ServiceLbPolicyAutoCapacityDrain": {
+"description": "Option to specify if an unhealthy IG/NEG should be considered for global load balancing and traffic routing.",
+"id": "ServiceLbPolicyAutoCapacityDrain",
+"properties": {
+"enable": {
+"description": "Optional. If set to 'True', an unhealthy IG/NEG will be set as drained. - An IG/NEG is considered unhealthy if less than 25% of the instances/endpoints in the IG/NEG are healthy. - This option will never result in draining more than 50% of the configured IGs/NEGs for the Backend Service.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ServiceLbPolicyFailoverConfig": {
+"description": "Option to specify health based failover behavior. This is not related to Network load balancer FailoverPolicy.",
+"id": "ServiceLbPolicyFailoverConfig",
+"properties": {
+"failoverHealthThreshold": {
+"description": "Optional. The percentage threshold that a load balancer will begin to send traffic to failover backends. If the percentage of endpoints in a MIG/NEG is smaller than this value, traffic would be sent to failover backends if possible. This field should be set to a value between 1 and 99. The default value is 50 for Global external HTTP(S) load balancer (classic) and Proxyless service mesh, and 70 for others.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"SetIamPolicyRequest": {
+"description": "Request message for `SetIamPolicy` method.",
+"id": "SetIamPolicyRequest",
+"properties": {
+"policy": {
+"$ref": "Policy",
+"description": "REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Google Cloud services (such as Projects) might reject them."
+},
+"updateMask": {
+"description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only the fields in the mask will be modified. If no mask is provided, the following default mask is used: `paths: \"bindings, etag\"`",
+"format": "google-fieldmask",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TcpRoute": {
+"description": "TcpRoute is the resource defining how TCP traffic should be routed by a Mesh/Gateway resource.",
+"id": "TcpRoute",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"gateways": {
+"description": "Optional. Gateways defines a list of gateways this TcpRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the TcpRoute resource.",
+"type": "object"
+},
+"meshes": {
+"description": "Optional. Meshes defines a list of meshes this TcpRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "Identifier. Name of the TcpRoute resource. It matches pattern `projects/*/locations/global/tcpRoutes/tcp_route_name>`.",
+"type": "string"
+},
+"rules": {
+"description": "Required. Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match.",
+"items": {
+"$ref": "TcpRouteRouteRule"
+},
+"type": "array"
+},
+"selfLink": {
+"description": "Output only. Server-defined URL of this resource",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"TcpRouteRouteAction": {
+"description": "The specifications for routing traffic and applying associated policies.",
+"id": "TcpRouteRouteAction",
+"properties": {
+"destinations": {
+"description": "Optional. The destination services to which traffic should be forwarded. At least one destination service is required. Only one of route destination or original destination can be set.",
+"items": {
+"$ref": "TcpRouteRouteDestination"
+},
+"type": "array"
+},
+"idleTimeout": {
+"description": "Optional. Specifies the idle timeout for the selected route. The idle timeout is defined as the period in which there are no bytes sent or received on either the upstream or downstream connection. If not set, the default idle timeout is 30 seconds. If set to 0s, the timeout will be disabled.",
+"format": "google-duration",
+"type": "string"
+},
+"originalDestination": {
+"description": "Optional. If true, Router will use the destination IP and port of the original connection as the destination of the request. Default is false. Only one of route destinations or original destination can be set.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"TcpRouteRouteDestination": {
+"description": "Describe the destination for traffic to be routed to.",
+"id": "TcpRouteRouteDestination",
+"properties": {
+"serviceName": {
+"description": "Required. The URL of a BackendService to route traffic to.",
+"type": "string"
+},
+"weight": {
+"description": "Optional. Specifies the proportion of requests forwarded to the backend referenced by the serviceName field. This is computed as: - weight/Sum(weights in this destination list). For non-zero values, there may be some epsilon from the exact proportion defined here depending on the precision an implementation supports. If only one serviceName is specified and it has a weight greater than 0, 100% of the traffic is forwarded to that backend. If weights are specified for any one service name, they need to be specified for all of them. If weights are unspecified for all services, then, traffic is distributed in equal proportions to all of them.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"TcpRouteRouteMatch": {
+"description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
+"id": "TcpRouteRouteMatch",
+"properties": {
+"address": {
+"description": "Required. Must be specified in the CIDR range format. A CIDR range consists of an IP Address and a prefix length to construct the subnet mask. By default, the prefix length is 32 (i.e. matches a single IP address). Only IPV4 addresses are supported. Examples: \"10.0.0.1\" - matches against this exact IP address. \"10.0.0.0/8\" - matches against any IP address within the 10.0.0.0 subnet and 255.255.255.0 mask. \"0.0.0.0/0\" - matches against any IP address'.",
+"type": "string"
+},
+"port": {
+"description": "Required. Specifies the destination port to match against.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TcpRouteRouteRule": {
+"description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
+"id": "TcpRouteRouteRule",
+"properties": {
+"action": {
+"$ref": "TcpRouteRouteAction",
+"description": "Required. The detailed rule defining how to route matched traffic."
+},
+"matches": {
+"description": "Optional. RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
+"items": {
+"$ref": "TcpRouteRouteMatch"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsRequest": {
+"description": "Request message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsRequest",
+"properties": {
+"permissions": {
+"description": "The set of permissions to check for the `resource`. Permissions with wildcards (such as `*` or `storage.*`) are not allowed. For more information see [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TestIamPermissionsResponse": {
+"description": "Response message for `TestIamPermissions` method.",
+"id": "TestIamPermissionsResponse",
+"properties": {
+"permissions": {
+"description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TlsRoute": {
+"description": "TlsRoute defines how traffic should be routed based on SNI and other matching L3 attributes.",
+"id": "TlsRoute",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A free-text description of the resource. Max length 1024 characters.",
+"type": "string"
+},
+"gateways": {
+"description": "Optional. Gateways defines a list of gateways this TlsRoute is attached to, as one of the routing rules to route the requests served by the gateway. Each gateway reference should match the pattern: `projects/*/locations/global/gateways/`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of label tags associated with the TlsRoute resource.",
+"type": "object"
+},
+"meshes": {
+"description": "Optional. Meshes defines a list of meshes this TlsRoute is attached to, as one of the routing rules to route the requests served by the mesh. Each mesh reference should match the pattern: `projects/*/locations/global/meshes/` The attached Mesh should be of a type SIDECAR",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "Identifier. Name of the TlsRoute resource. It matches pattern `projects/*/locations/global/tlsRoutes/tls_route_name>`.",
+"type": "string"
+},
+"rules": {
+"description": "Required. Rules that define how traffic is routed and handled. At least one RouteRule must be supplied. If there are multiple rules then the action taken will be the first rule to match.",
+"items": {
+"$ref": "TlsRouteRouteRule"
+},
+"type": "array"
+},
+"selfLink": {
+"description": "Output only. Server-defined URL of this resource",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"TlsRouteRouteAction": {
+"description": "The specifications for routing traffic and applying associated policies.",
+"id": "TlsRouteRouteAction",
+"properties": {
+"destinations": {
+"description": "Required. The destination services to which traffic should be forwarded. At least one destination service is required.",
+"items": {
+"$ref": "TlsRouteRouteDestination"
+},
+"type": "array"
+},
+"idleTimeout": {
+"description": "Optional. Specifies the idle timeout for the selected route. The idle timeout is defined as the period in which there are no bytes sent or received on either the upstream or downstream connection. If not set, the default idle timeout is 1 hour. If set to 0s, the timeout will be disabled.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TlsRouteRouteDestination": {
+"description": "Describe the destination for traffic to be routed to.",
+"id": "TlsRouteRouteDestination",
+"properties": {
+"serviceName": {
+"description": "Required. The URL of a BackendService to route traffic to.",
+"type": "string"
+},
+"weight": {
+"description": "Optional. Specifies the proportion of requests forwareded to the backend referenced by the service_name field. This is computed as: - weight/Sum(weights in destinations) Weights in all destinations does not need to sum up to 100.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"TlsRouteRouteMatch": {
+"description": "RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"AND\"ed for evaluation. If no routeMatch field is specified, this rule will unconditionally match traffic.",
+"id": "TlsRouteRouteMatch",
+"properties": {
+"alpn": {
+"description": "Optional. ALPN (Application-Layer Protocol Negotiation) to match against. Examples: \"http/1.1\", \"h2\". At least one of sni_host and alpn is required. Up to 5 alpns across all matches can be set.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sniHost": {
+"description": "Optional. SNI (server name indicator) to match against. SNI will be matched against all wildcard domains, i.e. `www.example.com` will be first matched against `www.example.com`, then `*.example.com`, then `*.com.` Partial wildcards are not supported, and values like *w.example.com are invalid. At least one of sni_host and alpn is required. Up to 100 sni hosts across all matches can be set.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TlsRouteRouteRule": {
+"description": "Specifies how to match traffic and how to route traffic when traffic is matched.",
+"id": "TlsRouteRouteRule",
+"properties": {
+"action": {
+"$ref": "TlsRouteRouteAction",
+"description": "Required. The detailed rule defining how to route matched traffic."
+},
+"matches": {
+"description": "Required. RouteMatch defines the predicate used to match requests to a given action. Multiple match types are \"OR\"ed for evaluation.",
+"items": {
+"$ref": "TlsRouteRouteMatch"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"TrafficPortSelector": {
+"description": "Specification of a port-based selector.",
+"id": "TrafficPortSelector",
+"properties": {
+"ports": {
+"description": "Optional. A list of ports. Can be port numbers or port range (example, [80-90] specifies all ports from 80 to 90, including 80 and 90) or named ports or * to specify all ports. If the list is empty, all ports are selected.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"WasmPlugin": {
+"description": "`WasmPlugin` is a resource representing a service executing a customer-provided Wasm module.",
+"id": "WasmPlugin",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A human-readable description of the resource.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of labels associated with the `WasmPlugin` resource. The format must comply with [the following requirements](/compute/docs/labeling-resources#requirements).",
+"type": "object"
+},
+"logConfig": {
+"$ref": "WasmPluginLogConfig",
+"description": "Optional. Specifies the logging options for the activity performed by this plugin. If logging is enabled, plugin logs are exported to Cloud Logging. Note that the settings relate to the logs generated by using logging statements in your Wasm code."
+},
+"mainVersionId": {
+"description": "Optional. The ID of the `WasmPluginVersion` resource that is the currently serving one. The version referred to must be a child of this `WasmPlugin` resource.",
+"type": "string"
+},
+"name": {
+"description": "Identifier. Name of the `WasmPlugin` resource in the following format: `projects/{project}/locations/{location}/wasmPlugins/{wasm_plugin}`.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"usedBy": {
+"description": "Output only. List of all [extensions](https://cloud.google.com/service-extensions/docs/overview) that use this `WasmPlugin` resource.",
+"items": {
+"$ref": "WasmPluginUsedBy"
+},
+"readOnly": true,
+"type": "array"
+},
+"versions": {
+"additionalProperties": {
+"$ref": "WasmPluginVersionDetails"
+},
+"description": "Optional. All versions of this `WasmPlugin` resource in the key-value format. The key is the resource ID, and the value is the `VersionDetails` object. Lets you create or update a `WasmPlugin` resource and its versions in a single request. When the `main_version_id` field is not empty, it must point to one of the `VersionDetails` objects in the map. If provided in a `PATCH` request, the new versions replace the previous set. Any version omitted from the `versions` field is removed. Because the `WasmPluginVersion` resource is immutable, if a `WasmPluginVersion` resource with the same name already exists and differs, the request fails. Note: In a `GET` request, this field is populated only if the field `GetWasmPluginRequest.view` is set to `WASM_PLUGIN_VIEW_FULL`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"WasmPluginLogConfig": {
+"description": "Specifies the logging options for the activity performed by this plugin. If logging is enabled, plugin logs are exported to Cloud Logging.",
+"id": "WasmPluginLogConfig",
+"properties": {
+"enable": {
+"description": "Optional. Specifies whether to enable logging for activity by this plugin. Defaults to `false`.",
+"type": "boolean"
+},
+"minLogLevel": {
+"description": "Non-empty default. Specificies the lowest level of the plugin logs that are exported to Cloud Logging. This setting relates to the logs generated by using logging statements in your Wasm code. This field is can be set only if logging is enabled for the plugin. If the field is not provided when logging is enabled, it is set to `INFO` by default.",
+"enum": [
+"LOG_LEVEL_UNSPECIFIED",
+"TRACE",
+"DEBUG",
+"INFO",
+"WARN",
+"ERROR",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unspecified value. Defaults to `LogLevel.INFO`.",
+"Report logs with TRACE level and above.",
+"Report logs with DEBUG level and above.",
+"Report logs with INFO level and above.",
+"Report logs with WARN level and above.",
+"Report logs with ERROR level and above.",
+"Report logs with CRITICAL level only."
+],
+"type": "string"
+},
+"sampleRate": {
+"description": "Non-empty default. Configures the sampling rate of activity logs, where `1.0` means all logged activity is reported and `0.0` means no activity is reported. A floating point value between `0.0` and `1.0` indicates that a percentage of log messages is stored. The default value when logging is enabled is `1.0`. The value of the field must be between `0` and `1` (inclusive). This field can be specified only if logging is enabled for this plugin.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"WasmPluginUsedBy": {
+"description": "Defines a resource that uses the `WasmPlugin` resource.",
+"id": "WasmPluginUsedBy",
+"properties": {
+"name": {
+"description": "Output only. Full name of the resource https://google.aip.dev/122#full-resource-names, for example `//networkservices.googleapis.com/projects/{project}/locations/{location}/lbRouteExtensions/{extension}`",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"WasmPluginVersion": {
+"description": "A single immutable version of a `WasmPlugin` resource. Defines the Wasm module used and optionally its runtime config.",
+"id": "WasmPluginVersion",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A human-readable description of the resource.",
+"type": "string"
+},
+"imageDigest": {
+"description": "Output only. The resolved digest for the image specified in the `image` field. The digest is resolved during the creation of `WasmPluginVersion` resource. This field holds the digest value, regardless of whether a tag or digest was originally specified in the `image` field.",
+"readOnly": true,
+"type": "string"
+},
+"imageUri": {
+"description": "Optional. URI of the container image containing the plugin, stored in the Artifact Registry. When a new `WasmPluginVersion` resource is created, the digest of the container image is saved in the `image_digest` field. When downloading an image, the digest value is used instead of an image tag.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of labels associated with the `WasmPluginVersion` resource.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. Name of the `WasmPluginVersion` resource in the following format: `projects/{project}/locations/{location}/wasmPlugins/{wasm_plugin}/ versions/{wasm_plugin_version}`.",
+"type": "string"
+},
+"pluginConfigData": {
+"description": "Configuration for the plugin. The configuration is provided to the plugin at runtime through the `ON_CONFIGURE` callback. When a new `WasmPluginVersion` resource is created, the digest of the contents is saved in the `plugin_config_digest` field.",
+"format": "byte",
+"type": "string"
+},
+"pluginConfigDigest": {
+"description": "Output only. This field holds the digest (usually checksum) value for the plugin configuration. The value is calculated based on the contents of `plugin_config_data` or the container image defined by the `plugin_config_uri` field.",
+"readOnly": true,
+"type": "string"
+},
+"pluginConfigUri": {
+"description": "URI of the plugin configuration stored in the Artifact Registry. The configuration is provided to the plugin at runtime through the `ON_CONFIGURE` callback. The container image must contain only a single file with the name `plugin.config`. When a new `WasmPluginVersion` resource is created, the digest of the container image is saved in the `plugin_config_digest` field.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"WasmPluginVersionDetails": {
+"description": "Details of a `WasmPluginVersion` resource to be inlined in the `WasmPlugin` resource.",
+"id": "WasmPluginVersionDetails",
+"properties": {
+"createTime": {
+"description": "Output only. The timestamp when the resource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "Optional. A human-readable description of the resource.",
+"type": "string"
+},
+"imageDigest": {
+"description": "Output only. The resolved digest for the image specified in `image`. The digest is resolved during the creation of a `WasmPluginVersion` resource. This field holds the digest value regardless of whether a tag or digest was originally specified in the `image` field.",
+"readOnly": true,
+"type": "string"
+},
+"imageUri": {
+"description": "Optional. URI of the container image containing the Wasm module, stored in the Artifact Registry. The container image must contain only a single file with the name `plugin.wasm`. When a new `WasmPluginVersion` resource is created, the URI gets resolved to an image digest and saved in the `image_digest` field.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Set of labels associated with the `WasmPluginVersion` resource.",
+"type": "object"
+},
+"pluginConfigData": {
+"description": "Configuration for the plugin. The configuration is provided to the plugin at runtime through the `ON_CONFIGURE` callback. When a new `WasmPluginVersion` version is created, the digest of the contents is saved in the `plugin_config_digest` field.",
+"format": "byte",
+"type": "string"
+},
+"pluginConfigDigest": {
+"description": "Output only. This field holds the digest (usually checksum) value for the plugin configuration. The value is calculated based on the contents of the `plugin_config_data` field or the container image defined by the `plugin_config_uri` field.",
+"readOnly": true,
+"type": "string"
+},
+"pluginConfigUri": {
+"description": "URI of the plugin configuration stored in the Artifact Registry. The configuration is provided to the plugin at runtime through the `ON_CONFIGURE` callback. The container image must contain only a single file with the name `plugin.config`. When a new `WasmPluginVersion` resource is created, the digest of the container image is saved in the `plugin_config_digest` field.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Network Services API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ondemandscanning.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ondemandscanning.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..50aae613f38eb733dc60580b1a61b90de9289b71
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/ondemandscanning.v1.json
@@ -0,0 +1,3005 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://ondemandscanning.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "On-Demand Scanning",
+"description": "A service to scan container images for vulnerabilities.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/container-analysis/docs/on-demand-scanning/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "ondemandscanning:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://ondemandscanning.mtls.googleapis.com/",
+"name": "ondemandscanning",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "ondemandscanning.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "ondemandscanning.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "ondemandscanning.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "ondemandscanning.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"wait": {
+"description": "Waits until the specified long-running operation is done or reaches at most a specified timeout, returning the latest state. If the operation is already done, the latest state is immediately returned. If the timeout specified is greater than the default HTTP/RPC timeout, the HTTP/RPC timeout is used. If the server does not support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Note that this method is on a best-effort basis. It may return the latest state before the specified timeout (including immediately), meaning even an immediate response is no guarantee that the operation is done.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:wait",
+"httpMethod": "POST",
+"id": "ondemandscanning.projects.locations.operations.wait",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to wait on.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"timeout": {
+"description": "The maximum duration to wait before timing out. If left blank, the wait will be at most the time permitted by the underlying HTTP/RPC protocol. If RPC context deadline is also specified, the shorter one will be used.",
+"format": "google-duration",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}:wait",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"scans": {
+"methods": {
+"analyzePackages": {
+"description": "Initiates an analysis of the provided packages.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/scans:analyzePackages",
+"httpMethod": "POST",
+"id": "ondemandscanning.projects.locations.scans.analyzePackages",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent of the resource for which analysis is requested. Format: projects/[project_name]/locations/[location]",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/scans:analyzePackages",
+"request": {
+"$ref": "AnalyzePackagesRequestV1"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"vulnerabilities": {
+"methods": {
+"list": {
+"description": "Lists vulnerabilities resulting from a successfully completed scan.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/scans/{scansId}/vulnerabilities",
+"httpMethod": "GET",
+"id": "ondemandscanning.projects.locations.scans.vulnerabilities.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The number of vulnerabilities to retrieve.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The page token, resulting from a previous call to ListVulnerabilities.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent of the collection of Vulnerabilities being requested. Format: projects/[project_name]/locations/[location]/scans/[scan_id]",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/scans/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/vulnerabilities",
+"response": {
+"$ref": "ListVulnerabilitiesResponseV1"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241209",
+"rootUrl": "https://ondemandscanning.googleapis.com/",
+"schemas": {
+"AliasContext": {
+"description": "An alias to a repo revision.",
+"id": "AliasContext",
+"properties": {
+"kind": {
+"description": "The alias kind.",
+"enum": [
+"KIND_UNSPECIFIED",
+"FIXED",
+"MOVABLE",
+"OTHER"
+],
+"enumDescriptions": [
+"Unknown.",
+"Git tag.",
+"Git branch.",
+"Used to specify non-standard aliases. For example, if a Git repo has a ref named \"refs/foo/bar\"."
+],
+"type": "string"
+},
+"name": {
+"description": "The alias name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalysisCompleted": {
+"description": "Indicates which analysis completed successfully. Multiple types of analysis can be performed on a single resource.",
+"id": "AnalysisCompleted",
+"properties": {
+"analysisType": {
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AnalyzePackagesMetadata": {
+"description": "AnalyzePackagesMetadata contains metadata for an active scan of a container image.",
+"id": "AnalyzePackagesMetadata",
+"properties": {
+"createTime": {
+"description": "When the scan was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"resourceUri": {
+"description": "The resource URI of the container image being scanned.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzePackagesMetadataV1": {
+"description": "AnalyzePackagesMetadata contains metadata for an active scan of a container image.",
+"id": "AnalyzePackagesMetadataV1",
+"properties": {
+"createTime": {
+"description": "When the scan was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"resourceUri": {
+"description": "The resource URI of the container image being scanned.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzePackagesRequestV1": {
+"description": "AnalyzePackagesRequest is the request to analyze a list of packages and create Vulnerability Occurrences for it.",
+"id": "AnalyzePackagesRequestV1",
+"properties": {
+"includeOsvData": {
+"deprecated": true,
+"description": "[DEPRECATED] Whether to include OSV data in the scan. For backwards compatibility reasons, this field can be neither removed nor renamed.",
+"type": "boolean"
+},
+"packages": {
+"description": "The packages to analyze.",
+"items": {
+"$ref": "PackageData"
+},
+"type": "array"
+},
+"resourceUri": {
+"description": "Required. The resource URI of the container image being scanned.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzePackagesResponse": {
+"description": "AnalyzePackagesResponse contains the information necessary to find results for the given scan.",
+"id": "AnalyzePackagesResponse",
+"properties": {
+"scan": {
+"description": "The name of the scan resource created by this successful scan.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalyzePackagesResponseV1": {
+"description": "AnalyzePackagesResponse contains the information necessary to find results for the given scan.",
+"id": "AnalyzePackagesResponseV1",
+"properties": {
+"scan": {
+"description": "The name of the scan resource created by this successful scan.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Artifact": {
+"description": "Artifact describes a build product.",
+"id": "Artifact",
+"properties": {
+"checksum": {
+"description": "Hash or checksum value of a binary, or Docker Registry 2.0 digest of a container.",
+"type": "string"
+},
+"id": {
+"description": "Artifact ID, if any; for container images, this will be a URL by digest like `gcr.io/projectID/imagename@sha256:123456`.",
+"type": "string"
+},
+"names": {
+"description": "Related artifact names. This may be the path to a binary or jar file, or in the case of a container build, the name used to push the container image to Google Container Registry, as presented to `docker push`. Note that a single Artifact ID can have multiple names, for example if two tags are applied to one image.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AttestationOccurrence": {
+"description": "Occurrence that represents a single \"attestation\". The authenticity of an attestation can be verified using the attached signature. If the verifier trusts the public key of the signer, then verifying the signature is sufficient to establish trust. In this circumstance, the authority to which this attestation is attached is primarily useful for lookup (how to find this attestation if you already know the authority and artifact to be verified) and intent (for which authority this attestation was intended to sign.",
+"id": "AttestationOccurrence",
+"properties": {
+"jwts": {
+"description": "One or more JWTs encoding a self-contained attestation. Each JWT encodes the payload that it verifies within the JWT itself. Verifier implementation SHOULD ignore the `serialized_payload` field when verifying these JWTs. If only JWTs are present on this AttestationOccurrence, then the `serialized_payload` SHOULD be left empty. Each JWT SHOULD encode a claim specific to the `resource_uri` of this Occurrence, but this is not validated by Grafeas metadata API implementations. The JWT itself is opaque to Grafeas.",
+"items": {
+"$ref": "Jwt"
+},
+"type": "array"
+},
+"serializedPayload": {
+"description": "Required. The serialized payload that is verified by one or more `signatures`.",
+"format": "byte",
+"type": "string"
+},
+"signatures": {
+"description": "One or more signatures over `serialized_payload`. Verifier implementations should consider this attestation message verified if at least one `signature` verifies `serialized_payload`. See `Signature` in common.proto for more details on signature structure and verification.",
+"items": {
+"$ref": "Signature"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BinarySourceInfo": {
+"id": "BinarySourceInfo",
+"properties": {
+"binaryVersion": {
+"$ref": "PackageVersion",
+"description": "The binary package. This is significant when the source is different than the binary itself. Historically if they've differed, we've stored the name of the source and its version in the package/version fields, but we should also store the binary package info, as that's what's actually installed. See b/175908657#comment15."
+},
+"sourceVersion": {
+"$ref": "PackageVersion",
+"description": "The source package. Similar to the above, this is significant when the source is different than the binary itself. Since the top-level package/version fields are based on an if/else, we need a separate field for both binary and source if we want to know definitively where the data is coming from."
+}
+},
+"type": "object"
+},
+"BuildDefinition": {
+"id": "BuildDefinition",
+"properties": {
+"buildType": {
+"type": "string"
+},
+"externalParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"internalParameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"resolvedDependencies": {
+"items": {
+"$ref": "ResourceDescriptor"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BuildMetadata": {
+"id": "BuildMetadata",
+"properties": {
+"finishedOn": {
+"format": "google-datetime",
+"type": "string"
+},
+"invocationId": {
+"type": "string"
+},
+"startedOn": {
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BuildOccurrence": {
+"description": "Details of a build occurrence.",
+"id": "BuildOccurrence",
+"properties": {
+"inTotoSlsaProvenanceV1": {
+"$ref": "InTotoSlsaProvenanceV1",
+"description": "In-Toto Slsa Provenance V1 represents a slsa provenance meeting the slsa spec, wrapped in an in-toto statement. This allows for direct jsonification of a to-spec in-toto slsa statement with a to-spec slsa provenance."
+},
+"intotoProvenance": {
+"$ref": "InTotoProvenance",
+"description": "Deprecated. See InTotoStatement for the replacement. In-toto Provenance representation as defined in spec."
+},
+"intotoStatement": {
+"$ref": "InTotoStatement",
+"description": "In-toto Statement representation as defined in spec. The intoto_statement can contain any type of provenance. The serialized payload of the statement can be stored and signed in the Occurrence's envelope."
+},
+"provenance": {
+"$ref": "BuildProvenance",
+"description": "The actual provenance for the build."
+},
+"provenanceBytes": {
+"description": "Serialized JSON representation of the provenance, used in generating the build signature in the corresponding build note. After verifying the signature, `provenance_bytes` can be unmarshalled and compared to the provenance to confirm that it is unchanged. A base64-encoded string representation of the provenance bytes is used for the signature in order to interoperate with openssl which expects this format for signature verification. The serialized form is captured both to avoid ambiguity in how the provenance is marshalled to json as well to prevent incompatibilities with future changes.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BuildProvenance": {
+"description": "Provenance of a build. Contains all information needed to verify the full details about the build from source to completion.",
+"id": "BuildProvenance",
+"properties": {
+"buildOptions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Special options applied to this build. This is a catch-all field where build providers can enter any desired additional details.",
+"type": "object"
+},
+"builderVersion": {
+"description": "Version string of the builder at the time this build was executed.",
+"type": "string"
+},
+"builtArtifacts": {
+"description": "Output of the build.",
+"items": {
+"$ref": "Artifact"
+},
+"type": "array"
+},
+"commands": {
+"description": "Commands requested by the build.",
+"items": {
+"$ref": "Command"
+},
+"type": "array"
+},
+"createTime": {
+"description": "Time at which the build was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"creator": {
+"description": "E-mail address of the user who initiated this build. Note that this was the user's e-mail address at the time the build was initiated; this address may not represent the same end-user for all time.",
+"type": "string"
+},
+"endTime": {
+"description": "Time at which execution of the build was finished.",
+"format": "google-datetime",
+"type": "string"
+},
+"id": {
+"description": "Required. Unique identifier of the build.",
+"type": "string"
+},
+"logsUri": {
+"description": "URI where any logs for this provenance were written.",
+"type": "string"
+},
+"projectId": {
+"description": "ID of the project.",
+"type": "string"
+},
+"sourceProvenance": {
+"$ref": "Source",
+"description": "Details of the Source input to the build."
+},
+"startTime": {
+"description": "Time at which execution of the build was started.",
+"format": "google-datetime",
+"type": "string"
+},
+"triggerId": {
+"description": "Trigger identifier if the build was triggered automatically; empty if not.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BuilderConfig": {
+"id": "BuilderConfig",
+"properties": {
+"id": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"CVSS": {
+"description": "Common Vulnerability Scoring System. For details, see https://www.first.org/cvss/specification-document This is a message we will try to use for storing various versions of CVSS rather than making a separate proto for storing a specific version.",
+"id": "CVSS",
+"properties": {
+"attackComplexity": {
+"enum": [
+"ATTACK_COMPLEXITY_UNSPECIFIED",
+"ATTACK_COMPLEXITY_LOW",
+"ATTACK_COMPLEXITY_HIGH",
+"ATTACK_COMPLEXITY_MEDIUM"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"attackVector": {
+"description": "Base Metrics Represents the intrinsic characteristics of a vulnerability that are constant over time and across user environments.",
+"enum": [
+"ATTACK_VECTOR_UNSPECIFIED",
+"ATTACK_VECTOR_NETWORK",
+"ATTACK_VECTOR_ADJACENT",
+"ATTACK_VECTOR_LOCAL",
+"ATTACK_VECTOR_PHYSICAL"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"authentication": {
+"enum": [
+"AUTHENTICATION_UNSPECIFIED",
+"AUTHENTICATION_MULTIPLE",
+"AUTHENTICATION_SINGLE",
+"AUTHENTICATION_NONE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"availabilityImpact": {
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE",
+"IMPACT_PARTIAL",
+"IMPACT_COMPLETE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"baseScore": {
+"description": "The base score is a function of the base metric scores.",
+"format": "float",
+"type": "number"
+},
+"confidentialityImpact": {
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE",
+"IMPACT_PARTIAL",
+"IMPACT_COMPLETE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"exploitabilityScore": {
+"format": "float",
+"type": "number"
+},
+"impactScore": {
+"format": "float",
+"type": "number"
+},
+"integrityImpact": {
+"enum": [
+"IMPACT_UNSPECIFIED",
+"IMPACT_HIGH",
+"IMPACT_LOW",
+"IMPACT_NONE",
+"IMPACT_PARTIAL",
+"IMPACT_COMPLETE"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"privilegesRequired": {
+"enum": [
+"PRIVILEGES_REQUIRED_UNSPECIFIED",
+"PRIVILEGES_REQUIRED_NONE",
+"PRIVILEGES_REQUIRED_LOW",
+"PRIVILEGES_REQUIRED_HIGH"
+],
+"enumDescriptions": [
+"",
+"",
+"",
+""
+],
+"type": "string"
+},
+"scope": {
+"enum": [
+"SCOPE_UNSPECIFIED",
+"SCOPE_UNCHANGED",
+"SCOPE_CHANGED"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"userInteraction": {
+"enum": [
+"USER_INTERACTION_UNSPECIFIED",
+"USER_INTERACTION_NONE",
+"USER_INTERACTION_REQUIRED"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Category": {
+"description": "The category to which the update belongs.",
+"id": "Category",
+"properties": {
+"categoryId": {
+"description": "The identifier of the category.",
+"type": "string"
+},
+"name": {
+"description": "The localized name of the category.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloudRepoSourceContext": {
+"description": "A CloudRepoSourceContext denotes a particular revision in a Google Cloud Source Repo.",
+"id": "CloudRepoSourceContext",
+"properties": {
+"aliasContext": {
+"$ref": "AliasContext",
+"description": "An alias, which may be a branch or tag."
+},
+"repoId": {
+"$ref": "RepoId",
+"description": "The ID of the repo."
+},
+"revisionId": {
+"description": "A revision ID.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Command": {
+"description": "Command describes a step performed as part of the build pipeline.",
+"id": "Command",
+"properties": {
+"args": {
+"description": "Command-line arguments used when executing this command.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"dir": {
+"description": "Working directory (relative to project source root) used when running this command.",
+"type": "string"
+},
+"env": {
+"description": "Environment variables set before running this command.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"id": {
+"description": "Optional unique identifier for this command, used in wait_for to reference this command as a dependency.",
+"type": "string"
+},
+"name": {
+"description": "Required. Name of the command, as presented on the command line, or if the command is packaged as a Docker container, as presented to `docker pull`.",
+"type": "string"
+},
+"waitFor": {
+"description": "The ID(s) of the command(s) that this command depends on.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Completeness": {
+"description": "Indicates that the builder claims certain fields in this message to be complete.",
+"id": "Completeness",
+"properties": {
+"arguments": {
+"description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.",
+"type": "boolean"
+},
+"environment": {
+"description": "If true, the builder claims that recipe.environment is claimed to be complete.",
+"type": "boolean"
+},
+"materials": {
+"description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\".",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ComplianceOccurrence": {
+"description": "An indication that the compliance checks in the associated ComplianceNote were not satisfied for particular resources or a specified reason.",
+"id": "ComplianceOccurrence",
+"properties": {
+"nonComplianceReason": {
+"type": "string"
+},
+"nonCompliantFiles": {
+"items": {
+"$ref": "NonCompliantFile"
+},
+"type": "array"
+},
+"version": {
+"$ref": "ComplianceVersion",
+"description": "The OS and config version the benchmark was run on."
+}
+},
+"type": "object"
+},
+"ComplianceVersion": {
+"description": "Describes the CIS benchmark version that is applicable to a given OS and os version.",
+"id": "ComplianceVersion",
+"properties": {
+"benchmarkDocument": {
+"description": "The name of the document that defines this benchmark, e.g. \"CIS Container-Optimized OS\".",
+"type": "string"
+},
+"cpeUri": {
+"description": "The CPE URI (https://cpe.mitre.org/specification/) this benchmark is applicable to.",
+"type": "string"
+},
+"version": {
+"description": "The version of the benchmark. This is set to the version of the OS-specific CIS document the benchmark is defined in.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DSSEAttestationOccurrence": {
+"description": "Deprecated. Prefer to use a regular Occurrence, and populate the Envelope at the top level of the Occurrence.",
+"id": "DSSEAttestationOccurrence",
+"properties": {
+"envelope": {
+"$ref": "Envelope",
+"description": "If doing something security critical, make sure to verify the signatures in this metadata."
+},
+"statement": {
+"$ref": "InTotoStatement"
+}
+},
+"type": "object"
+},
+"DeploymentOccurrence": {
+"description": "The period during which some deployable was active in a runtime.",
+"id": "DeploymentOccurrence",
+"properties": {
+"address": {
+"description": "Address of the runtime element hosting this deployment.",
+"type": "string"
+},
+"config": {
+"description": "Configuration used to create this deployment.",
+"type": "string"
+},
+"deployTime": {
+"description": "Required. Beginning of the lifetime of this deployment.",
+"format": "google-datetime",
+"type": "string"
+},
+"platform": {
+"description": "Platform hosting this deployment.",
+"enum": [
+"PLATFORM_UNSPECIFIED",
+"GKE",
+"FLEX",
+"CUSTOM"
+],
+"enumDescriptions": [
+"Unknown.",
+"Google Container Engine.",
+"Google App Engine: Flexible Environment.",
+"Custom user-defined platform."
+],
+"type": "string"
+},
+"resourceUri": {
+"description": "Output only. Resource URI for the artifact being deployed taken from the deployable field with the same name.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"undeployTime": {
+"description": "End of the lifetime of this deployment.",
+"format": "google-datetime",
+"type": "string"
+},
+"userEmail": {
+"description": "Identity of the user that triggered this deployment.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DiscoveryOccurrence": {
+"description": "Provides information about the analysis status of a discovered resource.",
+"id": "DiscoveryOccurrence",
+"properties": {
+"analysisCompleted": {
+"$ref": "AnalysisCompleted"
+},
+"analysisError": {
+"description": "Indicates any errors encountered during analysis of a resource. There could be 0 or more of these errors.",
+"items": {
+"$ref": "Status"
+},
+"type": "array"
+},
+"analysisStatus": {
+"description": "The status of discovery for the resource.",
+"enum": [
+"ANALYSIS_STATUS_UNSPECIFIED",
+"PENDING",
+"SCANNING",
+"FINISHED_SUCCESS",
+"COMPLETE",
+"FINISHED_FAILED",
+"FINISHED_UNSUPPORTED"
+],
+"enumDescriptions": [
+"Unknown.",
+"Resource is known but no action has been taken yet.",
+"Resource is being analyzed.",
+"Analysis has finished successfully.",
+"Analysis has completed.",
+"Analysis has finished unsuccessfully, the analysis itself is in a bad state.",
+"The resource is known not to be supported."
+],
+"type": "string"
+},
+"analysisStatusError": {
+"$ref": "Status",
+"description": "When an error is encountered this will contain a LocalizedMessage under details to show to the user. The LocalizedMessage is output only and populated by the API."
+},
+"archiveTime": {
+"description": "Output only. The time occurrences related to this discovery occurrence were archived.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"continuousAnalysis": {
+"description": "Whether the resource is continuously analyzed.",
+"enum": [
+"CONTINUOUS_ANALYSIS_UNSPECIFIED",
+"ACTIVE",
+"INACTIVE"
+],
+"enumDescriptions": [
+"Unknown.",
+"The resource is continuously analyzed.",
+"The resource is ignored for continuous analysis."
+],
+"type": "string"
+},
+"cpe": {
+"description": "The CPE of the resource being scanned.",
+"type": "string"
+},
+"lastScanTime": {
+"description": "The last time this resource was scanned.",
+"format": "google-datetime",
+"type": "string"
+},
+"sbomStatus": {
+"$ref": "SBOMStatus",
+"description": "The status of an SBOM generation."
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Envelope": {
+"description": "MUST match https://github.com/secure-systems-lab/dsse/blob/master/envelope.proto. An authenticated message of arbitrary type.",
+"id": "Envelope",
+"properties": {
+"payload": {
+"format": "byte",
+"type": "string"
+},
+"payloadType": {
+"type": "string"
+},
+"signatures": {
+"items": {
+"$ref": "EnvelopeSignature"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"EnvelopeSignature": {
+"id": "EnvelopeSignature",
+"properties": {
+"keyid": {
+"type": "string"
+},
+"sig": {
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FileHashes": {
+"description": "Container message for hashes of byte content of files, used in source messages to verify integrity of source input to the build.",
+"id": "FileHashes",
+"properties": {
+"fileHash": {
+"description": "Required. Collection of file hashes.",
+"items": {
+"$ref": "Hash"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"FileLocation": {
+"description": "Indicates the location at which a package was found.",
+"id": "FileLocation",
+"properties": {
+"filePath": {
+"description": "For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Fingerprint": {
+"description": "A set of properties that uniquely identify a given Docker image.",
+"id": "Fingerprint",
+"properties": {
+"v1Name": {
+"description": "Required. The layer ID of the final layer in the Docker image's v1 representation.",
+"type": "string"
+},
+"v2Blob": {
+"description": "Required. The ordered list of v2 blobs that represent a given image.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"v2Name": {
+"description": "Output only. The name of the image's v2 blobs computed via: [bottom] := v2_blobbottom := sha256(v2_blob[N] + \" \" + v2_name[N+1]) Only the name of the final blob is kept.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GerritSourceContext": {
+"description": "A SourceContext referring to a Gerrit project.",
+"id": "GerritSourceContext",
+"properties": {
+"aliasContext": {
+"$ref": "AliasContext",
+"description": "An alias, which may be a branch or tag."
+},
+"gerritProject": {
+"description": "The full project name within the host. Projects may be nested, so \"project/subproject\" is a valid project name. The \"repo name\" is the hostURI/project.",
+"type": "string"
+},
+"hostUri": {
+"description": "The URI of a running Gerrit instance.",
+"type": "string"
+},
+"revisionId": {
+"description": "A revision (commit) ID.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GitSourceContext": {
+"description": "A GitSourceContext denotes a particular revision in a third party Git repository (e.g., GitHub).",
+"id": "GitSourceContext",
+"properties": {
+"revisionId": {
+"description": "Git commit hash.",
+"type": "string"
+},
+"url": {
+"description": "Git repository URL.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1FileLocation": {
+"description": "Indicates the location at which a package was found.",
+"id": "GrafeasV1FileLocation",
+"properties": {
+"filePath": {
+"description": "For jars that are contained inside .war files, this filepath can indicate the path to war file combined with the path to jar file.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1SlsaProvenanceZeroTwoSlsaBuilder": {
+"description": "Identifies the entity that executed the recipe, which is trusted to have correctly performed the operation and populated this provenance.",
+"id": "GrafeasV1SlsaProvenanceZeroTwoSlsaBuilder",
+"properties": {
+"id": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1SlsaProvenanceZeroTwoSlsaCompleteness": {
+"description": "Indicates that the builder claims certain fields in this message to be complete.",
+"id": "GrafeasV1SlsaProvenanceZeroTwoSlsaCompleteness",
+"properties": {
+"environment": {
+"type": "boolean"
+},
+"materials": {
+"type": "boolean"
+},
+"parameters": {
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GrafeasV1SlsaProvenanceZeroTwoSlsaConfigSource": {
+"description": "Describes where the config file that kicked off the build came from. This is effectively a pointer to the source where buildConfig came from.",
+"id": "GrafeasV1SlsaProvenanceZeroTwoSlsaConfigSource",
+"properties": {
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+},
+"entryPoint": {
+"type": "string"
+},
+"uri": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1SlsaProvenanceZeroTwoSlsaInvocation": {
+"description": "Identifies the event that kicked off the build.",
+"id": "GrafeasV1SlsaProvenanceZeroTwoSlsaInvocation",
+"properties": {
+"configSource": {
+"$ref": "GrafeasV1SlsaProvenanceZeroTwoSlsaConfigSource"
+},
+"environment": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"GrafeasV1SlsaProvenanceZeroTwoSlsaMaterial": {
+"description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on.",
+"id": "GrafeasV1SlsaProvenanceZeroTwoSlsaMaterial",
+"properties": {
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+},
+"uri": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"GrafeasV1SlsaProvenanceZeroTwoSlsaMetadata": {
+"description": "Other properties of the build.",
+"id": "GrafeasV1SlsaProvenanceZeroTwoSlsaMetadata",
+"properties": {
+"buildFinishedOn": {
+"format": "google-datetime",
+"type": "string"
+},
+"buildInvocationId": {
+"type": "string"
+},
+"buildStartedOn": {
+"format": "google-datetime",
+"type": "string"
+},
+"completeness": {
+"$ref": "GrafeasV1SlsaProvenanceZeroTwoSlsaCompleteness"
+},
+"reproducible": {
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Hash": {
+"description": "Container message for hash values.",
+"id": "Hash",
+"properties": {
+"type": {
+"description": "Required. The type of hash that was performed, e.g. \"SHA-256\".",
+"type": "string"
+},
+"value": {
+"description": "Required. The hash value.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Identity": {
+"description": "The unique identifier of the update.",
+"id": "Identity",
+"properties": {
+"revision": {
+"description": "The revision number of the update.",
+"format": "int32",
+"type": "integer"
+},
+"updateId": {
+"description": "The revision independent identifier of the update.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ImageOccurrence": {
+"description": "Details of the derived image portion of the DockerImage relationship. This image would be produced from a Dockerfile with FROM .",
+"id": "ImageOccurrence",
+"properties": {
+"baseResourceUrl": {
+"description": "Output only. This contains the base image URL for the derived image occurrence.",
+"type": "string"
+},
+"distance": {
+"description": "Output only. The number of layers by which this image differs from the associated image basis.",
+"format": "int32",
+"type": "integer"
+},
+"fingerprint": {
+"$ref": "Fingerprint",
+"description": "Required. The fingerprint of the derived image."
+},
+"layerInfo": {
+"description": "This contains layer-specific metadata, if populated it has length \"distance\" and is ordered with [distance] being the layer immediately following the base image and [1] being the final layer.",
+"items": {
+"$ref": "Layer"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"InTotoProvenance": {
+"id": "InTotoProvenance",
+"properties": {
+"builderConfig": {
+"$ref": "BuilderConfig",
+"description": "required"
+},
+"materials": {
+"description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"metadata": {
+"$ref": "Metadata"
+},
+"recipe": {
+"$ref": "Recipe",
+"description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required"
+}
+},
+"type": "object"
+},
+"InTotoSlsaProvenanceV1": {
+"id": "InTotoSlsaProvenanceV1",
+"properties": {
+"_type": {
+"description": "InToto spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement",
+"type": "string"
+},
+"predicate": {
+"$ref": "SlsaProvenanceV1"
+},
+"predicateType": {
+"type": "string"
+},
+"subject": {
+"items": {
+"$ref": "Subject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"InTotoStatement": {
+"description": "Spec defined at https://github.com/in-toto/attestation/tree/main/spec#statement The serialized InTotoStatement will be stored as Envelope.payload. Envelope.payloadType is always \"application/vnd.in-toto+json\".",
+"id": "InTotoStatement",
+"properties": {
+"_type": {
+"description": "Always `https://in-toto.io/Statement/v0.1`.",
+"type": "string"
+},
+"predicateType": {
+"description": "`https://slsa.dev/provenance/v0.1` for SlsaProvenance.",
+"type": "string"
+},
+"provenance": {
+"$ref": "InTotoProvenance"
+},
+"slsaProvenance": {
+"$ref": "SlsaProvenance"
+},
+"slsaProvenanceZeroTwo": {
+"$ref": "SlsaProvenanceZeroTwo"
+},
+"subject": {
+"items": {
+"$ref": "Subject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Justification": {
+"description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED.",
+"id": "Justification",
+"properties": {
+"details": {
+"description": "Additional details on why this justification was chosen.",
+"type": "string"
+},
+"justificationType": {
+"description": "The justification type for this vulnerability.",
+"enum": [
+"JUSTIFICATION_TYPE_UNSPECIFIED",
+"COMPONENT_NOT_PRESENT",
+"VULNERABLE_CODE_NOT_PRESENT",
+"VULNERABLE_CODE_NOT_IN_EXECUTE_PATH",
+"VULNERABLE_CODE_CANNOT_BE_CONTROLLED_BY_ADVERSARY",
+"INLINE_MITIGATIONS_ALREADY_EXIST"
+],
+"enumDescriptions": [
+"JUSTIFICATION_TYPE_UNSPECIFIED.",
+"The vulnerable component is not present in the product.",
+"The vulnerable code is not present. Typically this case occurs when source code is configured or built in a way that excludes the vulnerable code.",
+"The vulnerable code can not be executed. Typically this case occurs when the product includes the vulnerable code but does not call or use the vulnerable code.",
+"The vulnerable code cannot be controlled by an attacker to exploit the vulnerability.",
+"The product includes built-in protections or features that prevent exploitation of the vulnerability. These built-in protections cannot be subverted by the attacker and cannot be configured or disabled by the user. These mitigations completely prevent exploitation based on known attack vectors."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Jwt": {
+"id": "Jwt",
+"properties": {
+"compactJwt": {
+"description": "The compact encoding of a JWS, which is always three base64 encoded strings joined by periods. For details, see: https://tools.ietf.org/html/rfc7515.html#section-3.1",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LanguagePackageDependency": {
+"description": "Indicates a language package available between this package and the customer's resource artifact.",
+"id": "LanguagePackageDependency",
+"properties": {
+"package": {
+"type": "string"
+},
+"version": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"Layer": {
+"description": "Layer holds metadata specific to a layer of a Docker image.",
+"id": "Layer",
+"properties": {
+"arguments": {
+"description": "The recovered arguments to the Dockerfile directive.",
+"type": "string"
+},
+"directive": {
+"description": "Required. The recovered Dockerfile directive used to construct this layer. See https://docs.docker.com/engine/reference/builder/ for more information.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"License": {
+"description": "License information.",
+"id": "License",
+"properties": {
+"comments": {
+"description": "Comments",
+"type": "string"
+},
+"expression": {
+"description": "Often a single license can be used to represent the licensing terms. Sometimes it is necessary to include a choice of one or more licenses or some combination of license identifiers. Examples: \"LGPL-2.1-only OR MIT\", \"LGPL-2.1-only AND MIT\", \"GPL-2.0-or-later WITH Bison-exception-2.2\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListVulnerabilitiesResponseV1": {
+"description": "ListVulnerabilitiesResponse contains a single page of vulnerabilities resulting from a scan.",
+"id": "ListVulnerabilitiesResponseV1",
+"properties": {
+"nextPageToken": {
+"description": "A page token that can be used in a subsequent call to ListVulnerabilities to continue retrieving results.",
+"type": "string"
+},
+"occurrences": {
+"description": "The list of Vulnerability Occurrences resulting from a scan.",
+"items": {
+"$ref": "Occurrence"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "An occurrence of a particular package installation found within a system's filesystem. E.g., glibc was found in `/var/lib/dpkg/status`.",
+"id": "Location",
+"properties": {
+"cpeUri": {
+"description": "Deprecated. The CPE URI in [CPE format](https://cpe.mitre.org/specification/)",
+"type": "string"
+},
+"path": {
+"description": "The path from which we gathered that this package/version is installed.",
+"type": "string"
+},
+"version": {
+"$ref": "Version",
+"description": "Deprecated. The version installed at this location."
+}
+},
+"type": "object"
+},
+"Maintainer": {
+"id": "Maintainer",
+"properties": {
+"email": {
+"type": "string"
+},
+"kind": {
+"type": "string"
+},
+"name": {
+"type": "string"
+},
+"url": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"Material": {
+"id": "Material",
+"properties": {
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+},
+"uri": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"Metadata": {
+"description": "Other properties of the build.",
+"id": "Metadata",
+"properties": {
+"buildFinishedOn": {
+"description": "The timestamp of when the build completed.",
+"format": "google-datetime",
+"type": "string"
+},
+"buildInvocationId": {
+"description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.",
+"type": "string"
+},
+"buildStartedOn": {
+"description": "The timestamp of when the build started.",
+"format": "google-datetime",
+"type": "string"
+},
+"completeness": {
+"$ref": "Completeness",
+"description": "Indicates that the builder claims certain fields in this message to be complete."
+},
+"reproducible": {
+"description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"NonCompliantFile": {
+"description": "Details about files that caused a compliance check to fail. display_command is a single command that can be used to display a list of non compliant files. When there is no such command, we can also iterate a list of non compliant file using 'path'.",
+"id": "NonCompliantFile",
+"properties": {
+"displayCommand": {
+"description": "Command to display the non-compliant files.",
+"type": "string"
+},
+"path": {
+"description": "Empty if `display_command` is set.",
+"type": "string"
+},
+"reason": {
+"description": "Explains why a file is non compliant for a CIS check.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Occurrence": {
+"description": "An instance of an analysis type that has been found on a resource.",
+"id": "Occurrence",
+"properties": {
+"attestation": {
+"$ref": "AttestationOccurrence",
+"description": "Describes an attestation of an artifact."
+},
+"build": {
+"$ref": "BuildOccurrence",
+"description": "Describes a verifiable build."
+},
+"compliance": {
+"$ref": "ComplianceOccurrence",
+"description": "Describes a compliance violation on a linked resource."
+},
+"createTime": {
+"description": "Output only. The time this occurrence was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"deployment": {
+"$ref": "DeploymentOccurrence",
+"description": "Describes the deployment of an artifact on a runtime."
+},
+"discovery": {
+"$ref": "DiscoveryOccurrence",
+"description": "Describes when a resource was discovered."
+},
+"dsseAttestation": {
+"$ref": "DSSEAttestationOccurrence",
+"description": "Describes an attestation of an artifact using dsse."
+},
+"envelope": {
+"$ref": "Envelope",
+"description": "https://github.com/secure-systems-lab/dsse"
+},
+"image": {
+"$ref": "ImageOccurrence",
+"description": "Describes how this resource derives from the basis in the associated note."
+},
+"kind": {
+"description": "Output only. This explicitly denotes which of the occurrence details are specified. This field can be used as a filter in list requests.",
+"enum": [
+"NOTE_KIND_UNSPECIFIED",
+"VULNERABILITY",
+"BUILD",
+"IMAGE",
+"PACKAGE",
+"DEPLOYMENT",
+"DISCOVERY",
+"ATTESTATION",
+"UPGRADE",
+"COMPLIANCE",
+"DSSE_ATTESTATION",
+"VULNERABILITY_ASSESSMENT",
+"SBOM_REFERENCE"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The note and occurrence represent a package vulnerability.",
+"The note and occurrence assert build provenance.",
+"This represents an image basis relationship.",
+"This represents a package installed via a package manager.",
+"The note and occurrence track deployment events.",
+"The note and occurrence track the initial discovery status of a resource.",
+"This represents a logical \"role\" that can attest to artifacts.",
+"This represents an available package upgrade.",
+"This represents a Compliance Note",
+"This represents a DSSE attestation Note",
+"This represents a Vulnerability Assessment.",
+"This represents an SBOM Reference."
+],
+"type": "string"
+},
+"name": {
+"description": "Output only. The name of the occurrence in the form of `projects/[PROJECT_ID]/occurrences/[OCCURRENCE_ID]`.",
+"type": "string"
+},
+"noteName": {
+"description": "Required. Immutable. The analysis note associated with this occurrence, in the form of `projects/[PROVIDER_ID]/notes/[NOTE_ID]`. This field can be used as a filter in list requests.",
+"type": "string"
+},
+"package": {
+"$ref": "PackageOccurrence",
+"description": "Describes the installation of a package on the linked resource."
+},
+"remediation": {
+"description": "A description of actions that can be taken to remedy the note.",
+"type": "string"
+},
+"resourceUri": {
+"description": "Required. Immutable. A URI that represents the resource for which the occurrence applies. For example, `https://gcr.io/project/image@sha256:123abc` for a Docker image.",
+"type": "string"
+},
+"sbomReference": {
+"$ref": "SBOMReferenceOccurrence",
+"description": "Describes a specific SBOM reference occurrences."
+},
+"updateTime": {
+"description": "Output only. The time this occurrence was last updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"upgrade": {
+"$ref": "UpgradeOccurrence",
+"description": "Describes an available package upgrade on the linked resource."
+},
+"vulnerability": {
+"$ref": "VulnerabilityOccurrence",
+"description": "Describes a security vulnerability."
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"PackageData": {
+"id": "PackageData",
+"properties": {
+"architecture": {
+"description": "The architecture of the package.",
+"type": "string"
+},
+"binarySourceInfo": {
+"description": "A bundle containing the binary and source information.",
+"items": {
+"$ref": "BinarySourceInfo"
+},
+"type": "array"
+},
+"binaryVersion": {
+"$ref": "PackageVersion",
+"description": "DEPRECATED"
+},
+"cpeUri": {
+"description": "The cpe_uri in [cpe format] (https://cpe.mitre.org/specification/) in which the vulnerability may manifest. Examples include distro or storage location for vulnerable jar.",
+"type": "string"
+},
+"dependencyChain": {
+"description": "The dependency chain between this package and the user's artifact. List in order from the customer's package under review first, to the current package last. Inclusive of the original package and the current package.",
+"items": {
+"$ref": "LanguagePackageDependency"
+},
+"type": "array"
+},
+"fileLocation": {
+"description": "The path to the jar file / go binary file.",
+"items": {
+"$ref": "FileLocation"
+},
+"type": "array"
+},
+"hashDigest": {
+"description": "HashDigest stores the SHA512 hash digest of the jar file if the package is of type Maven. This field will be unset for non Maven packages.",
+"type": "string"
+},
+"licenses": {
+"description": "The list of licenses found that are related to a given package. Note that licenses may also be stored on the BinarySourceInfo. If there is no BinarySourceInfo (because there's no concept of source vs binary), then it will be stored here, while if there are BinarySourceInfos, it will be stored there, as one source can have multiple binaries with different licenses.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"maintainer": {
+"$ref": "Maintainer",
+"description": "The maintainer of the package."
+},
+"os": {
+"description": "The OS affected by a vulnerability Used to generate the cpe_uri for OS packages",
+"type": "string"
+},
+"osVersion": {
+"description": "The version of the OS Used to generate the cpe_uri for OS packages",
+"type": "string"
+},
+"package": {
+"description": "The package being analysed for vulnerabilities",
+"type": "string"
+},
+"packageType": {
+"description": "The type of package: os, maven, go, etc.",
+"enum": [
+"PACKAGE_TYPE_UNSPECIFIED",
+"OS",
+"MAVEN",
+"GO",
+"GO_STDLIB",
+"PYPI",
+"NPM",
+"NUGET",
+"RUBYGEMS",
+"RUST",
+"COMPOSER",
+"SWIFT"
+],
+"enumDescriptions": [
+"",
+"Operating System",
+"Java packages from Maven.",
+"Go third-party packages.",
+"Go toolchain + standard library packages.",
+"Python packages.",
+"NPM packages.",
+"Nuget (C#/.NET) packages.",
+"Ruby packges (from RubyGems package manager).",
+"Rust packages from Cargo (Github ecosystem is `RUST`).",
+"PHP packages from Composer package manager.",
+"Swift packages from Swift Package Manager (SwiftPM)."
+],
+"type": "string"
+},
+"patchedCve": {
+"description": "CVEs that this package is no longer vulnerable to go/drydock-dd-custom-binary-scanning",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"sourceVersion": {
+"$ref": "PackageVersion",
+"description": "DEPRECATED"
+},
+"unused": {
+"type": "string"
+},
+"version": {
+"description": "The version of the package being analysed",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PackageIssue": {
+"description": "A detail for a distro and package this vulnerability occurrence was found in and its associated fix (if one is available).",
+"id": "PackageIssue",
+"properties": {
+"affectedCpeUri": {
+"description": "Required. The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability was found in.",
+"type": "string"
+},
+"affectedPackage": {
+"description": "Required. The package this vulnerability was found in.",
+"type": "string"
+},
+"affectedVersion": {
+"$ref": "Version",
+"description": "Required. The version of the package that is installed on the resource affected by this vulnerability."
+},
+"effectiveSeverity": {
+"description": "Output only. The distro or language system assigned severity for this vulnerability when that is available and note provider assigned severity when it is not available.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unknown.",
+"Minimal severity.",
+"Low severity.",
+"Medium severity.",
+"High severity.",
+"Critical severity."
+],
+"readOnly": true,
+"type": "string"
+},
+"fileLocation": {
+"description": "The location at which this package was found.",
+"items": {
+"$ref": "GrafeasV1FileLocation"
+},
+"type": "array"
+},
+"fixAvailable": {
+"description": "Output only. Whether a fix is available for this package.",
+"type": "boolean"
+},
+"fixedCpeUri": {
+"description": "The [CPE URI](https://cpe.mitre.org/specification/) this vulnerability was fixed in. It is possible for this to be different from the affected_cpe_uri.",
+"type": "string"
+},
+"fixedPackage": {
+"description": "The package this vulnerability was fixed in. It is possible for this to be different from the affected_package.",
+"type": "string"
+},
+"fixedVersion": {
+"$ref": "Version",
+"description": "Required. The version of the package this vulnerability was fixed in. Setting this to VersionKind.MAXIMUM means no fix is yet available."
+},
+"packageType": {
+"description": "The type of package (e.g. OS, MAVEN, GO).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PackageOccurrence": {
+"description": "Details on how a particular software package was installed on a system.",
+"id": "PackageOccurrence",
+"properties": {
+"architecture": {
+"description": "Output only. The CPU architecture for which packages in this distribution channel were built. Architecture will be blank for language packages.",
+"enum": [
+"ARCHITECTURE_UNSPECIFIED",
+"X86",
+"X64"
+],
+"enumDescriptions": [
+"Unknown architecture.",
+"X86 architecture.",
+"X64 architecture."
+],
+"readOnly": true,
+"type": "string"
+},
+"cpeUri": {
+"description": "Output only. The cpe_uri in [CPE format](https://cpe.mitre.org/specification/) denoting the package manager version distributing a package. The cpe_uri will be blank for language packages.",
+"readOnly": true,
+"type": "string"
+},
+"license": {
+"$ref": "License",
+"description": "Licenses that have been declared by the authors of the package."
+},
+"location": {
+"description": "All of the places within the filesystem versions of this package have been found.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"name": {
+"description": "Required. Output only. The name of the installed package.",
+"readOnly": true,
+"type": "string"
+},
+"packageType": {
+"description": "Output only. The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).",
+"readOnly": true,
+"type": "string"
+},
+"version": {
+"$ref": "Version",
+"description": "Output only. The version of the package.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"PackageVersion": {
+"id": "PackageVersion",
+"properties": {
+"licenses": {
+"description": "The licenses associated with this package. Note that this has to go on the PackageVersion level, because we can have cases with images with the same source having different licences. E.g. in Alpine, musl and musl-utils both have the same origin musl, but have different sets of licenses.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"type": "string"
+},
+"version": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProjectRepoId": {
+"description": "Selects a repo using a Google Cloud Platform project ID (e.g., winged-cargo-31) and a repo name within that project.",
+"id": "ProjectRepoId",
+"properties": {
+"projectId": {
+"description": "The ID of the project.",
+"type": "string"
+},
+"repoName": {
+"description": "The name of the repo. Leave empty for the default repo.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProvenanceBuilder": {
+"id": "ProvenanceBuilder",
+"properties": {
+"builderDependencies": {
+"items": {
+"$ref": "ResourceDescriptor"
+},
+"type": "array"
+},
+"id": {
+"type": "string"
+},
+"version": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+}
+},
+"type": "object"
+},
+"Recipe": {
+"description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
+"id": "Recipe",
+"properties": {
+"arguments": {
+"description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Since the arguments field can greatly vary in structure, depending on the builder and recipe type, this is of form \"Any\".",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"definedInMaterial": {
+"description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64.",
+"format": "int64",
+"type": "string"
+},
+"entryPoint": {
+"description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use.",
+"type": "string"
+},
+"environment": {
+"description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Since the environment field can greatly vary in structure, depending on the builder and recipe type, this is of form \"Any\".",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"type": {
+"description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RelatedUrl": {
+"description": "Metadata for any related URL information.",
+"id": "RelatedUrl",
+"properties": {
+"label": {
+"description": "Label to describe usage of the URL.",
+"type": "string"
+},
+"url": {
+"description": "Specific URL associated with the resource.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Remediation": {
+"description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
+"id": "Remediation",
+"properties": {
+"details": {
+"description": "Contains a comprehensive human-readable discussion of the remediation.",
+"type": "string"
+},
+"remediationType": {
+"description": "The type of remediation that can be applied.",
+"enum": [
+"REMEDIATION_TYPE_UNSPECIFIED",
+"MITIGATION",
+"NO_FIX_PLANNED",
+"NONE_AVAILABLE",
+"VENDOR_FIX",
+"WORKAROUND"
+],
+"enumDescriptions": [
+"No remediation type specified.",
+"A MITIGATION is available.",
+"No fix is planned.",
+"Not available.",
+"A vendor fix is available.",
+"A workaround is available."
+],
+"type": "string"
+},
+"remediationUri": {
+"$ref": "RelatedUrl",
+"description": "Contains the URL where to obtain the remediation."
+}
+},
+"type": "object"
+},
+"RepoId": {
+"description": "A unique identifier for a Cloud Repo.",
+"id": "RepoId",
+"properties": {
+"projectRepoId": {
+"$ref": "ProjectRepoId",
+"description": "A combination of a project ID and a repo name."
+},
+"uid": {
+"description": "A server-assigned, globally unique identifier.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResourceDescriptor": {
+"id": "ResourceDescriptor",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "any"
+},
+"type": "object"
+},
+"content": {
+"format": "byte",
+"type": "string"
+},
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"type": "object"
+},
+"downloadLocation": {
+"type": "string"
+},
+"mediaType": {
+"type": "string"
+},
+"name": {
+"type": "string"
+},
+"uri": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"RunDetails": {
+"id": "RunDetails",
+"properties": {
+"builder": {
+"$ref": "ProvenanceBuilder"
+},
+"byproducts": {
+"items": {
+"$ref": "ResourceDescriptor"
+},
+"type": "array"
+},
+"metadata": {
+"$ref": "BuildMetadata"
+}
+},
+"type": "object"
+},
+"SBOMReferenceOccurrence": {
+"description": "The occurrence representing an SBOM reference as applied to a specific resource. The occurrence follows the DSSE specification. See https://github.com/secure-systems-lab/dsse/blob/master/envelope.md for more details.",
+"id": "SBOMReferenceOccurrence",
+"properties": {
+"payload": {
+"$ref": "SbomReferenceIntotoPayload",
+"description": "The actual payload that contains the SBOM reference data."
+},
+"payloadType": {
+"description": "The kind of payload that SbomReferenceIntotoPayload takes. Since it's in the intoto format, this value is expected to be 'application/vnd.in-toto+json'.",
+"type": "string"
+},
+"signatures": {
+"description": "The signatures over the payload.",
+"items": {
+"$ref": "EnvelopeSignature"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SBOMStatus": {
+"description": "The status of an SBOM generation.",
+"id": "SBOMStatus",
+"properties": {
+"error": {
+"description": "If there was an error generating an SBOM, this will indicate what that error was.",
+"type": "string"
+},
+"sbomState": {
+"description": "The progress of the SBOM generation.",
+"enum": [
+"SBOM_STATE_UNSPECIFIED",
+"PENDING",
+"COMPLETE"
+],
+"enumDescriptions": [
+"Default unknown state.",
+"SBOM scanning is pending.",
+"SBOM scanning has completed."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"SbomReferenceIntotoPayload": {
+"description": "The actual payload that contains the SBOM Reference data. The payload follows the intoto statement specification. See https://github.com/in-toto/attestation/blob/main/spec/v1.0/statement.md for more details.",
+"id": "SbomReferenceIntotoPayload",
+"properties": {
+"_type": {
+"description": "Identifier for the schema of the Statement.",
+"type": "string"
+},
+"predicate": {
+"$ref": "SbomReferenceIntotoPredicate",
+"description": "Additional parameters of the Predicate. Includes the actual data about the SBOM."
+},
+"predicateType": {
+"description": "URI identifying the type of the Predicate.",
+"type": "string"
+},
+"subject": {
+"description": "Set of software artifacts that the attestation applies to. Each element represents a single software artifact.",
+"items": {
+"$ref": "Subject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SbomReferenceIntotoPredicate": {
+"description": "A predicate which describes the SBOM being referenced.",
+"id": "SbomReferenceIntotoPredicate",
+"properties": {
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map of algorithm to digest of the contents of the SBOM.",
+"type": "object"
+},
+"location": {
+"description": "The location of the SBOM.",
+"type": "string"
+},
+"mimeType": {
+"description": "The mime type of the SBOM.",
+"type": "string"
+},
+"referrerId": {
+"description": "The person or system referring this predicate to the consumer.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Signature": {
+"description": "Verifiers (e.g. Kritis implementations) MUST verify signatures with respect to the trust anchors defined in policy (e.g. a Kritis policy). Typically this means that the verifier has been configured with a map from `public_key_id` to public key material (and any required parameters, e.g. signing algorithm). In particular, verification implementations MUST NOT treat the signature `public_key_id` as anything more than a key lookup hint. The `public_key_id` DOES NOT validate or authenticate a public key; it only provides a mechanism for quickly selecting a public key ALREADY CONFIGURED on the verifier through a trusted channel. Verification implementations MUST reject signatures in any of the following circumstances: * The `public_key_id` is not recognized by the verifier. * The public key that `public_key_id` refers to does not verify the signature with respect to the payload. The `signature` contents SHOULD NOT be \"attached\" (where the payload is included with the serialized `signature` bytes). Verifiers MUST ignore any \"attached\" payload and only verify signatures with respect to explicitly provided payload (e.g. a `payload` field on the proto message that holds this Signature, or the canonical serialization of the proto message that holds this signature).",
+"id": "Signature",
+"properties": {
+"publicKeyId": {
+"description": "The identifier for the public key that verifies this signature. * The `public_key_id` is required. * The `public_key_id` SHOULD be an RFC3986 conformant URI. * When possible, the `public_key_id` SHOULD be an immutable reference, such as a cryptographic digest. Examples of valid `public_key_id`s: OpenPGP V4 public key fingerprint: * \"openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA\" See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr for more details on this scheme. RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization): * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\" * \"nih:///sha-256;703f68f42aba2c6de30f488a5ea122fef76324679c9bf89791ba95a1271589a5\"",
+"type": "string"
+},
+"signature": {
+"description": "The content of the signature, an opaque bytestring. The payload that this signature verifies MUST be unambiguously provided with the Signature during verification. A wrapper message might provide the payload explicitly. Alternatively, a message might have a canonical serialization that can always be unambiguously computed to derive the payload.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SlsaBuilder": {
+"id": "SlsaBuilder",
+"properties": {
+"id": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"SlsaCompleteness": {
+"description": "Indicates that the builder claims certain fields in this message to be complete.",
+"id": "SlsaCompleteness",
+"properties": {
+"arguments": {
+"description": "If true, the builder claims that recipe.arguments is complete, meaning that all external inputs are properly captured in the recipe.",
+"type": "boolean"
+},
+"environment": {
+"description": "If true, the builder claims that recipe.environment is claimed to be complete.",
+"type": "boolean"
+},
+"materials": {
+"description": "If true, the builder claims that materials are complete, usually through some controls to prevent network access. Sometimes called \"hermetic\".",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SlsaMetadata": {
+"description": "Other properties of the build.",
+"id": "SlsaMetadata",
+"properties": {
+"buildFinishedOn": {
+"description": "The timestamp of when the build completed.",
+"format": "google-datetime",
+"type": "string"
+},
+"buildInvocationId": {
+"description": "Identifies the particular build invocation, which can be useful for finding associated logs or other ad-hoc analysis. The value SHOULD be globally unique, per in-toto Provenance spec.",
+"type": "string"
+},
+"buildStartedOn": {
+"description": "The timestamp of when the build started.",
+"format": "google-datetime",
+"type": "string"
+},
+"completeness": {
+"$ref": "SlsaCompleteness",
+"description": "Indicates that the builder claims certain fields in this message to be complete."
+},
+"reproducible": {
+"description": "If true, the builder claims that running the recipe on materials will produce bit-for-bit identical output.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SlsaProvenance": {
+"id": "SlsaProvenance",
+"properties": {
+"builder": {
+"$ref": "SlsaBuilder",
+"description": "required"
+},
+"materials": {
+"description": "The collection of artifacts that influenced the build including sources, dependencies, build tools, base images, and so on. This is considered to be incomplete unless metadata.completeness.materials is true. Unset or null is equivalent to empty.",
+"items": {
+"$ref": "Material"
+},
+"type": "array"
+},
+"metadata": {
+"$ref": "SlsaMetadata"
+},
+"recipe": {
+"$ref": "SlsaRecipe",
+"description": "Identifies the configuration used for the build. When combined with materials, this SHOULD fully describe the build, such that re-running this recipe results in bit-for-bit identical output (if the build is reproducible). required"
+}
+},
+"type": "object"
+},
+"SlsaProvenanceV1": {
+"description": "Keep in sync with schema at https://github.com/slsa-framework/slsa/blob/main/docs/provenance/schema/v1/provenance.proto Builder renamed to ProvenanceBuilder because of Java conflicts.",
+"id": "SlsaProvenanceV1",
+"properties": {
+"buildDefinition": {
+"$ref": "BuildDefinition"
+},
+"runDetails": {
+"$ref": "RunDetails"
+}
+},
+"type": "object"
+},
+"SlsaProvenanceZeroTwo": {
+"description": "See full explanation of fields at slsa.dev/provenance/v0.2.",
+"id": "SlsaProvenanceZeroTwo",
+"properties": {
+"buildConfig": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"type": "object"
+},
+"buildType": {
+"type": "string"
+},
+"builder": {
+"$ref": "GrafeasV1SlsaProvenanceZeroTwoSlsaBuilder"
+},
+"invocation": {
+"$ref": "GrafeasV1SlsaProvenanceZeroTwoSlsaInvocation"
+},
+"materials": {
+"items": {
+"$ref": "GrafeasV1SlsaProvenanceZeroTwoSlsaMaterial"
+},
+"type": "array"
+},
+"metadata": {
+"$ref": "GrafeasV1SlsaProvenanceZeroTwoSlsaMetadata"
+}
+},
+"type": "object"
+},
+"SlsaRecipe": {
+"description": "Steps taken to build the artifact. For a TaskRun, typically each container corresponds to one step in the recipe.",
+"id": "SlsaRecipe",
+"properties": {
+"arguments": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Collection of all external inputs that influenced the build on top of recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe type were \"make\", then this might be the flags passed to make aside from the target, which is captured in recipe.entryPoint. Depending on the recipe Type, the structure may be different.",
+"type": "object"
+},
+"definedInMaterial": {
+"description": "Index in materials containing the recipe steps that are not implied by recipe.type. For example, if the recipe type were \"make\", then this would point to the source containing the Makefile, not the make program itself. Set to -1 if the recipe doesn't come from a material, as zero is default unset value for int64.",
+"format": "int64",
+"type": "string"
+},
+"entryPoint": {
+"description": "String identifying the entry point into the build. This is often a path to a configuration file and/or a target label within that file. The syntax and meaning are defined by recipe.type. For example, if the recipe type were \"make\", then this would reference the directory in which to run make as well as which target to use.",
+"type": "string"
+},
+"environment": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Any other builder-controlled inputs necessary for correctly evaluating the recipe. Usually only needed for reproducing the build but not evaluated as part of policy. Depending on the recipe Type, the structure may be different.",
+"type": "object"
+},
+"type": {
+"description": "URI indicating what type of recipe was performed. It determines the meaning of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Source": {
+"description": "Source describes the location of the source used for the build.",
+"id": "Source",
+"properties": {
+"additionalContexts": {
+"description": "If provided, some of the source code used for the build may be found in these locations, in the case where the source repository had multiple remotes or submodules. This list will not include the context specified in the context field.",
+"items": {
+"$ref": "SourceContext"
+},
+"type": "array"
+},
+"artifactStorageSourceUri": {
+"description": "If provided, the input binary artifacts for the build came from this location.",
+"type": "string"
+},
+"context": {
+"$ref": "SourceContext",
+"description": "If provided, the source code used for the build came from this location."
+},
+"fileHashes": {
+"additionalProperties": {
+"$ref": "FileHashes"
+},
+"description": "Hash(es) of the build source, which can be used to verify that the original source integrity was maintained in the build. The keys to this map are file paths used as build source and the values contain the hash values for those files. If the build source came in a single package such as a gzipped tarfile (.tar.gz), the FileHash will be for the single path to that file.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"SourceContext": {
+"description": "A SourceContext is a reference to a tree of files. A SourceContext together with a path point to a unique revision of a single file or directory.",
+"id": "SourceContext",
+"properties": {
+"cloudRepo": {
+"$ref": "CloudRepoSourceContext",
+"description": "A SourceContext referring to a revision in a Google Cloud Source Repo."
+},
+"gerrit": {
+"$ref": "GerritSourceContext",
+"description": "A SourceContext referring to a Gerrit project."
+},
+"git": {
+"$ref": "GitSourceContext",
+"description": "A SourceContext referring to any third party Git repo (e.g., GitHub)."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Labels with user defined metadata.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Subject": {
+"id": "Subject",
+"properties": {
+"digest": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "`\"\": \"\"` Algorithms can be e.g. sha256, sha512 See https://github.com/in-toto/attestation/blob/main/spec/field_types.md#DigestSet",
+"type": "object"
+},
+"name": {
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpgradeDistribution": {
+"description": "The Upgrade Distribution represents metadata about the Upgrade for each operating system (CPE). Some distributions have additional metadata around updates, classifying them into various categories and severities.",
+"id": "UpgradeDistribution",
+"properties": {
+"classification": {
+"description": "The operating system classification of this Upgrade, as specified by the upstream operating system upgrade feed. For Windows the classification is one of the category_ids listed at https://docs.microsoft.com/en-us/previous-versions/windows/desktop/ff357803(v=vs.85)",
+"type": "string"
+},
+"cpeUri": {
+"description": "Required - The specific operating system this metadata applies to. See https://cpe.mitre.org/specification/.",
+"type": "string"
+},
+"cve": {
+"description": "The cve tied to this Upgrade.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"severity": {
+"description": "The severity as specified by the upstream operating system.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpgradeOccurrence": {
+"description": "An Upgrade Occurrence represents that a specific resource_url could install a specific upgrade. This presence is supplied via local sources (i.e. it is present in the mirror and the running system has noticed its availability). For Windows, both distribution and windows_update contain information for the Windows update.",
+"id": "UpgradeOccurrence",
+"properties": {
+"distribution": {
+"$ref": "UpgradeDistribution",
+"description": "Metadata about the upgrade for available for the specific operating system for the resource_url. This allows efficient filtering, as well as making it easier to use the occurrence."
+},
+"package": {
+"description": "Required for non-Windows OS. The package this Upgrade is for.",
+"type": "string"
+},
+"parsedVersion": {
+"$ref": "Version",
+"description": "Required for non-Windows OS. The version of the package in a machine + human readable form."
+},
+"windowsUpdate": {
+"$ref": "WindowsUpdate",
+"description": "Required for Windows OS. Represents the metadata about the Windows update."
+}
+},
+"type": "object"
+},
+"Version": {
+"description": "Version contains structured information about the version of a package.",
+"id": "Version",
+"properties": {
+"epoch": {
+"description": "Used to correct mistakes in the version numbering scheme.",
+"format": "int32",
+"type": "integer"
+},
+"fullName": {
+"description": "Human readable version string. This string is of the form :- and is only set when kind is NORMAL.",
+"type": "string"
+},
+"inclusive": {
+"description": "Whether this version is specifying part of an inclusive range. Grafeas does not have the capability to specify version ranges; instead we have fields that specify start version and end versions. At times this is insufficient - we also need to specify whether the version is included in the range or is excluded from the range. This boolean is expected to be set to true when the version is included in a range.",
+"type": "boolean"
+},
+"kind": {
+"description": "Required. Distinguishes between sentinel MIN/MAX versions and normal versions.",
+"enum": [
+"VERSION_KIND_UNSPECIFIED",
+"NORMAL",
+"MINIMUM",
+"MAXIMUM"
+],
+"enumDescriptions": [
+"Unknown.",
+"A standard package version.",
+"A special version representing negative infinity.",
+"A special version representing positive infinity."
+],
+"type": "string"
+},
+"name": {
+"description": "Required only when version kind is NORMAL. The main part of the version name.",
+"type": "string"
+},
+"revision": {
+"description": "The iteration of the package build from the above version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VexAssessment": {
+"description": "VexAssessment provides all publisher provided Vex information that is related to this vulnerability.",
+"id": "VexAssessment",
+"properties": {
+"cve": {
+"deprecated": true,
+"description": "Holds the MITRE standard Common Vulnerabilities and Exposures (CVE) tracking number for the vulnerability. Deprecated: Use vulnerability_id instead to denote CVEs.",
+"type": "string"
+},
+"impacts": {
+"description": "Contains information about the impact of this vulnerability, this will change with time.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"justification": {
+"$ref": "Justification",
+"description": "Justification provides the justification when the state of the assessment if NOT_AFFECTED."
+},
+"noteName": {
+"description": "The VulnerabilityAssessment note from which this VexAssessment was generated. This will be of the form: `projects/[PROJECT_ID]/notes/[NOTE_ID]`.",
+"type": "string"
+},
+"relatedUris": {
+"description": "Holds a list of references associated with this vulnerability item and assessment.",
+"items": {
+"$ref": "RelatedUrl"
+},
+"type": "array"
+},
+"remediations": {
+"description": "Specifies details on how to handle (and presumably, fix) a vulnerability.",
+"items": {
+"$ref": "Remediation"
+},
+"type": "array"
+},
+"state": {
+"description": "Provides the state of this Vulnerability assessment.",
+"enum": [
+"STATE_UNSPECIFIED",
+"AFFECTED",
+"NOT_AFFECTED",
+"FIXED",
+"UNDER_INVESTIGATION"
+],
+"enumDescriptions": [
+"No state is specified.",
+"This product is known to be affected by this vulnerability.",
+"This product is known to be not affected by this vulnerability.",
+"This product contains a fix for this vulnerability.",
+"It is not known yet whether these versions are or are not affected by the vulnerability. However, it is still under investigation."
+],
+"type": "string"
+},
+"vulnerabilityId": {
+"description": "The vulnerability identifier for this Assessment. Will hold one of common identifiers e.g. CVE, GHSA etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VulnerabilityOccurrence": {
+"description": "An occurrence of a severity vulnerability on a resource.",
+"id": "VulnerabilityOccurrence",
+"properties": {
+"cvssScore": {
+"description": "Output only. The CVSS score of this vulnerability. CVSS score is on a scale of 0 - 10 where 0 indicates low severity and 10 indicates high severity.",
+"format": "float",
+"type": "number"
+},
+"cvssV2": {
+"$ref": "CVSS",
+"description": "The cvss v2 score for the vulnerability."
+},
+"cvssVersion": {
+"description": "Output only. CVSS version used to populate cvss_score and severity.",
+"enum": [
+"CVSS_VERSION_UNSPECIFIED",
+"CVSS_VERSION_2",
+"CVSS_VERSION_3"
+],
+"enumDescriptions": [
+"",
+"",
+""
+],
+"type": "string"
+},
+"cvssv3": {
+"$ref": "CVSS",
+"description": "The cvss v3 score for the vulnerability."
+},
+"effectiveSeverity": {
+"description": "The distro assigned severity for this vulnerability when it is available, otherwise this is the note provider assigned severity. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unknown.",
+"Minimal severity.",
+"Low severity.",
+"Medium severity.",
+"High severity.",
+"Critical severity."
+],
+"type": "string"
+},
+"extraDetails": {
+"description": "Occurrence-specific extra details about the vulnerability.",
+"type": "string"
+},
+"fixAvailable": {
+"description": "Output only. Whether at least one of the affected packages has a fix available.",
+"type": "boolean"
+},
+"longDescription": {
+"description": "Output only. A detailed description of this vulnerability.",
+"type": "string"
+},
+"packageIssue": {
+"description": "Required. The set of affected locations and their fixes (if available) within the associated resource.",
+"items": {
+"$ref": "PackageIssue"
+},
+"type": "array"
+},
+"relatedUrls": {
+"description": "Output only. URLs related to this vulnerability.",
+"items": {
+"$ref": "RelatedUrl"
+},
+"type": "array"
+},
+"severity": {
+"description": "Output only. The note provider assigned severity of this vulnerability.",
+"enum": [
+"SEVERITY_UNSPECIFIED",
+"MINIMAL",
+"LOW",
+"MEDIUM",
+"HIGH",
+"CRITICAL"
+],
+"enumDescriptions": [
+"Unknown.",
+"Minimal severity.",
+"Low severity.",
+"Medium severity.",
+"High severity.",
+"Critical severity."
+],
+"type": "string"
+},
+"shortDescription": {
+"description": "Output only. A one sentence description of this vulnerability.",
+"type": "string"
+},
+"type": {
+"description": "The type of package; whether native or non native (e.g., ruby gems, node.js packages, etc.).",
+"type": "string"
+},
+"vexAssessment": {
+"$ref": "VexAssessment"
+}
+},
+"type": "object"
+},
+"WindowsUpdate": {
+"description": "Windows Update represents the metadata about the update for the Windows operating system. The fields in this message come from the Windows Update API documented at https://docs.microsoft.com/en-us/windows/win32/api/wuapi/nn-wuapi-iupdate.",
+"id": "WindowsUpdate",
+"properties": {
+"categories": {
+"description": "The list of categories to which the update belongs.",
+"items": {
+"$ref": "Category"
+},
+"type": "array"
+},
+"description": {
+"description": "The localized description of the update.",
+"type": "string"
+},
+"identity": {
+"$ref": "Identity",
+"description": "Required - The unique identifier for the update."
+},
+"kbArticleIds": {
+"description": "The Microsoft Knowledge Base article IDs that are associated with the update.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"lastPublishedTimestamp": {
+"description": "The last published timestamp of the update.",
+"format": "google-datetime",
+"type": "string"
+},
+"supportUrl": {
+"description": "The hyperlink to the support information for the update.",
+"type": "string"
+},
+"title": {
+"description": "The localized title of the update.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "On-Demand Scanning API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/orgpolicy.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/orgpolicy.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..2f2c72e1acc74688e5c5f1125d303f92bcc06a6e
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/orgpolicy.v2.json
@@ -0,0 +1,1427 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://orgpolicy.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "OrgPolicy API",
+"description": "The Organization Policy API allows users to configure governance rules on their Google Cloud resources across the resource hierarchy.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/orgpolicy/docs/reference/rest/index.html",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "orgpolicy:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://orgpolicy.mtls.googleapis.com/",
+"name": "orgpolicy",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"folders": {
+"resources": {
+"constraints": {
+"methods": {
+"list": {
+"description": "Lists constraints that could be applied on the specified resource.",
+"flatPath": "v2/folders/{foldersId}/constraints",
+"httpMethod": "GET",
+"id": "orgpolicy.folders.constraints.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Google Cloud resource that parents the constraint. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/constraints",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2ListConstraintsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"policies": {
+"methods": {
+"create": {
+"description": "Creates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ALREADY_EXISTS` if the policy already exists on the given Google Cloud resource.",
+"flatPath": "v2/folders/{foldersId}/policies",
+"httpMethod": "POST",
+"id": "orgpolicy.folders.policies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The Google Cloud resource that will parent the new policy. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/policies",
+"request": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint or organization policy does not exist.",
+"flatPath": "v2/folders/{foldersId}/policies/{policiesId}",
+"httpMethod": "DELETE",
+"id": "orgpolicy.folders.policies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The current etag of policy. If an etag is provided and does not match the current etag of the policy, deletion will be blocked and an ABORTED error will be returned.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Name of the policy to delete. See the policy entry for naming rules.",
+"location": "path",
+"pattern": "^folders/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a policy on a resource. If no policy is set on the resource, `NOT_FOUND` is returned. The `etag` value can be used with `UpdatePolicy()` to update a policy during read-modify-write.",
+"flatPath": "v2/folders/{foldersId}/policies/{policiesId}",
+"httpMethod": "GET",
+"id": "orgpolicy.folders.policies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the policy. See Policy for naming requirements.",
+"location": "path",
+"pattern": "^folders/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getEffectivePolicy": {
+"description": "Gets the effective policy on a resource. This is the result of merging policies in the resource hierarchy and evaluating conditions. The returned policy will not have an `etag` or `condition` set because it is an evaluated policy across multiple resources. Subtrees of Resource Manager resource hierarchy with 'under:' prefix will not be expanded.",
+"flatPath": "v2/folders/{foldersId}/policies/{policiesId}:getEffectivePolicy",
+"httpMethod": "GET",
+"id": "orgpolicy.folders.policies.getEffectivePolicy",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The effective policy to compute. See Policy for naming requirements.",
+"location": "path",
+"pattern": "^folders/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:getEffectivePolicy",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Retrieves all of the policies that exist on a particular resource.",
+"flatPath": "v2/folders/{foldersId}/policies",
+"httpMethod": "GET",
+"id": "orgpolicy.folders.policies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The target Google Cloud resource that parents the set of constraints and policies that will be returned from this call. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^folders/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/policies",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2ListPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint or the policy do not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ABORTED` if the etag supplied in the request does not match the persisted etag of the policy Note: the supplied policy will perform a full overwrite of all fields.",
+"flatPath": "v2/folders/{foldersId}/policies/{policiesId}",
+"httpMethod": "PATCH",
+"id": "orgpolicy.folders.policies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number.",
+"location": "path",
+"pattern": "^folders/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask used to specify the fields to be overwritten in the policy by the set. The fields specified in the update_mask are relative to the policy, not the full request.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"organizations": {
+"resources": {
+"constraints": {
+"methods": {
+"list": {
+"description": "Lists constraints that could be applied on the specified resource.",
+"flatPath": "v2/organizations/{organizationsId}/constraints",
+"httpMethod": "GET",
+"id": "orgpolicy.organizations.constraints.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Google Cloud resource that parents the constraint. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/constraints",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2ListConstraintsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"customConstraints": {
+"methods": {
+"create": {
+"description": "Creates a custom constraint. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the organization does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ALREADY_EXISTS` if the constraint already exists on the given organization.",
+"flatPath": "v2/organizations/{organizationsId}/customConstraints",
+"httpMethod": "POST",
+"id": "orgpolicy.organizations.customConstraints.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. Must be in the following form: * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/customConstraints",
+"request": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint"
+},
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a custom constraint. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist.",
+"flatPath": "v2/organizations/{organizationsId}/customConstraints/{customConstraintsId}",
+"httpMethod": "DELETE",
+"id": "orgpolicy.organizations.customConstraints.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the custom constraint to delete. See the custom constraint entry for naming rules.",
+"location": "path",
+"pattern": "^organizations/[^/]+/customConstraints/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a custom constraint. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the custom constraint does not exist.",
+"flatPath": "v2/organizations/{organizationsId}/customConstraints/{customConstraintsId}",
+"httpMethod": "GET",
+"id": "orgpolicy.organizations.customConstraints.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the custom constraint. See the custom constraint entry for naming requirements.",
+"location": "path",
+"pattern": "^organizations/[^/]+/customConstraints/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Retrieves all of the custom constraints that exist on a particular organization resource.",
+"flatPath": "v2/organizations/{organizationsId}/customConstraints",
+"httpMethod": "GET",
+"id": "orgpolicy.organizations.customConstraints.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The target Google Cloud resource that parents the set of custom constraints that will be returned from this call. Must be in one of the following forms: * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/customConstraints",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2ListCustomConstraintsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a custom constraint. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist. Note: the supplied policy will perform a full overwrite of all fields.",
+"flatPath": "v2/organizations/{organizationsId}/customConstraints/{customConstraintsId}",
+"httpMethod": "PATCH",
+"id": "orgpolicy.organizations.customConstraints.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example: `organizations/123/customConstraints/custom.createOnlyE2TypeVms` The max length is 70 characters and the minimum length is 1. Note that the prefix `organizations/{organization_id}/customConstraints/` is not counted.",
+"location": "path",
+"pattern": "^organizations/[^/]+/customConstraints/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint"
+},
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"policies": {
+"methods": {
+"create": {
+"description": "Creates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ALREADY_EXISTS` if the policy already exists on the given Google Cloud resource.",
+"flatPath": "v2/organizations/{organizationsId}/policies",
+"httpMethod": "POST",
+"id": "orgpolicy.organizations.policies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The Google Cloud resource that will parent the new policy. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/policies",
+"request": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint or organization policy does not exist.",
+"flatPath": "v2/organizations/{organizationsId}/policies/{policiesId}",
+"httpMethod": "DELETE",
+"id": "orgpolicy.organizations.policies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The current etag of policy. If an etag is provided and does not match the current etag of the policy, deletion will be blocked and an ABORTED error will be returned.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Name of the policy to delete. See the policy entry for naming rules.",
+"location": "path",
+"pattern": "^organizations/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a policy on a resource. If no policy is set on the resource, `NOT_FOUND` is returned. The `etag` value can be used with `UpdatePolicy()` to update a policy during read-modify-write.",
+"flatPath": "v2/organizations/{organizationsId}/policies/{policiesId}",
+"httpMethod": "GET",
+"id": "orgpolicy.organizations.policies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the policy. See Policy for naming requirements.",
+"location": "path",
+"pattern": "^organizations/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getEffectivePolicy": {
+"description": "Gets the effective policy on a resource. This is the result of merging policies in the resource hierarchy and evaluating conditions. The returned policy will not have an `etag` or `condition` set because it is an evaluated policy across multiple resources. Subtrees of Resource Manager resource hierarchy with 'under:' prefix will not be expanded.",
+"flatPath": "v2/organizations/{organizationsId}/policies/{policiesId}:getEffectivePolicy",
+"httpMethod": "GET",
+"id": "orgpolicy.organizations.policies.getEffectivePolicy",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The effective policy to compute. See Policy for naming requirements.",
+"location": "path",
+"pattern": "^organizations/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:getEffectivePolicy",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Retrieves all of the policies that exist on a particular resource.",
+"flatPath": "v2/organizations/{organizationsId}/policies",
+"httpMethod": "GET",
+"id": "orgpolicy.organizations.policies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The target Google Cloud resource that parents the set of constraints and policies that will be returned from this call. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^organizations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/policies",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2ListPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint or the policy do not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ABORTED` if the etag supplied in the request does not match the persisted etag of the policy Note: the supplied policy will perform a full overwrite of all fields.",
+"flatPath": "v2/organizations/{organizationsId}/policies/{policiesId}",
+"httpMethod": "PATCH",
+"id": "orgpolicy.organizations.policies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number.",
+"location": "path",
+"pattern": "^organizations/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask used to specify the fields to be overwritten in the policy by the set. The fields specified in the update_mask are relative to the policy, not the full request.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"projects": {
+"resources": {
+"constraints": {
+"methods": {
+"list": {
+"description": "Lists constraints that could be applied on the specified resource.",
+"flatPath": "v2/projects/{projectsId}/constraints",
+"httpMethod": "GET",
+"id": "orgpolicy.projects.constraints.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Google Cloud resource that parents the constraint. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/constraints",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2ListConstraintsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"policies": {
+"methods": {
+"create": {
+"description": "Creates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint does not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ALREADY_EXISTS` if the policy already exists on the given Google Cloud resource.",
+"flatPath": "v2/projects/{projectsId}/policies",
+"httpMethod": "POST",
+"id": "orgpolicy.projects.policies.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The Google Cloud resource that will parent the new policy. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/policies",
+"request": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint or organization policy does not exist.",
+"flatPath": "v2/projects/{projectsId}/policies/{policiesId}",
+"httpMethod": "DELETE",
+"id": "orgpolicy.projects.policies.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"etag": {
+"description": "Optional. The current etag of policy. If an etag is provided and does not match the current etag of the policy, deletion will be blocked and an ABORTED error will be returned.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "Required. Name of the policy to delete. See the policy entry for naming rules.",
+"location": "path",
+"pattern": "^projects/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a policy on a resource. If no policy is set on the resource, `NOT_FOUND` is returned. The `etag` value can be used with `UpdatePolicy()` to update a policy during read-modify-write.",
+"flatPath": "v2/projects/{projectsId}/policies/{policiesId}",
+"httpMethod": "GET",
+"id": "orgpolicy.projects.policies.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Resource name of the policy. See Policy for naming requirements.",
+"location": "path",
+"pattern": "^projects/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getEffectivePolicy": {
+"description": "Gets the effective policy on a resource. This is the result of merging policies in the resource hierarchy and evaluating conditions. The returned policy will not have an `etag` or `condition` set because it is an evaluated policy across multiple resources. Subtrees of Resource Manager resource hierarchy with 'under:' prefix will not be expanded.",
+"flatPath": "v2/projects/{projectsId}/policies/{policiesId}:getEffectivePolicy",
+"httpMethod": "GET",
+"id": "orgpolicy.projects.policies.getEffectivePolicy",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The effective policy to compute. See Policy for naming requirements.",
+"location": "path",
+"pattern": "^projects/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:getEffectivePolicy",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Retrieves all of the policies that exist on a particular resource.",
+"flatPath": "v2/projects/{projectsId}/policies",
+"httpMethod": "GET",
+"id": "orgpolicy.projects.policies.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Size of the pages to be returned. This is currently unsupported and will be ignored. The server may at any point start using this field to limit page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Page token used to retrieve the next page. This is currently unsupported and will be ignored. The server may at any point start using this field.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The target Google Cloud resource that parents the set of constraints and policies that will be returned from this call. Must be in one of the following forms: * `projects/{project_number}` * `projects/{project_id}` * `folders/{folder_id}` * `organizations/{organization_id}`",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/policies",
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2ListPoliciesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates a policy. Returns a `google.rpc.Status` with `google.rpc.Code.NOT_FOUND` if the constraint or the policy do not exist. Returns a `google.rpc.Status` with `google.rpc.Code.ABORTED` if the etag supplied in the request does not match the persisted etag of the policy Note: the supplied policy will perform a full overwrite of all fields.",
+"flatPath": "v2/projects/{projectsId}/policies/{policiesId}",
+"httpMethod": "PATCH",
+"id": "orgpolicy.projects.policies.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number.",
+"location": "path",
+"pattern": "^projects/[^/]+/policies/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask used to specify the fields to be overwritten in the policy by the set. The fields specified in the update_mask are relative to the policy, not the full request.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"response": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+},
+"revision": "20241129",
+"rootUrl": "https://orgpolicy.googleapis.com/",
+"schemas": {
+"GoogleCloudOrgpolicyV2AlternatePolicySpec": {
+"description": "Similar to PolicySpec but with an extra 'launch' field for launch reference. The PolicySpec here is specific for dry-run/darklaunch.",
+"id": "GoogleCloudOrgpolicyV2AlternatePolicySpec",
+"properties": {
+"launch": {
+"description": "Reference to the launch that will be used while audit logging and to control the launch. Should be set only in the alternate policy.",
+"type": "string"
+},
+"spec": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpec",
+"description": "Specify constraint for configurations of Google Cloud resources."
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2Constraint": {
+"description": "A constraint describes a way to restrict resource's configuration. For example, you could enforce a constraint that controls which Google Cloud services can be activated across an organization, or whether a Compute Engine instance can have serial port connections established. Constraints can be configured by the organization policy administrator to fit the needs of the organization by setting a policy that includes constraints at different locations in the organization's resource hierarchy. Policies are inherited down the resource hierarchy from higher levels, but can also be overridden. For details about the inheritance rules please read about `policies`. Constraints have a default behavior determined by the `constraint_default` field, which is the enforcement behavior that is used in the absence of a policy being defined or inherited for the resource in question.",
+"id": "GoogleCloudOrgpolicyV2Constraint",
+"properties": {
+"booleanConstraint": {
+"$ref": "GoogleCloudOrgpolicyV2ConstraintBooleanConstraint",
+"description": "Defines this constraint as being a BooleanConstraint."
+},
+"constraintDefault": {
+"description": "The evaluation behavior of this constraint in the absence of a policy.",
+"enum": [
+"CONSTRAINT_DEFAULT_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"This is only used for distinguishing unset values and should never be used.",
+"Indicate that all values are allowed for list constraints. Indicate that enforcement is off for boolean constraints.",
+"Indicate that all values are denied for list constraints. Indicate that enforcement is on for boolean constraints."
+],
+"type": "string"
+},
+"description": {
+"description": "Detailed description of what this constraint controls as well as how and where it is enforced. Mutable.",
+"type": "string"
+},
+"displayName": {
+"description": "The human readable name. Mutable.",
+"type": "string"
+},
+"listConstraint": {
+"$ref": "GoogleCloudOrgpolicyV2ConstraintListConstraint",
+"description": "Defines this constraint as being a ListConstraint."
+},
+"name": {
+"description": "Immutable. The resource name of the constraint. Must be in one of the following forms: * `projects/{project_number}/constraints/{constraint_name}` * `folders/{folder_id}/constraints/{constraint_name}` * `organizations/{organization_id}/constraints/{constraint_name}` For example, \"/projects/123/constraints/compute.disableSerialPortAccess\".",
+"type": "string"
+},
+"supportsDryRun": {
+"description": "Shows if dry run is supported for this constraint or not.",
+"type": "boolean"
+},
+"supportsSimulation": {
+"description": "Shows if simulation is supported for this constraint or not.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2ConstraintBooleanConstraint": {
+"description": "A constraint that is either enforced or not. For example, a constraint `constraints/compute.disableSerialPortAccess`. If it is enforced on a VM instance, serial port connections will not be opened to that instance.",
+"id": "GoogleCloudOrgpolicyV2ConstraintBooleanConstraint",
+"properties": {
+"customConstraintDefinition": {
+"$ref": "GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinition",
+"description": "Custom constraint definition. This is set only for Managed Constraints"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinition": {
+"description": "Currently used for Managed Constraints. This represents a subset of fields missing from Constraint proto that are required to describe CustomConstraint",
+"id": "GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinition",
+"properties": {
+"actionType": {
+"description": "Allow or deny type.",
+"enum": [
+"ACTION_TYPE_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"Unspecified. Results in an error.",
+"Allowed action type.",
+"Deny action type."
+],
+"type": "string"
+},
+"condition": {
+"description": "Org policy condition/expression. For example: `resource.instanceName.matches(\"[production|test]_.*_(\\d)+\")` or, `resource.management.auto_upgrade == true` The max length of the condition is 1000 characters.",
+"type": "string"
+},
+"methodTypes": {
+"description": "All the operations being applied for this constraint.",
+"items": {
+"enum": [
+"METHOD_TYPE_UNSPECIFIED",
+"CREATE",
+"UPDATE",
+"DELETE",
+"REMOVE_GRANT",
+"GOVERN_TAGS"
+],
+"enumDescriptions": [
+"Unspecified. Results in an error.",
+"Constraint applied when creating the resource.",
+"Constraint applied when updating the resource.",
+"Constraint applied when deleting the resource. Not supported yet.",
+"Constraint applied when removing an IAM grant.",
+"Constraint applied when enforcing forced tagging."
+],
+"type": "string"
+},
+"type": "array"
+},
+"parameters": {
+"additionalProperties": {
+"$ref": "GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinitionParameter"
+},
+"description": "Stores Structure of parameters used by Constraint condition. Key of map represents name of the parameter.",
+"type": "object"
+},
+"resourceTypes": {
+"description": "The resource instance type on which this policy applies. Format will be of the form : `/` Example: * `compute.googleapis.com/Instance`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinitionParameter": {
+"description": "Defines a parameter structure.",
+"id": "GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinitionParameter",
+"properties": {
+"defaultValue": {
+"description": "Sets the value of the parameter in an assignment if no value is given.",
+"type": "any"
+},
+"item": {
+"description": "Determines the parameter\u2019s value structure. For example, LIST can be specified by defining type : LIST, and item type as : STRING.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"LIST",
+"STRING",
+"BOOLEAN"
+],
+"enumDescriptions": [
+"Unspecified. Results in an error.",
+"List parameter type.",
+"String parameter type.",
+"Boolean parameter type."
+],
+"type": "string"
+},
+"metadata": {
+"$ref": "GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinitionParameterMetadata",
+"description": "Defines subproperties primarily used by the UI to display user-friendly information."
+},
+"type": {
+"description": "Type of the parameter.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"LIST",
+"STRING",
+"BOOLEAN"
+],
+"enumDescriptions": [
+"Unspecified. Results in an error.",
+"List parameter type.",
+"String parameter type.",
+"Boolean parameter type."
+],
+"type": "string"
+},
+"validValuesExpr": {
+"description": "Provides a CEL expression to specify the acceptable parameter values during assignment. For example, parameterName in (\"parameterValue1\", \"parameterValue2\")",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinitionParameterMetadata": {
+"description": "Defines Medata structure.",
+"id": "GoogleCloudOrgpolicyV2ConstraintCustomConstraintDefinitionParameterMetadata",
+"properties": {
+"description": {
+"description": "Detailed description of what this `parameter` is and use of it. Mutable.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2ConstraintListConstraint": {
+"description": "A constraint that allows or disallows a list of string values, which are configured by an Organization Policy administrator with a policy.",
+"id": "GoogleCloudOrgpolicyV2ConstraintListConstraint",
+"properties": {
+"supportsIn": {
+"description": "Indicates whether values grouped into categories can be used in `Policy.allowed_values` and `Policy.denied_values`. For example, `\"in:Python\"` would match any value in the 'Python' group.",
+"type": "boolean"
+},
+"supportsUnder": {
+"description": "Indicates whether subtrees of the Resource Manager resource hierarchy can be used in `Policy.allowed_values` and `Policy.denied_values`. For example, `\"under:folders/123\"` would match any resource under the 'folders/123' folder.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2CustomConstraint": {
+"description": "A custom constraint defined by customers which can *only* be applied to the given resource types and organization. By creating a custom constraint, customers can apply policies of this custom constraint. *Creating a custom constraint itself does NOT apply any policy enforcement*.",
+"id": "GoogleCloudOrgpolicyV2CustomConstraint",
+"properties": {
+"actionType": {
+"description": "Allow or deny type.",
+"enum": [
+"ACTION_TYPE_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"Unspecified. Results in an error.",
+"Allowed action type.",
+"Deny action type."
+],
+"type": "string"
+},
+"condition": {
+"description": "Org policy condition/expression. For example: `resource.instanceName.matches(\"[production|test]_.*_(\\d)+\")` or, `resource.management.auto_upgrade == true` The max length of the condition is 1000 characters.",
+"type": "string"
+},
+"description": {
+"description": "Detailed information about this custom policy constraint. The max length of the description is 2000 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "One line display name for the UI. The max length of the display_name is 200 characters.",
+"type": "string"
+},
+"methodTypes": {
+"description": "All the operations being applied for this constraint.",
+"items": {
+"enum": [
+"METHOD_TYPE_UNSPECIFIED",
+"CREATE",
+"UPDATE",
+"DELETE",
+"REMOVE_GRANT",
+"GOVERN_TAGS"
+],
+"enumDescriptions": [
+"Unspecified. Results in an error.",
+"Constraint applied when creating the resource.",
+"Constraint applied when updating the resource.",
+"Constraint applied when deleting the resource. Not supported yet.",
+"Constraint applied when removing an IAM grant.",
+"Constraint applied when enforcing forced tagging."
+],
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "Immutable. Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example: `organizations/123/customConstraints/custom.createOnlyE2TypeVms` The max length is 70 characters and the minimum length is 1. Note that the prefix `organizations/{organization_id}/customConstraints/` is not counted.",
+"type": "string"
+},
+"resourceTypes": {
+"description": "Immutable. The resource instance type on which this policy applies. Format will be of the form : `/` Example: * `compute.googleapis.com/Instance`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. The last time this custom constraint was updated. This represents the last time that the `CreateCustomConstraint` or `UpdateCustomConstraint` RPC was called",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2ListConstraintsResponse": {
+"description": "The response returned from the ListConstraints method.",
+"id": "GoogleCloudOrgpolicyV2ListConstraintsResponse",
+"properties": {
+"constraints": {
+"description": "The collection of constraints that are available on the targeted resource.",
+"items": {
+"$ref": "GoogleCloudOrgpolicyV2Constraint"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Page token used to retrieve the next page. This is currently not used.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2ListCustomConstraintsResponse": {
+"description": "The response returned from the ListCustomConstraints method. It will be empty if no custom constraints are set on the organization resource.",
+"id": "GoogleCloudOrgpolicyV2ListCustomConstraintsResponse",
+"properties": {
+"customConstraints": {
+"description": "All custom constraints that exist on the organization resource. It will be empty if no custom constraints are set.",
+"items": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "Page token used to retrieve the next page. This is currently not used, but the server may at any point start supplying a valid token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2ListPoliciesResponse": {
+"description": "The response returned from the ListPolicies method. It will be empty if no policies are set on the resource.",
+"id": "GoogleCloudOrgpolicyV2ListPoliciesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Page token used to retrieve the next page. This is currently not used, but the server may at any point start supplying a valid token.",
+"type": "string"
+},
+"policies": {
+"description": "All policies that exist on the resource. It will be empty if no policies are set.",
+"items": {
+"$ref": "GoogleCloudOrgpolicyV2Policy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2Policy": {
+"description": "Defines an organization policy which is used to specify constraints for configurations of Google Cloud resources.",
+"id": "GoogleCloudOrgpolicyV2Policy",
+"properties": {
+"alternate": {
+"$ref": "GoogleCloudOrgpolicyV2AlternatePolicySpec",
+"deprecated": true,
+"description": "Deprecated."
+},
+"dryRunSpec": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpec",
+"description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
+},
+"etag": {
+"description": "Optional. An opaque tag indicating the current state of the policy, used for concurrency control. This 'etag' is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
+"type": "string"
+},
+"name": {
+"description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number.",
+"type": "string"
+},
+"spec": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpec",
+"description": "Basic information about the Organization Policy."
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2PolicySpec": {
+"description": "Defines a Google Cloud policy specification which is used to specify constraints for configurations of Google Cloud resources.",
+"id": "GoogleCloudOrgpolicyV2PolicySpec",
+"properties": {
+"etag": {
+"description": "An opaque tag indicating the current version of the policySpec, used for concurrency control. This field is ignored if used in a `CreatePolicy` request. When the policy is returned from either a `GetPolicy` or a `ListPolicies` request, this `etag` indicates the version of the current policySpec to use when executing a read-modify-write loop. When the policy is returned from a `GetEffectivePolicy` request, the `etag` will be unset.",
+"type": "string"
+},
+"inheritFromParent": {
+"description": "Determines the inheritance behavior for this policy. If `inherit_from_parent` is true, policy rules set higher up in the hierarchy (up to the closest root) are inherited and present in the effective policy. If it is false, then no rules are inherited, and this policy becomes the new root for evaluation. This field can be set only for policies which configure list constraints.",
+"type": "boolean"
+},
+"reset": {
+"description": "Ignores policies set above this resource and restores the `constraint_default` enforcement behavior of the specific constraint at this resource. This field can be set in policies for either list or boolean constraints. If set, `rules` must be empty and `inherit_from_parent` must be set to false.",
+"type": "boolean"
+},
+"rules": {
+"description": "In policies for boolean constraints, the following requirements apply: - There must be one and only one policy rule where condition is unset. - Boolean policy rules with conditions must set `enforced` to the opposite of the policy rule without a condition. - During policy evaluation, policy rules with conditions that are true for a target resource take precedence.",
+"items": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpecPolicyRule"
+},
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. The time stamp this was previously updated. This represents the last time a call to `CreatePolicy` or `UpdatePolicy` was made for that policy.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2PolicySpecPolicyRule": {
+"description": "A rule used to express this policy.",
+"id": "GoogleCloudOrgpolicyV2PolicySpecPolicyRule",
+"properties": {
+"allowAll": {
+"description": "Setting this to true means that all values are allowed. This field can be set only in policies for list constraints.",
+"type": "boolean"
+},
+"condition": {
+"$ref": "GoogleTypeExpr",
+"description": "A condition which determines whether this rule is used in the evaluation of the policy. When set, the `expression` field in the `Expr' must include from 1 to 10 subexpressions, joined by the \"||\" or \"&&\" operators. Each subexpression must be of the form \"resource.matchTag('/tag_key_short_name, 'tag_value_short_name')\". or \"resource.matchTagId('tagKeys/key_id', 'tagValues/value_id')\". where key_name and value_name are the resource names for Label Keys and Values. These names are available from the Tag Manager Service. An example expression is: \"resource.matchTag('123456789/environment, 'prod')\". or \"resource.matchTagId('tagKeys/123', 'tagValues/456')\"."
+},
+"denyAll": {
+"description": "Setting this to true means that all values are denied. This field can be set only in policies for list constraints.",
+"type": "boolean"
+},
+"enforce": {
+"description": "If `true`, then the policy is enforced. If `false`, then any configuration is acceptable. This field can be set only in policies for boolean constraints.",
+"type": "boolean"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. Required for GMCs if parameters defined in constraints. Pass parameter values when policy enforcement is enabled. Ensure that parameter value types match those defined in the constraint definition. For example: { \"allowedLocations\" : [\"us-east1\", \"us-west1\"], \"allowAll\" : true }",
+"type": "object"
+},
+"values": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues",
+"description": "List of values to be used for this policy rule. This field can be set only in policies for list constraints."
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues": {
+"description": "A message that holds specific allowed and denied values. This message can define specific values and subtrees of the Resource Manager resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed or denied. This is achieved by using the `under:` and optional `is:` prefixes. The `under:` prefix is used to denote resource subtree values. The `is:` prefix is used to denote specific values, and is required only if the value contains a \":\". Values prefixed with \"is:\" are treated the same as values with no prefix. Ancestry subtrees must be in one of the following formats: - `projects/` (for example, `projects/tokyo-rain-123`) - `folders/` (for example, `folders/1234`) - `organizations/` (for example, `organizations/1234`) The `supports_under` field of the associated `Constraint` defines whether ancestry prefixes can be used.",
+"id": "GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues",
+"properties": {
+"allowedValues": {
+"description": "List of values allowed at this resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"deniedValues": {
+"description": "List of values denied at this resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"GoogleTypeExpr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "GoogleTypeExpr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Organization Policy API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/parallelstore.v1beta.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/parallelstore.v1beta.json
new file mode 100644
index 0000000000000000000000000000000000000000..f570401cb24ce33312d4ae49d1f091ed1aa0622e
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/parallelstore.v1beta.json
@@ -0,0 +1,977 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://parallelstore.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Parallelstore",
+"description": "",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/parallelstore",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "parallelstore:v1beta",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://parallelstore.mtls.googleapis.com/",
+"name": "parallelstore",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "parallelstore.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1beta/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "parallelstore.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"instances": {
+"methods": {
+"create": {
+"description": "Creates a Parallelstore instance in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/instances",
+"httpMethod": "POST",
+"id": "parallelstore.projects.locations.instances.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"instanceId": {
+"description": "Required. The name of the Parallelstore instance. * Must contain only lowercase letters, numbers, and hyphens. * Must start with a letter. * Must be between 1-63 characters. * Must end with a number or a letter. * Must be unique within the customer project / location",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The instance's project and location, in the format `projects/{project}/locations/{location}`. Locations map to Google Cloud zones; for example, `us-west1-b`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/instances",
+"request": {
+"$ref": "Instance"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single instance.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+"httpMethod": "DELETE",
+"id": "parallelstore.projects.locations.instances.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the resource",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"exportData": {
+"description": "Copies data from Parallelstore to Cloud Storage.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:exportData",
+"httpMethod": "POST",
+"id": "parallelstore.projects.locations.instances.exportData",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:exportData",
+"request": {
+"$ref": "ExportDataRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single instance.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+"httpMethod": "GET",
+"id": "parallelstore.projects.locations.instances.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The instance resource name, in the format `projects/{project_id}/locations/{location}/instances/{instance_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Instance"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"importData": {
+"description": "Copies data from Cloud Storage to Parallelstore.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}:importData",
+"httpMethod": "POST",
+"id": "parallelstore.projects.locations.instances.importData",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. Name of the resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:importData",
+"request": {
+"$ref": "ImportDataRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists all instances in a given project and location.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/instances",
+"httpMethod": "GET",
+"id": "parallelstore.projects.locations.instances.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. Filtering results.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. Hint for how to order the results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. Requested page size. Server may return fewer items than requested. If unspecified, the server will pick an appropriate default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A token identifying a page of results the server should return.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The project and location for which to retrieve instance information, in the format `projects/{project_id}/locations/{location}`. To retrieve instance information for all locations, use \"-\" as the value of `{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/instances",
+"response": {
+"$ref": "ListInstancesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single instance.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/instances/{instancesId}",
+"httpMethod": "PATCH",
+"id": "parallelstore.projects.locations.instances.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Identifier. The resource name of the instance, in the format `projects/{project}/locations/{location}/instances/{instance_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/instances/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Mask of fields to update. Field mask is used to specify the fields to be overwritten in the Instance resource by the update. At least one path must be supplied in this field. The fields specified in the update_mask are relative to the resource, not the full request.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"request": {
+"$ref": "Instance"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "parallelstore.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}:cancel",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "parallelstore.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleProtobufEmpty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "parallelstore.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "parallelstore.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20250102",
+"rootUrl": "https://parallelstore.googleapis.com/",
+"schemas": {
+"DestinationGcsBucket": {
+"description": "Cloud Storage as the destination of a data transfer.",
+"id": "DestinationGcsBucket",
+"properties": {
+"uri": {
+"description": "Required. URI to a Cloud Storage bucket in the format: `gs:///`. The path inside the bucket is optional.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DestinationParallelstore": {
+"description": "Parallelstore as the destination of a data transfer.",
+"id": "DestinationParallelstore",
+"properties": {
+"path": {
+"description": "Optional. Root directory path to the Paralellstore filesystem, starting with `/`. Defaults to `/` if unset.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ExportDataRequest": {
+"description": "Export data from Parallelstore to Cloud Storage.",
+"id": "ExportDataRequest",
+"properties": {
+"destinationGcsBucket": {
+"$ref": "DestinationGcsBucket",
+"description": "Cloud Storage destination."
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"serviceAccount": {
+"description": "Optional. User-specified Service Account (SA) credentials to be used when performing the transfer. Use one of the following formats: * `{EMAIL_ADDRESS_OR_UNIQUE_ID}` * `projects/{PROJECT_ID_OR_NUMBER}/serviceAccounts/{EMAIL_ADDRESS_OR_UNIQUE_ID}` * `projects/-/serviceAccounts/{EMAIL_ADDRESS_OR_UNIQUE_ID}` If unspecified, the Parallelstore service agent is used: `service-@gcp-sa-parallelstore.iam.gserviceaccount.com`",
+"type": "string"
+},
+"sourceParallelstore": {
+"$ref": "SourceParallelstore",
+"description": "Parallelstore source."
+}
+},
+"type": "object"
+},
+"GoogleProtobufEmpty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "GoogleProtobufEmpty",
+"properties": {},
+"type": "object"
+},
+"ImportDataRequest": {
+"description": "Import data from Cloud Storage into a Parallelstore instance.",
+"id": "ImportDataRequest",
+"properties": {
+"destinationParallelstore": {
+"$ref": "DestinationParallelstore",
+"description": "Parallelstore destination."
+},
+"requestId": {
+"description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+},
+"serviceAccount": {
+"description": "Optional. User-specified service account credentials to be used when performing the transfer. Use one of the following formats: * `{EMAIL_ADDRESS_OR_UNIQUE_ID}` * `projects/{PROJECT_ID_OR_NUMBER}/serviceAccounts/{EMAIL_ADDRESS_OR_UNIQUE_ID}` * `projects/-/serviceAccounts/{EMAIL_ADDRESS_OR_UNIQUE_ID}` If unspecified, the Parallelstore service agent is used: `service-@gcp-sa-parallelstore.iam.gserviceaccount.com`",
+"type": "string"
+},
+"sourceGcsBucket": {
+"$ref": "SourceGcsBucket",
+"description": "The Cloud Storage source bucket and, optionally, path inside the bucket."
+}
+},
+"type": "object"
+},
+"Instance": {
+"description": "A Parallelstore instance.",
+"id": "Instance",
+"properties": {
+"accessPoints": {
+"description": "Output only. A list of IPv4 addresses used for client side configuration.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"capacityGib": {
+"description": "Required. Immutable. The instance's storage capacity in Gibibytes (GiB). Allowed values are between 12000 and 100000, in multiples of 4000; e.g., 12000, 16000, 20000, ...",
+"format": "int64",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time when the instance was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"deploymentType": {
+"description": "Optional. The deployment type of the instance. Allowed values are: * `SCRATCH`: the instance is a scratch instance. * `PERSISTENT`: the instance is a persistent instance.",
+"enum": [
+"DEPLOYMENT_TYPE_UNSPECIFIED",
+"SCRATCH",
+"PERSISTENT"
+],
+"enumDescriptions": [
+"Default Deployment Type It is equivalent to SCRATCH",
+"Scratch",
+"Persistent"
+],
+"type": "string"
+},
+"description": {
+"description": "Optional. The description of the instance. 2048 characters or less.",
+"type": "string"
+},
+"directoryStripeLevel": {
+"description": "Optional. Stripe level for directories. Allowed values are: * `DIRECTORY_STRIPE_LEVEL_MIN`: recommended when directories contain a small number of files. * `DIRECTORY_STRIPE_LEVEL_BALANCED`: balances performance for workloads involving a mix of small and large directories. * `DIRECTORY_STRIPE_LEVEL_MAX`: recommended for directories with a large number of files.",
+"enum": [
+"DIRECTORY_STRIPE_LEVEL_UNSPECIFIED",
+"DIRECTORY_STRIPE_LEVEL_MIN",
+"DIRECTORY_STRIPE_LEVEL_BALANCED",
+"DIRECTORY_STRIPE_LEVEL_MAX"
+],
+"enumDescriptions": [
+"If not set, DirectoryStripeLevel will default to DIRECTORY_STRIPE_LEVEL_MAX",
+"Minimum directory striping",
+"Medium directory striping",
+"Maximum directory striping"
+],
+"type": "string"
+},
+"effectiveReservedIpRange": {
+"description": "Output only. Immutable. The ID of the IP address range being used by the instance's VPC network. This field is populated by the service and contains the value currently used by the service.",
+"readOnly": true,
+"type": "string"
+},
+"fileStripeLevel": {
+"description": "Optional. Stripe level for files. Allowed values are: * `FILE_STRIPE_LEVEL_MIN`: offers the best performance for small size files. * `FILE_STRIPE_LEVEL_BALANCED`: balances performance for workloads involving a mix of small and large files. * `FILE_STRIPE_LEVEL_MAX`: higher throughput performance for larger files.",
+"enum": [
+"FILE_STRIPE_LEVEL_UNSPECIFIED",
+"FILE_STRIPE_LEVEL_MIN",
+"FILE_STRIPE_LEVEL_BALANCED",
+"FILE_STRIPE_LEVEL_MAX"
+],
+"enumDescriptions": [
+"If not set, FileStripeLevel will default to FILE_STRIPE_LEVEL_BALANCED",
+"Minimum file striping",
+"Medium file striping",
+"Maximum file striping"
+],
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. See https://cloud.google.com/resource-manager/docs/labels-overview for details.",
+"type": "object"
+},
+"name": {
+"description": "Identifier. The resource name of the instance, in the format `projects/{project}/locations/{location}/instances/{instance_id}`.",
+"type": "string"
+},
+"network": {
+"description": "Optional. Immutable. The name of the Compute Engine [VPC network](https://cloud.google.com/vpc/docs/vpc) to which the instance is connected.",
+"type": "string"
+},
+"reservedIpRange": {
+"description": "Optional. Immutable. The ID of the IP address range being used by the instance's VPC network. See [Configure a VPC network](https://cloud.google.com/parallelstore/docs/vpc#create_and_configure_the_vpc). If no ID is provided, all ranges are considered.",
+"type": "string"
+},
+"state": {
+"description": "Output only. The instance state.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"ACTIVE",
+"DELETING",
+"FAILED",
+"UPGRADING",
+"REPAIRING"
+],
+"enumDescriptions": [
+"Not set.",
+"The instance is being created.",
+"The instance is available for use.",
+"The instance is being deleted.",
+"The instance is not usable.",
+"The instance is being upgraded.",
+"The instance is being repaired. This should only be used by instances using the `PERSISTENT` deployment type."
+],
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time when the instance was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListInstancesResponse": {
+"description": "Response from ListInstances.",
+"id": "ListInstancesResponse",
+"properties": {
+"instances": {
+"description": "The list of Parallelstore instances.",
+"items": {
+"$ref": "Instance"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "A token identifying a page of results the server should return.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Long-running operation metadata.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have been cancelled successfully have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"SourceGcsBucket": {
+"description": "Cloud Storage as the source of a data transfer.",
+"id": "SourceGcsBucket",
+"properties": {
+"uri": {
+"description": "Required. URI to a Cloud Storage bucket in the format: `gs:///`. The path inside the bucket is optional.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SourceParallelstore": {
+"description": "Parallelstore as the source of a data transfer.",
+"id": "SourceParallelstore",
+"properties": {
+"path": {
+"description": "Optional. Root directory path to the Paralellstore filesystem, starting with `/`. Defaults to `/` if unset.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Parallelstore API",
+"version": "v1beta",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/policysimulator.v1beta.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/policysimulator.v1beta.json
new file mode 100644
index 0000000000000000000000000000000000000000..fb41bb44e6e7fba848e62569d00ec86207ee1fc1
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/policysimulator.v1beta.json
@@ -0,0 +1,2662 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://policysimulator.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Policy Simulator",
+"description": " Policy Simulator is a collection of endpoints for creating, running, and viewing a Replay. A `Replay` is a type of simulation that lets you see how your members' access to resources might change if you changed your IAM policy. During a `Replay`, Policy Simulator re-evaluates, or replays, past access attempts under both the current policy and your proposed policy, and compares those results to determine how your members' access might change under the proposed policy.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/iam/docs/simulating-access",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "policysimulator:v1beta",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://policysimulator.mtls.googleapis.com/",
+"name": "policysimulator",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"folders": {
+"resources": {
+"locations": {
+"resources": {
+"orgPolicyViolationsPreviews": {
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/folders/{foldersId}/locations/{locationsId}/orgPolicyViolationsPreviews/{orgPolicyViolationsPreviewsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "policysimulator.folders.locations.orgPolicyViolationsPreviews.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^folders/[^/]+/locations/[^/]+/orgPolicyViolationsPreviews/[^/]+/operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"replays": {
+"methods": {
+"create": {
+"description": "Creates and starts a Replay using the given ReplayConfig.",
+"flatPath": "v1beta/folders/{foldersId}/locations/{locationsId}/replays",
+"httpMethod": "POST",
+"id": "policysimulator.folders.locations.replays.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource where this Replay will be created. This resource must be a project, folder, or organization with a location. Example: `projects/my-example-project/locations/global`",
+"location": "path",
+"pattern": "^folders/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/replays",
+"request": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplay"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
+"flatPath": "v1beta/folders/{foldersId}/locations/{locationsId}/replays/{replaysId}",
+"httpMethod": "GET",
+"id": "policysimulator.folders.locations.replays.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the Replay to retrieve, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the `Replay`. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
+"location": "path",
+"pattern": "^folders/[^/]+/locations/[^/]+/replays/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplay"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists each Replay in a project, folder, or organization. Each `Replay` is available for at least 7 days.",
+"flatPath": "v1beta/folders/{foldersId}/locations/{locationsId}/replays",
+"httpMethod": "GET",
+"id": "policysimulator.folders.locations.replays.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of Replay objects to return. Defaults to 50. The maximum value is 1000; values above 1000 are rounded down to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous Simulator.ListReplays call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to Simulator.ListReplays must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global` Only `Replay` objects that are direct children of the provided parent are listed. In other words, `Replay` objects that are children of a project will not be included when the parent is a folder of that project.",
+"location": "path",
+"pattern": "^folders/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/replays",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaListReplaysResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/folders/{foldersId}/locations/{locationsId}/replays/{replaysId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "policysimulator.folders.locations.replays.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^folders/[^/]+/locations/[^/]+/replays/[^/]+/operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta/folders/{foldersId}/locations/{locationsId}/replays/{replaysId}/operations",
+"httpMethod": "GET",
+"id": "policysimulator.folders.locations.replays.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^folders/[^/]+/locations/[^/]+/replays/[^/]+/operations$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"results": {
+"methods": {
+"list": {
+"description": "Lists the results of running a Replay.",
+"flatPath": "v1beta/folders/{foldersId}/locations/{locationsId}/replays/{replaysId}/results",
+"httpMethod": "GET",
+"id": "policysimulator.folders.locations.replays.results.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of ReplayResult objects to return. Defaults to 5000. The maximum value is 5000; values above 5000 are rounded down to 5000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous Simulator.ListReplayResults call. Provide this token to retrieve the next page of results. When paginating, all other parameters provided to [Simulator.ListReplayResults[] must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Replay whose results are listed, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}` Example: `projects/my-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
+"location": "path",
+"pattern": "^folders/[^/]+/locations/[^/]+/replays/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/results",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaListReplayResultsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "policysimulator.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta/operations",
+"httpMethod": "GET",
+"id": "policysimulator.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^operations$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"organizations": {
+"resources": {
+"locations": {
+"resources": {
+"orgPolicyViolationsPreviews": {
+"methods": {
+"create": {
+"description": "CreateOrgPolicyViolationsPreview creates an OrgPolicyViolationsPreview for the proposed changes in the provided OrgPolicyViolationsPreview.OrgPolicyOverlay. The changes to OrgPolicy are specified by this `OrgPolicyOverlay`. The resources to scan are inferred from these specified changes.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/orgPolicyViolationsPreviews",
+"httpMethod": "POST",
+"id": "policysimulator.organizations.locations.orgPolicyViolationsPreviews.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"orgPolicyViolationsPreviewId": {
+"description": "Optional. An optional user-specified ID for the OrgPolicyViolationsPreview. If not provided, a random ID will be generated.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The organization under which this OrgPolicyViolationsPreview will be created. Example: `organizations/my-example-org/locations/global`",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/orgPolicyViolationsPreviews",
+"request": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreview"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"generate": {
+"description": "GenerateOrgPolicyViolationsPreview generates an OrgPolicyViolationsPreview for the proposed changes in the provided OrgPolicyViolationsPreview.OrgPolicyOverlay. The changes to OrgPolicy are specified by this `OrgPolicyOverlay`. The resources to scan are inferred from these specified changes.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/orgPolicyViolationsPreviews:generate",
+"httpMethod": "POST",
+"id": "policysimulator.organizations.locations.orgPolicyViolationsPreviews.generate",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The organization under which this OrgPolicyViolationsPreview will be created. Example: `organizations/my-example-org/locations/global`",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/orgPolicyViolationsPreviews:generate",
+"request": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreview"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "GetOrgPolicyViolationsPreview gets the specified OrgPolicyViolationsPreview. Each OrgPolicyViolationsPreview is available for at least 7 days.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/orgPolicyViolationsPreviews/{orgPolicyViolationsPreviewsId}",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.orgPolicyViolationsPreviews.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the OrgPolicyViolationsPreview to get.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/orgPolicyViolationsPreviews/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreview"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "ListOrgPolicyViolationsPreviews lists each OrgPolicyViolationsPreview in an organization. Each OrgPolicyViolationsPreview is available for at least 7 days.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/orgPolicyViolationsPreviews",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.orgPolicyViolationsPreviews.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return. The service may return fewer than this value. If unspecified, at most 5 items will be returned. The maximum value is 10; values above 10 will be coerced to 10.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous call. Provide this to retrieve the subsequent page. When paginating, all other parameters must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent the violations are scoped to. Format: `organizations/{organization}/locations/{location}` Example: `organizations/my-example-org/locations/global`",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/orgPolicyViolationsPreviews",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaListOrgPolicyViolationsPreviewsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/orgPolicyViolationsPreviews/{orgPolicyViolationsPreviewsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.orgPolicyViolationsPreviews.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/orgPolicyViolationsPreviews/[^/]+/operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"orgPolicyViolations": {
+"methods": {
+"list": {
+"description": "ListOrgPolicyViolations lists the OrgPolicyViolations that are present in an OrgPolicyViolationsPreview.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/orgPolicyViolationsPreviews/{orgPolicyViolationsPreviewsId}/orgPolicyViolations",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.orgPolicyViolationsPreviews.orgPolicyViolations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return. The service may return fewer than this value. If unspecified, at most 50 items will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous call. Provide this to retrieve the subsequent page. When paginating, all other parameters must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The OrgPolicyViolationsPreview to get OrgPolicyViolations from. Format: organizations/{organization}/locations/{location}/orgPolicyViolationsPreviews/{orgPolicyViolationsPreview}",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/orgPolicyViolationsPreviews/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/orgPolicyViolations",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaListOrgPolicyViolationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"replays": {
+"methods": {
+"create": {
+"description": "Creates and starts a Replay using the given ReplayConfig.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/replays",
+"httpMethod": "POST",
+"id": "policysimulator.organizations.locations.replays.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource where this Replay will be created. This resource must be a project, folder, or organization with a location. Example: `projects/my-example-project/locations/global`",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/replays",
+"request": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplay"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/replays/{replaysId}",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.replays.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the Replay to retrieve, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the `Replay`. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/replays/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplay"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists each Replay in a project, folder, or organization. Each `Replay` is available for at least 7 days.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/replays",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.replays.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of Replay objects to return. Defaults to 50. The maximum value is 1000; values above 1000 are rounded down to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous Simulator.ListReplays call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to Simulator.ListReplays must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global` Only `Replay` objects that are direct children of the provided parent are listed. In other words, `Replay` objects that are children of a project will not be included when the parent is a folder of that project.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/replays",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaListReplaysResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/replays/{replaysId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.replays.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/replays/[^/]+/operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/replays/{replaysId}/operations",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.replays.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/replays/[^/]+/operations$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"results": {
+"methods": {
+"list": {
+"description": "Lists the results of running a Replay.",
+"flatPath": "v1beta/organizations/{organizationsId}/locations/{locationsId}/replays/{replaysId}/results",
+"httpMethod": "GET",
+"id": "policysimulator.organizations.locations.replays.results.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of ReplayResult objects to return. Defaults to 5000. The maximum value is 5000; values above 5000 are rounded down to 5000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous Simulator.ListReplayResults call. Provide this token to retrieve the next page of results. When paginating, all other parameters provided to [Simulator.ListReplayResults[] must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Replay whose results are listed, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}` Example: `projects/my-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
+"location": "path",
+"pattern": "^organizations/[^/]+/locations/[^/]+/replays/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/results",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaListReplayResultsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"orgPolicyViolationsPreviews": {
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/orgPolicyViolationsPreviews/{orgPolicyViolationsPreviewsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "policysimulator.projects.locations.orgPolicyViolationsPreviews.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/orgPolicyViolationsPreviews/[^/]+/operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"replays": {
+"methods": {
+"create": {
+"description": "Creates and starts a Replay using the given ReplayConfig.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/replays",
+"httpMethod": "POST",
+"id": "policysimulator.projects.locations.replays.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource where this Replay will be created. This resource must be a project, folder, or organization with a location. Example: `projects/my-example-project/locations/global`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/replays",
+"request": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplay"
+},
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the specified Replay. Each `Replay` is available for at least 7 days.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/replays/{replaysId}",
+"httpMethod": "GET",
+"id": "policysimulator.projects.locations.replays.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the Replay to retrieve, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the `Replay`. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/replays/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplay"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists each Replay in a project, folder, or organization. Each `Replay` is available for at least 7 days.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/replays",
+"httpMethod": "GET",
+"id": "policysimulator.projects.locations.replays.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of Replay objects to return. Defaults to 50. The maximum value is 1000; values above 1000 are rounded down to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous Simulator.ListReplays call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to Simulator.ListReplays must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global` Only `Replay` objects that are direct children of the provided parent are listed. In other words, `Replay` objects that are children of a project will not be included when the parent is a folder of that project.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/replays",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaListReplaysResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"operations": {
+"methods": {
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/replays/{replaysId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "policysimulator.projects.locations.replays.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/replays/[^/]+/operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningOperation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/replays/{replaysId}/operations",
+"httpMethod": "GET",
+"id": "policysimulator.projects.locations.replays.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/replays/[^/]+/operations$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1beta/{+name}",
+"response": {
+"$ref": "GoogleLongrunningListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"results": {
+"methods": {
+"list": {
+"description": "Lists the results of running a Replay.",
+"flatPath": "v1beta/projects/{projectsId}/locations/{locationsId}/replays/{replaysId}/results",
+"httpMethod": "GET",
+"id": "policysimulator.projects.locations.replays.results.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of ReplayResult objects to return. Defaults to 5000. The maximum value is 5000; values above 5000 are rounded down to 5000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous Simulator.ListReplayResults call. Provide this token to retrieve the next page of results. When paginating, all other parameters provided to [Simulator.ListReplayResults[] must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Replay whose results are listed, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}` Example: `projects/my-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/replays/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1beta/{+parent}/results",
+"response": {
+"$ref": "GoogleCloudPolicysimulatorV1betaListReplayResultsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241118",
+"rootUrl": "https://policysimulator.googleapis.com/",
+"schemas": {
+"GoogleCloudOrgpolicyV2AlternatePolicySpec": {
+"description": "Similar to PolicySpec but with an extra 'launch' field for launch reference. The PolicySpec here is specific for dry-run/darklaunch.",
+"id": "GoogleCloudOrgpolicyV2AlternatePolicySpec",
+"properties": {
+"launch": {
+"description": "Reference to the launch that will be used while audit logging and to control the launch. Should be set only in the alternate policy.",
+"type": "string"
+},
+"spec": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpec",
+"description": "Specify constraint for configurations of Google Cloud resources."
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2CustomConstraint": {
+"description": "A custom constraint defined by customers which can *only* be applied to the given resource types and organization. By creating a custom constraint, customers can apply policies of this custom constraint. *Creating a custom constraint itself does NOT apply any policy enforcement*.",
+"id": "GoogleCloudOrgpolicyV2CustomConstraint",
+"properties": {
+"actionType": {
+"description": "Allow or deny type.",
+"enum": [
+"ACTION_TYPE_UNSPECIFIED",
+"ALLOW",
+"DENY"
+],
+"enumDescriptions": [
+"Unspecified. Results in an error.",
+"Allowed action type.",
+"Deny action type."
+],
+"type": "string"
+},
+"condition": {
+"description": "Org policy condition/expression. For example: `resource.instanceName.matches(\"[production|test]_.*_(\\d)+\")` or, `resource.management.auto_upgrade == true` The max length of the condition is 1000 characters.",
+"type": "string"
+},
+"description": {
+"description": "Detailed information about this custom policy constraint. The max length of the description is 2000 characters.",
+"type": "string"
+},
+"displayName": {
+"description": "One line display name for the UI. The max length of the display_name is 200 characters.",
+"type": "string"
+},
+"methodTypes": {
+"description": "All the operations being applied for this constraint.",
+"items": {
+"enum": [
+"METHOD_TYPE_UNSPECIFIED",
+"CREATE",
+"UPDATE",
+"DELETE",
+"REMOVE_GRANT",
+"GOVERN_TAGS"
+],
+"enumDescriptions": [
+"Unspecified. Results in an error.",
+"Constraint applied when creating the resource.",
+"Constraint applied when updating the resource.",
+"Constraint applied when deleting the resource. Not supported yet.",
+"Constraint applied when removing an IAM grant.",
+"Constraint applied when enforcing forced tagging."
+],
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "Immutable. Name of the constraint. This is unique within the organization. Format of the name should be * `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example: `organizations/123/customConstraints/custom.createOnlyE2TypeVms` The max length is 70 characters and the minimum length is 1. Note that the prefix `organizations/{organization_id}/customConstraints/` is not counted.",
+"type": "string"
+},
+"resourceTypes": {
+"description": "Immutable. The resource instance type on which this policy applies. Format will be of the form : `/` Example: * `compute.googleapis.com/Instance`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. The last time this custom constraint was updated. This represents the last time that the `CreateCustomConstraint` or `UpdateCustomConstraint` RPC was called",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2Policy": {
+"description": "Defines an organization policy which is used to specify constraints for configurations of Google Cloud resources.",
+"id": "GoogleCloudOrgpolicyV2Policy",
+"properties": {
+"alternate": {
+"$ref": "GoogleCloudOrgpolicyV2AlternatePolicySpec",
+"deprecated": true,
+"description": "Deprecated."
+},
+"dryRunSpec": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpec",
+"description": "Dry-run policy. Audit-only policy, can be used to monitor how the policy would have impacted the existing and future resources if it's enforced."
+},
+"etag": {
+"description": "Optional. An opaque tag indicating the current state of the policy, used for concurrency control. This 'etag' is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
+"type": "string"
+},
+"name": {
+"description": "Immutable. The resource name of the policy. Must be one of the following forms, where `constraint_name` is the name of the constraint which this policy configures: * `projects/{project_number}/policies/{constraint_name}` * `folders/{folder_id}/policies/{constraint_name}` * `organizations/{organization_id}/policies/{constraint_name}` For example, `projects/123/policies/compute.disableSerialPortAccess`. Note: `projects/{project_id}/policies/{constraint_name}` is also an acceptable name for API requests, but responses will return the name using the equivalent project number.",
+"type": "string"
+},
+"spec": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpec",
+"description": "Basic information about the Organization Policy."
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2PolicySpec": {
+"description": "Defines a Google Cloud policy specification which is used to specify constraints for configurations of Google Cloud resources.",
+"id": "GoogleCloudOrgpolicyV2PolicySpec",
+"properties": {
+"etag": {
+"description": "An opaque tag indicating the current version of the policySpec, used for concurrency control. This field is ignored if used in a `CreatePolicy` request. When the policy is returned from either a `GetPolicy` or a `ListPolicies` request, this `etag` indicates the version of the current policySpec to use when executing a read-modify-write loop. When the policy is returned from a `GetEffectivePolicy` request, the `etag` will be unset.",
+"type": "string"
+},
+"inheritFromParent": {
+"description": "Determines the inheritance behavior for this policy. If `inherit_from_parent` is true, policy rules set higher up in the hierarchy (up to the closest root) are inherited and present in the effective policy. If it is false, then no rules are inherited, and this policy becomes the new root for evaluation. This field can be set only for policies which configure list constraints.",
+"type": "boolean"
+},
+"reset": {
+"description": "Ignores policies set above this resource and restores the `constraint_default` enforcement behavior of the specific constraint at this resource. This field can be set in policies for either list or boolean constraints. If set, `rules` must be empty and `inherit_from_parent` must be set to false.",
+"type": "boolean"
+},
+"rules": {
+"description": "In policies for boolean constraints, the following requirements apply: - There must be one and only one policy rule where condition is unset. - Boolean policy rules with conditions must set `enforced` to the opposite of the policy rule without a condition. - During policy evaluation, policy rules with conditions that are true for a target resource take precedence.",
+"items": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpecPolicyRule"
+},
+"type": "array"
+},
+"updateTime": {
+"description": "Output only. The time stamp this was previously updated. This represents the last time a call to `CreatePolicy` or `UpdatePolicy` was made for that policy.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2PolicySpecPolicyRule": {
+"description": "A rule used to express this policy.",
+"id": "GoogleCloudOrgpolicyV2PolicySpecPolicyRule",
+"properties": {
+"allowAll": {
+"description": "Setting this to true means that all values are allowed. This field can be set only in policies for list constraints.",
+"type": "boolean"
+},
+"condition": {
+"$ref": "GoogleTypeExpr",
+"description": "A condition which determines whether this rule is used in the evaluation of the policy. When set, the `expression` field in the `Expr' must include from 1 to 10 subexpressions, joined by the \"||\" or \"&&\" operators. Each subexpression must be of the form \"resource.matchTag('/tag_key_short_name, 'tag_value_short_name')\". or \"resource.matchTagId('tagKeys/key_id', 'tagValues/value_id')\". where key_name and value_name are the resource names for Label Keys and Values. These names are available from the Tag Manager Service. An example expression is: \"resource.matchTag('123456789/environment, 'prod')\". or \"resource.matchTagId('tagKeys/123', 'tagValues/456')\"."
+},
+"denyAll": {
+"description": "Setting this to true means that all values are denied. This field can be set only in policies for list constraints.",
+"type": "boolean"
+},
+"enforce": {
+"description": "If `true`, then the policy is enforced. If `false`, then any configuration is acceptable. This field can be set only in policies for boolean constraints.",
+"type": "boolean"
+},
+"parameters": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Optional. Required for GMCs if parameters defined in constraints. Pass parameter values when policy enforcement is enabled. Ensure that parameter value types match those defined in the constraint definition. For example: { \"allowedLocations\" : [\"us-east1\", \"us-west1\"], \"allowAll\" : true }",
+"type": "object"
+},
+"values": {
+"$ref": "GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues",
+"description": "List of values to be used for this policy rule. This field can be set only in policies for list constraints."
+}
+},
+"type": "object"
+},
+"GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues": {
+"description": "A message that holds specific allowed and denied values. This message can define specific values and subtrees of the Resource Manager resource hierarchy (`Organizations`, `Folders`, `Projects`) that are allowed or denied. This is achieved by using the `under:` and optional `is:` prefixes. The `under:` prefix is used to denote resource subtree values. The `is:` prefix is used to denote specific values, and is required only if the value contains a \":\". Values prefixed with \"is:\" are treated the same as values with no prefix. Ancestry subtrees must be in one of the following formats: - `projects/` (for example, `projects/tokyo-rain-123`) - `folders/` (for example, `folders/1234`) - `organizations/` (for example, `organizations/1234`) The `supports_under` field of the associated `Constraint` defines whether ancestry prefixes can be used.",
+"id": "GoogleCloudOrgpolicyV2PolicySpecPolicyRuleStringValues",
+"properties": {
+"allowedValues": {
+"description": "List of values allowed at this resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"deniedValues": {
+"description": "List of values denied at this resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1Replay": {
+"description": "A resource describing a `Replay`, or simulation.",
+"id": "GoogleCloudPolicysimulatorV1Replay",
+"properties": {
+"config": {
+"$ref": "GoogleCloudPolicysimulatorV1ReplayConfig",
+"description": "Required. The configuration used for the `Replay`."
+},
+"name": {
+"description": "Output only. The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
+"readOnly": true,
+"type": "string"
+},
+"resultsSummary": {
+"$ref": "GoogleCloudPolicysimulatorV1ReplayResultsSummary",
+"description": "Output only. Summary statistics about the replayed log entries.",
+"readOnly": true
+},
+"state": {
+"description": "Output only. The current state of the `Replay`.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"RUNNING",
+"SUCCEEDED",
+"FAILED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The `Replay` has not started yet.",
+"The `Replay` is currently running.",
+"The `Replay` has successfully completed.",
+"The `Replay` has finished with an error."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1ReplayConfig": {
+"description": "The configuration used for a Replay.",
+"id": "GoogleCloudPolicysimulatorV1ReplayConfig",
+"properties": {
+"logSource": {
+"description": "The logs to use as input for the Replay.",
+"enum": [
+"LOG_SOURCE_UNSPECIFIED",
+"RECENT_ACCESSES"
+],
+"enumDescriptions": [
+"An unspecified log source. If the log source is unspecified, the Replay defaults to using `RECENT_ACCESSES`.",
+"All access logs from the last 90 days. These logs may not include logs from the most recent 7 days."
+],
+"type": "string"
+},
+"policyOverlay": {
+"additionalProperties": {
+"$ref": "GoogleIamV1Policy"
+},
+"description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1ReplayOperationMetadata": {
+"description": "Metadata about a Replay operation.",
+"id": "GoogleCloudPolicysimulatorV1ReplayOperationMetadata",
+"properties": {
+"startTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1ReplayResultsSummary": {
+"description": "Summary statistics about the replayed log entries.",
+"id": "GoogleCloudPolicysimulatorV1ReplayResultsSummary",
+"properties": {
+"differenceCount": {
+"description": "The number of replayed log entries with a difference between baseline and simulated policies.",
+"format": "int32",
+"type": "integer"
+},
+"errorCount": {
+"description": "The number of log entries that could not be replayed.",
+"format": "int32",
+"type": "integer"
+},
+"logCount": {
+"description": "The total number of log entries replayed.",
+"format": "int32",
+"type": "integer"
+},
+"newestDate": {
+"$ref": "GoogleTypeDate",
+"description": "The date of the newest log entry replayed."
+},
+"oldestDate": {
+"$ref": "GoogleTypeDate",
+"description": "The date of the oldest log entry replayed."
+},
+"unchangedCount": {
+"description": "The number of replayed log entries with no difference between baseline and simulated policies.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1alphaCreateOrgPolicyViolationsPreviewOperationMetadata": {
+"description": "CreateOrgPolicyViolationsPreviewOperationMetadata is metadata about an OrgPolicyViolationsPreview generations operation.",
+"id": "GoogleCloudPolicysimulatorV1alphaCreateOrgPolicyViolationsPreviewOperationMetadata",
+"properties": {
+"requestTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"resourcesFound": {
+"description": "Total number of resources that need scanning. Should equal resource_scanned + resources_pending",
+"format": "int32",
+"type": "integer"
+},
+"resourcesPending": {
+"description": "Number of resources still to scan.",
+"format": "int32",
+"type": "integer"
+},
+"resourcesScanned": {
+"description": "Number of resources already scanned.",
+"format": "int32",
+"type": "integer"
+},
+"startTime": {
+"description": "Time when the request started processing, i.e., when the state was set to RUNNING.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state of the operation.",
+"enum": [
+"PREVIEW_STATE_UNSPECIFIED",
+"PREVIEW_PENDING",
+"PREVIEW_RUNNING",
+"PREVIEW_SUCCEEDED",
+"PREVIEW_FAILED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The OrgPolicyViolationsPreview has not been created yet.",
+"The OrgPolicyViolationsPreview is currently being created.",
+"The OrgPolicyViolationsPreview creation finished successfully.",
+"The OrgPolicyViolationsPreview creation failed with an error."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1alphaGenerateOrgPolicyViolationsPreviewOperationMetadata": {
+"description": "GenerateOrgPolicyViolationsPreviewOperationMetadata is metadata about an OrgPolicyViolationsPreview generations operation.",
+"id": "GoogleCloudPolicysimulatorV1alphaGenerateOrgPolicyViolationsPreviewOperationMetadata",
+"properties": {
+"requestTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"resourcesFound": {
+"description": "Total number of resources that need scanning. Should equal resource_scanned + resources_pending",
+"format": "int32",
+"type": "integer"
+},
+"resourcesPending": {
+"description": "Number of resources still to scan.",
+"format": "int32",
+"type": "integer"
+},
+"resourcesScanned": {
+"description": "Number of resources already scanned.",
+"format": "int32",
+"type": "integer"
+},
+"startTime": {
+"description": "Time when the request started processing, i.e. when the state was set to RUNNING.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "The current state of the operation.",
+"enum": [
+"PREVIEW_STATE_UNSPECIFIED",
+"PREVIEW_PENDING",
+"PREVIEW_RUNNING",
+"PREVIEW_SUCCEEDED",
+"PREVIEW_FAILED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The OrgPolicyViolationsPreview has not been created yet.",
+"The OrgPolicyViolationsPreview is currently being created.",
+"The OrgPolicyViolationsPreview creation finished successfully.",
+"The OrgPolicyViolationsPreview creation failed with an error."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlay": {
+"description": "The proposed changes to OrgPolicy.",
+"id": "GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlay",
+"properties": {
+"customConstraints": {
+"description": "Optional. The OrgPolicy CustomConstraint changes to preview violations for. Any existing CustomConstraints with the same name will be overridden in the simulation. That is, violations will be determined as if all custom constraints in the overlay were instantiated. Only a single custom_constraint is supported in the overlay at a time. For evaluating multiple constraints, multiple `GenerateOrgPolicyViolationsPreview` requests are made, where each request evaluates a single constraint.",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlayCustomConstraintOverlay"
+},
+"type": "array"
+},
+"policies": {
+"description": "Optional. The OrgPolicy changes to preview violations for. Any existing OrgPolicies with the same name will be overridden in the simulation. That is, violations will be determined as if all policies in the overlay were created or updated.",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlayPolicyOverlay"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlayCustomConstraintOverlay": {
+"description": "A change to an OrgPolicy custom constraint.",
+"id": "GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlayCustomConstraintOverlay",
+"properties": {
+"customConstraint": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint",
+"description": "Optional. The new or updated custom constraint."
+},
+"customConstraintParent": {
+"description": "Optional. Resource the constraint is attached to. Example: \"organization/987654\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlayPolicyOverlay": {
+"description": "A change to an OrgPolicy.",
+"id": "GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlayPolicyOverlay",
+"properties": {
+"policy": {
+"$ref": "GoogleCloudOrgpolicyV2Policy",
+"description": "Optional. The new or updated OrgPolicy."
+},
+"policyParent": {
+"description": "Optional. The parent of the policy we are attaching to. Example: \"projects/123456\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1alphaOrgPolicyViolationsPreview": {
+"description": "OrgPolicyViolationsPreview is a resource providing a preview of the violations that will exist if an OrgPolicy change is made. The list of violations are modeled as child resources and retrieved via a ListOrgPolicyViolations API call. There are potentially more OrgPolicyViolations than could fit in an embedded field. Thus, the use of a child resource instead of a field.",
+"id": "GoogleCloudPolicysimulatorV1alphaOrgPolicyViolationsPreview",
+"properties": {
+"createTime": {
+"description": "Output only. Time when this `OrgPolicyViolationsPreview` was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"customConstraints": {
+"description": "Output only. The names of the constraints against which all `OrgPolicyViolations` were evaluated. If `OrgPolicyOverlay` only contains `PolicyOverlay` then it contains the name of the configured custom constraint, applicable to the specified policies. Otherwise it contains the name of the constraint specified in `CustomConstraintOverlay`. Format: `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example: `organizations/123/customConstraints/custom.createOnlyE2TypeVms`",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"name": {
+"description": "Output only. The resource name of the `OrgPolicyViolationsPreview`. It has the following format: `organizations/{organization}/locations/{location}/orgPolicyViolationsPreviews/{orgPolicyViolationsPreview}` Example: `organizations/my-example-org/locations/global/orgPolicyViolationsPreviews/506a5f7f`",
+"readOnly": true,
+"type": "string"
+},
+"overlay": {
+"$ref": "GoogleCloudPolicysimulatorV1alphaOrgPolicyOverlay",
+"description": "Required. The proposed changes we are previewing violations for."
+},
+"resourceCounts": {
+"$ref": "GoogleCloudPolicysimulatorV1alphaOrgPolicyViolationsPreviewResourceCounts",
+"description": "Output only. A summary of the state of all resources scanned for compliance with the changed OrgPolicy.",
+"readOnly": true
+},
+"state": {
+"description": "Output only. The state of the `OrgPolicyViolationsPreview`.",
+"enum": [
+"PREVIEW_STATE_UNSPECIFIED",
+"PREVIEW_PENDING",
+"PREVIEW_RUNNING",
+"PREVIEW_SUCCEEDED",
+"PREVIEW_FAILED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The OrgPolicyViolationsPreview has not been created yet.",
+"The OrgPolicyViolationsPreview is currently being created.",
+"The OrgPolicyViolationsPreview creation finished successfully.",
+"The OrgPolicyViolationsPreview creation failed with an error."
+],
+"readOnly": true,
+"type": "string"
+},
+"violationsCount": {
+"description": "Output only. The number of OrgPolicyViolations in this `OrgPolicyViolationsPreview`. This count may differ from `resource_summary.noncompliant_count` because each OrgPolicyViolation is specific to a resource **and** constraint. If there are multiple constraints being evaluated (i.e. multiple policies in the overlay), a single resource may violate multiple constraints.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1alphaOrgPolicyViolationsPreviewResourceCounts": {
+"description": "A summary of the state of all resources scanned for compliance with the changed OrgPolicy.",
+"id": "GoogleCloudPolicysimulatorV1alphaOrgPolicyViolationsPreviewResourceCounts",
+"properties": {
+"compliant": {
+"description": "Output only. Number of scanned resources with zero violations.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"errors": {
+"description": "Output only. Number of resources that returned an error when scanned.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"noncompliant": {
+"description": "Output only. Number of scanned resources with at least one violation.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"scanned": {
+"description": "Output only. Number of resources checked for compliance. Must equal: unenforced + noncompliant + compliant + error",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"unenforced": {
+"description": "Output only. Number of resources where the constraint was not enforced, i.e. the Policy set `enforced: false` for that resource.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaAccessStateDiff": {
+"description": "A summary and comparison of the principal's access under the current (baseline) policies and the proposed (simulated) policies for a single access tuple.",
+"id": "GoogleCloudPolicysimulatorV1betaAccessStateDiff",
+"properties": {
+"accessChange": {
+"description": "How the principal's access, specified in the AccessState field, changed between the current (baseline) policies and proposed (simulated) policies.",
+"enum": [
+"ACCESS_CHANGE_TYPE_UNSPECIFIED",
+"NO_CHANGE",
+"UNKNOWN_CHANGE",
+"ACCESS_REVOKED",
+"ACCESS_GAINED",
+"ACCESS_MAYBE_REVOKED",
+"ACCESS_MAYBE_GAINED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The principal's access did not change. This includes the case where both baseline and simulated are UNKNOWN, but the unknown information is equivalent.",
+"The principal's access under both the current policies and the proposed policies is `UNKNOWN`, but the unknown information differs between them.",
+"The principal had access under the current policies (`GRANTED`), but will no longer have access after the proposed changes (`NOT_GRANTED`).",
+"The principal did not have access under the current policies (`NOT_GRANTED`), but will have access after the proposed changes (`GRANTED`).",
+"This result can occur for the following reasons: * The principal had access under the current policies (`GRANTED`), but their access after the proposed changes is `UNKNOWN`. * The principal's access under the current policies is `UNKNOWN`, but they will not have access after the proposed changes (`NOT_GRANTED`).",
+"This result can occur for the following reasons: * The principal did not have access under the current policies (`NOT_GRANTED`), but their access after the proposed changes is `UNKNOWN`. * The principal's access under the current policies is `UNKNOWN`, but they will have access after the proposed changes (`GRANTED`)."
+],
+"type": "string"
+},
+"baseline": {
+"$ref": "GoogleCloudPolicysimulatorV1betaExplainedAccess",
+"description": "The results of evaluating the access tuple under the current (baseline) policies. If the AccessState couldn't be fully evaluated, this field explains why."
+},
+"simulated": {
+"$ref": "GoogleCloudPolicysimulatorV1betaExplainedAccess",
+"description": "The results of evaluating the access tuple under the proposed (simulated) policies. If the AccessState couldn't be fully evaluated, this field explains why."
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaAccessTuple": {
+"description": "Information about the principal, resource, and permission to check.",
+"id": "GoogleCloudPolicysimulatorV1betaAccessTuple",
+"properties": {
+"fullResourceName": {
+"description": "Required. The full resource name that identifies the resource. For example, `//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names.",
+"type": "string"
+},
+"permission": {
+"description": "Required. The IAM permission to check for the specified principal and resource. For a complete list of IAM permissions, see https://cloud.google.com/iam/help/permissions/reference. For a complete list of predefined IAM roles and the permissions in each role, see https://cloud.google.com/iam/help/roles/reference.",
+"type": "string"
+},
+"principal": {
+"description": "Required. The principal whose access you want to check, in the form of the email address that represents that principal. For example, `alice@example.com` or `my-service-account@my-project.iam.gserviceaccount.com`. The principal must be a Google Account or a service account. Other types of principals are not supported.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaBindingExplanation": {
+"description": "Details about how a binding in a policy affects a principal's ability to use a permission.",
+"id": "GoogleCloudPolicysimulatorV1betaBindingExplanation",
+"properties": {
+"access": {
+"description": "Required. Indicates whether _this binding_ provides the specified permission to the specified principal for the specified resource. This field does _not_ indicate whether the principal actually has the permission for the resource. There might be another binding that overrides this binding. To determine whether the principal actually has the permission, use the `access` field in the TroubleshootIamPolicyResponse.",
+"enum": [
+"ACCESS_STATE_UNSPECIFIED",
+"GRANTED",
+"NOT_GRANTED",
+"UNKNOWN_CONDITIONAL",
+"UNKNOWN_INFO_DENIED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The principal has the permission.",
+"The principal does not have the permission.",
+"The principal has the permission only if a condition expression evaluates to `true`.",
+"The user who created the Replay does not have access to all of the policies that Policy Simulator needs to evaluate."
+],
+"type": "string"
+},
+"condition": {
+"$ref": "GoogleTypeExpr",
+"description": "A condition expression that prevents this binding from granting access unless the expression evaluates to `true`. To learn about IAM Conditions, see https://cloud.google.com/iam/docs/conditions-overview."
+},
+"memberships": {
+"additionalProperties": {
+"$ref": "GoogleCloudPolicysimulatorV1betaBindingExplanationAnnotatedMembership"
+},
+"description": "Indicates whether each principal in the binding includes the principal specified in the request, either directly or indirectly. Each key identifies a principal in the binding, and each value indicates whether the principal in the binding includes the principal in the request. For example, suppose that a binding includes the following principals: * `user:alice@example.com` * `group:product-eng@example.com` The principal in the replayed access tuple is `user:bob@example.com`. This user is a principal of the group `group:product-eng@example.com`. For the first principal in the binding, the key is `user:alice@example.com`, and the `membership` field in the value is set to `MEMBERSHIP_NOT_INCLUDED`. For the second principal in the binding, the key is `group:product-eng@example.com`, and the `membership` field in the value is set to `MEMBERSHIP_INCLUDED`.",
+"type": "object"
+},
+"relevance": {
+"description": "The relevance of this binding to the overall determination for the entire policy.",
+"enum": [
+"HEURISTIC_RELEVANCE_UNSPECIFIED",
+"NORMAL",
+"HIGH"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The data point has a limited effect on the result. Changing the data point is unlikely to affect the overall determination.",
+"The data point has a strong effect on the result. Changing the data point is likely to affect the overall determination."
+],
+"type": "string"
+},
+"role": {
+"description": "The role that this binding grants. For example, `roles/compute.serviceAgent`. For a complete list of predefined IAM roles, as well as the permissions in each role, see https://cloud.google.com/iam/help/roles/reference.",
+"type": "string"
+},
+"rolePermission": {
+"description": "Indicates whether the role granted by this binding contains the specified permission.",
+"enum": [
+"ROLE_PERMISSION_UNSPECIFIED",
+"ROLE_PERMISSION_INCLUDED",
+"ROLE_PERMISSION_NOT_INCLUDED",
+"ROLE_PERMISSION_UNKNOWN_INFO_DENIED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The permission is included in the role.",
+"The permission is not included in the role.",
+"The user who created the Replay is not allowed to access the binding."
+],
+"type": "string"
+},
+"rolePermissionRelevance": {
+"description": "The relevance of the permission's existence, or nonexistence, in the role to the overall determination for the entire policy.",
+"enum": [
+"HEURISTIC_RELEVANCE_UNSPECIFIED",
+"NORMAL",
+"HIGH"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The data point has a limited effect on the result. Changing the data point is unlikely to affect the overall determination.",
+"The data point has a strong effect on the result. Changing the data point is likely to affect the overall determination."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaBindingExplanationAnnotatedMembership": {
+"description": "Details about whether the binding includes the principal.",
+"id": "GoogleCloudPolicysimulatorV1betaBindingExplanationAnnotatedMembership",
+"properties": {
+"membership": {
+"description": "Indicates whether the binding includes the principal.",
+"enum": [
+"MEMBERSHIP_UNSPECIFIED",
+"MEMBERSHIP_INCLUDED",
+"MEMBERSHIP_NOT_INCLUDED",
+"MEMBERSHIP_UNKNOWN_INFO_DENIED",
+"MEMBERSHIP_UNKNOWN_UNSUPPORTED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The binding includes the principal. The principal can be included directly or indirectly. For example: * A principal is included directly if that principal is listed in the binding. * A principal is included indirectly if that principal is in a Google group or Google Workspace domain that is listed in the binding.",
+"The binding does not include the principal.",
+"The user who created the Replay is not allowed to access the binding.",
+"The principal is an unsupported type. Only Google Accounts and service accounts are supported."
+],
+"type": "string"
+},
+"relevance": {
+"description": "The relevance of the principal's status to the overall determination for the binding.",
+"enum": [
+"HEURISTIC_RELEVANCE_UNSPECIFIED",
+"NORMAL",
+"HIGH"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The data point has a limited effect on the result. Changing the data point is unlikely to affect the overall determination.",
+"The data point has a strong effect on the result. Changing the data point is likely to affect the overall determination."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaCreateOrgPolicyViolationsPreviewOperationMetadata": {
+"description": "CreateOrgPolicyViolationsPreviewOperationMetadata is metadata about an OrgPolicyViolationsPreview generations operation.",
+"id": "GoogleCloudPolicysimulatorV1betaCreateOrgPolicyViolationsPreviewOperationMetadata",
+"properties": {
+"requestTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"resourcesFound": {
+"description": "Total number of resources that need scanning. Should equal resource_scanned + resources_pending",
+"format": "int32",
+"type": "integer"
+},
+"resourcesPending": {
+"description": "Number of resources still to scan.",
+"format": "int32",
+"type": "integer"
+},
+"resourcesScanned": {
+"description": "Number of resources already scanned.",
+"format": "int32",
+"type": "integer"
+},
+"startTime": {
+"description": "Time when the request started processing, i.e., when the state was set to RUNNING.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state of the operation.",
+"enum": [
+"PREVIEW_STATE_UNSPECIFIED",
+"PREVIEW_PENDING",
+"PREVIEW_RUNNING",
+"PREVIEW_SUCCEEDED",
+"PREVIEW_FAILED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The OrgPolicyViolationsPreview has not been created yet.",
+"The OrgPolicyViolationsPreview is currently being created.",
+"The OrgPolicyViolationsPreview creation finished successfully.",
+"The OrgPolicyViolationsPreview creation failed with an error."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaExplainedAccess": {
+"description": "Details about how a set of policies, listed in ExplainedPolicy, resulted in a certain AccessState when replaying an access tuple.",
+"id": "GoogleCloudPolicysimulatorV1betaExplainedAccess",
+"properties": {
+"accessState": {
+"description": "Whether the principal in the access tuple has permission to access the resource in the access tuple under the given policies.",
+"enum": [
+"ACCESS_STATE_UNSPECIFIED",
+"GRANTED",
+"NOT_GRANTED",
+"UNKNOWN_CONDITIONAL",
+"UNKNOWN_INFO_DENIED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The principal has the permission.",
+"The principal does not have the permission.",
+"The principal has the permission only if a condition expression evaluates to `true`.",
+"The user who created the Replay does not have access to all of the policies that Policy Simulator needs to evaluate."
+],
+"type": "string"
+},
+"errors": {
+"description": "If the AccessState is `UNKNOWN`, this field contains a list of errors explaining why the result is `UNKNOWN`. If the `AccessState` is `GRANTED` or `NOT_GRANTED`, this field is omitted.",
+"items": {
+"$ref": "GoogleRpcStatus"
+},
+"type": "array"
+},
+"policies": {
+"description": "If the AccessState is `UNKNOWN`, this field contains the policies that led to that result. If the `AccessState` is `GRANTED` or `NOT_GRANTED`, this field is omitted.",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1betaExplainedPolicy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaExplainedPolicy": {
+"description": "Details about how a specific IAM Policy contributed to the access check.",
+"id": "GoogleCloudPolicysimulatorV1betaExplainedPolicy",
+"properties": {
+"access": {
+"description": "Indicates whether _this policy_ provides the specified permission to the specified principal for the specified resource. This field does _not_ indicate whether the principal actually has the permission for the resource. There might be another policy that overrides this policy. To determine whether the principal actually has the permission, use the `access` field in the TroubleshootIamPolicyResponse.",
+"enum": [
+"ACCESS_STATE_UNSPECIFIED",
+"GRANTED",
+"NOT_GRANTED",
+"UNKNOWN_CONDITIONAL",
+"UNKNOWN_INFO_DENIED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The principal has the permission.",
+"The principal does not have the permission.",
+"The principal has the permission only if a condition expression evaluates to `true`.",
+"The user who created the Replay does not have access to all of the policies that Policy Simulator needs to evaluate."
+],
+"type": "string"
+},
+"bindingExplanations": {
+"description": "Details about how each binding in the policy affects the principal's ability, or inability, to use the permission for the resource. If the user who created the Replay does not have access to the policy, this field is omitted.",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1betaBindingExplanation"
+},
+"type": "array"
+},
+"fullResourceName": {
+"description": "The full resource name that identifies the resource. For example, `//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/my-instance`. If the user who created the Replay does not have access to the policy, this field is omitted. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names.",
+"type": "string"
+},
+"policy": {
+"$ref": "GoogleIamV1Policy",
+"description": "The IAM policy attached to the resource. If the user who created the Replay does not have access to the policy, this field is empty."
+},
+"relevance": {
+"description": "The relevance of this policy to the overall determination in the TroubleshootIamPolicyResponse. If the user who created the Replay does not have access to the policy, this field is omitted.",
+"enum": [
+"HEURISTIC_RELEVANCE_UNSPECIFIED",
+"NORMAL",
+"HIGH"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The data point has a limited effect on the result. Changing the data point is unlikely to affect the overall determination.",
+"The data point has a strong effect on the result. Changing the data point is likely to affect the overall determination."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaGenerateOrgPolicyViolationsPreviewOperationMetadata": {
+"description": "GenerateOrgPolicyViolationsPreviewOperationMetadata is metadata about an OrgPolicyViolationsPreview generations operation.",
+"id": "GoogleCloudPolicysimulatorV1betaGenerateOrgPolicyViolationsPreviewOperationMetadata",
+"properties": {
+"requestTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"resourcesFound": {
+"description": "Total number of resources that need scanning. Should equal resource_scanned + resources_pending",
+"format": "int32",
+"type": "integer"
+},
+"resourcesPending": {
+"description": "Number of resources still to scan.",
+"format": "int32",
+"type": "integer"
+},
+"resourcesScanned": {
+"description": "Number of resources already scanned.",
+"format": "int32",
+"type": "integer"
+},
+"startTime": {
+"description": "Time when the request started processing, i.e. when the state was set to RUNNING.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "The current state of the operation.",
+"enum": [
+"PREVIEW_STATE_UNSPECIFIED",
+"PREVIEW_PENDING",
+"PREVIEW_RUNNING",
+"PREVIEW_SUCCEEDED",
+"PREVIEW_FAILED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The OrgPolicyViolationsPreview has not been created yet.",
+"The OrgPolicyViolationsPreview is currently being created.",
+"The OrgPolicyViolationsPreview creation finished successfully.",
+"The OrgPolicyViolationsPreview creation failed with an error."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaListOrgPolicyViolationsPreviewsResponse": {
+"description": "ListOrgPolicyViolationsPreviewsResponse is the response message for OrgPolicyViolationsPreviewService.ListOrgPolicyViolationsPreviews.",
+"id": "GoogleCloudPolicysimulatorV1betaListOrgPolicyViolationsPreviewsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that you can use to retrieve the next page of results. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"orgPolicyViolationsPreviews": {
+"description": "The list of OrgPolicyViolationsPreview",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreview"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaListOrgPolicyViolationsResponse": {
+"description": "ListOrgPolicyViolationsResponse is the response message for OrgPolicyViolationsPreviewService.ListOrgPolicyViolations",
+"id": "GoogleCloudPolicysimulatorV1betaListOrgPolicyViolationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that you can use to retrieve the next page of results. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"orgPolicyViolations": {
+"description": "The list of OrgPolicyViolations",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaListReplayResultsResponse": {
+"description": "Response message for Simulator.ListReplayResults.",
+"id": "GoogleCloudPolicysimulatorV1betaListReplayResultsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that you can use to retrieve the next page of ReplayResult objects. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"replayResults": {
+"description": "The results of running a Replay.",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplayResult"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaListReplaysResponse": {
+"description": "Response message for Simulator.ListReplays.",
+"id": "GoogleCloudPolicysimulatorV1betaListReplaysResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that you can use to retrieve the next page of results. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"replays": {
+"description": "The list of Replay objects.",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplay"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaOrgPolicyOverlay": {
+"description": "The proposed changes to OrgPolicy.",
+"id": "GoogleCloudPolicysimulatorV1betaOrgPolicyOverlay",
+"properties": {
+"customConstraints": {
+"description": "Optional. The OrgPolicy CustomConstraint changes to preview violations for. Any existing CustomConstraints with the same name will be overridden in the simulation. That is, violations will be determined as if all custom constraints in the overlay were instantiated. Only a single custom_constraint is supported in the overlay at a time. For evaluating multiple constraints, multiple `GenerateOrgPolicyViolationsPreview` requests are made, where each request evaluates a single constraint.",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyOverlayCustomConstraintOverlay"
+},
+"type": "array"
+},
+"policies": {
+"description": "Optional. The OrgPolicy changes to preview violations for. Any existing OrgPolicies with the same name will be overridden in the simulation. That is, violations will be determined as if all policies in the overlay were created or updated.",
+"items": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyOverlayPolicyOverlay"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaOrgPolicyOverlayCustomConstraintOverlay": {
+"description": "A change to an OrgPolicy custom constraint.",
+"id": "GoogleCloudPolicysimulatorV1betaOrgPolicyOverlayCustomConstraintOverlay",
+"properties": {
+"customConstraint": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint",
+"description": "Optional. The new or updated custom constraint."
+},
+"customConstraintParent": {
+"description": "Optional. Resource the constraint is attached to. Example: \"organization/987654\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaOrgPolicyOverlayPolicyOverlay": {
+"description": "A change to an OrgPolicy.",
+"id": "GoogleCloudPolicysimulatorV1betaOrgPolicyOverlayPolicyOverlay",
+"properties": {
+"policy": {
+"$ref": "GoogleCloudOrgpolicyV2Policy",
+"description": "Optional. The new or updated OrgPolicy."
+},
+"policyParent": {
+"description": "Optional. The parent of the policy we are attaching to. Example: \"projects/123456\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaOrgPolicyViolation": {
+"description": "OrgPolicyViolation is a resource representing a single resource violating a single OrgPolicy constraint.",
+"id": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolation",
+"properties": {
+"customConstraint": {
+"$ref": "GoogleCloudOrgpolicyV2CustomConstraint",
+"description": "The custom constraint being violated."
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "Any error encountered during the evaluation."
+},
+"name": {
+"description": "The name of the `OrgPolicyViolation`. Example: organizations/my-example-org/locations/global/orgPolicyViolationsPreviews/506a5f7f/orgPolicyViolations/38ce`",
+"type": "string"
+},
+"resource": {
+"$ref": "GoogleCloudPolicysimulatorV1betaResourceContext",
+"description": "The resource violating the constraint."
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreview": {
+"description": "OrgPolicyViolationsPreview is a resource providing a preview of the violations that will exist if an OrgPolicy change is made. The list of violations are modeled as child resources and retrieved via a ListOrgPolicyViolations API call. There are potentially more OrgPolicyViolations than could fit in an embedded field. Thus, the use of a child resource instead of a field.",
+"id": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreview",
+"properties": {
+"createTime": {
+"description": "Output only. Time when this `OrgPolicyViolationsPreview` was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"customConstraints": {
+"description": "Output only. The names of the constraints against which all `OrgPolicyViolations` were evaluated. If `OrgPolicyOverlay` only contains `PolicyOverlay` then it contains the name of the configured custom constraint, applicable to the specified policies. Otherwise it contains the name of the constraint specified in `CustomConstraintOverlay`. Format: `organizations/{organization_id}/customConstraints/{custom_constraint_id}` Example: `organizations/123/customConstraints/custom.createOnlyE2TypeVms`",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"name": {
+"description": "Output only. The resource name of the `OrgPolicyViolationsPreview`. It has the following format: `organizations/{organization}/locations/{location}/orgPolicyViolationsPreviews/{orgPolicyViolationsPreview}` Example: `organizations/my-example-org/locations/global/orgPolicyViolationsPreviews/506a5f7f`",
+"readOnly": true,
+"type": "string"
+},
+"overlay": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyOverlay",
+"description": "Required. The proposed changes we are previewing violations for."
+},
+"resourceCounts": {
+"$ref": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreviewResourceCounts",
+"description": "Output only. A summary of the state of all resources scanned for compliance with the changed OrgPolicy.",
+"readOnly": true
+},
+"state": {
+"description": "Output only. The state of the `OrgPolicyViolationsPreview`.",
+"enum": [
+"PREVIEW_STATE_UNSPECIFIED",
+"PREVIEW_PENDING",
+"PREVIEW_RUNNING",
+"PREVIEW_SUCCEEDED",
+"PREVIEW_FAILED"
+],
+"enumDescriptions": [
+"The state is unspecified.",
+"The OrgPolicyViolationsPreview has not been created yet.",
+"The OrgPolicyViolationsPreview is currently being created.",
+"The OrgPolicyViolationsPreview creation finished successfully.",
+"The OrgPolicyViolationsPreview creation failed with an error."
+],
+"readOnly": true,
+"type": "string"
+},
+"violationsCount": {
+"description": "Output only. The number of OrgPolicyViolations in this `OrgPolicyViolationsPreview`. This count may differ from `resource_summary.noncompliant_count` because each OrgPolicyViolation is specific to a resource **and** constraint. If there are multiple constraints being evaluated (i.e. multiple policies in the overlay), a single resource may violate multiple constraints.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreviewResourceCounts": {
+"description": "A summary of the state of all resources scanned for compliance with the changed OrgPolicy.",
+"id": "GoogleCloudPolicysimulatorV1betaOrgPolicyViolationsPreviewResourceCounts",
+"properties": {
+"compliant": {
+"description": "Output only. Number of scanned resources with zero violations.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"errors": {
+"description": "Output only. Number of resources that returned an error when scanned.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"noncompliant": {
+"description": "Output only. Number of scanned resources with at least one violation.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"scanned": {
+"description": "Output only. Number of resources checked for compliance. Must equal: unenforced + noncompliant + compliant + error",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"unenforced": {
+"description": "Output only. Number of resources where the constraint was not enforced, i.e. the Policy set `enforced: false` for that resource.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaReplay": {
+"description": "A resource describing a `Replay`, or simulation.",
+"id": "GoogleCloudPolicysimulatorV1betaReplay",
+"properties": {
+"config": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplayConfig",
+"description": "Required. The configuration used for the `Replay`."
+},
+"name": {
+"description": "Output only. The resource name of the `Replay`, which has the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36`",
+"readOnly": true,
+"type": "string"
+},
+"resultsSummary": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplayResultsSummary",
+"description": "Output only. Summary statistics about the replayed log entries.",
+"readOnly": true
+},
+"state": {
+"description": "Output only. The current state of the `Replay`.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"RUNNING",
+"SUCCEEDED",
+"FAILED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The `Replay` has not started yet.",
+"The `Replay` is currently running.",
+"The `Replay` has successfully completed.",
+"The `Replay` has finished with an error."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaReplayConfig": {
+"description": "The configuration used for a Replay.",
+"id": "GoogleCloudPolicysimulatorV1betaReplayConfig",
+"properties": {
+"logSource": {
+"description": "The logs to use as input for the Replay.",
+"enum": [
+"LOG_SOURCE_UNSPECIFIED",
+"RECENT_ACCESSES"
+],
+"enumDescriptions": [
+"An unspecified log source. If the log source is unspecified, the Replay defaults to using `RECENT_ACCESSES`.",
+"All access logs from the last 90 days. These logs may not include logs from the most recent 7 days."
+],
+"type": "string"
+},
+"policyOverlay": {
+"additionalProperties": {
+"$ref": "GoogleIamV1Policy"
+},
+"description": "A mapping of the resources that you want to simulate policies for and the policies that you want to simulate. Keys are the full resource names for the resources. For example, `//cloudresourcemanager.googleapis.com/projects/my-project`. For examples of full resource names for Google Cloud services, see https://cloud.google.com/iam/help/troubleshooter/full-resource-names. Values are Policy objects representing the policies that you want to simulate. Replays automatically take into account any IAM policies inherited through the resource hierarchy, and any policies set on descendant resources. You do not need to include these policies in the policy overlay.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaReplayDiff": {
+"description": "The difference between the results of evaluating an access tuple under the current (baseline) policies and under the proposed (simulated) policies. This difference explains how a principal's access could change if the proposed policies were applied.",
+"id": "GoogleCloudPolicysimulatorV1betaReplayDiff",
+"properties": {
+"accessDiff": {
+"$ref": "GoogleCloudPolicysimulatorV1betaAccessStateDiff",
+"description": "A summary and comparison of the principal's access under the current (baseline) policies and the proposed (simulated) policies for a single access tuple. The evaluation of the principal's access is reported in the AccessState field."
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaReplayResult": {
+"description": "The result of replaying a single access tuple against a simulated state.",
+"id": "GoogleCloudPolicysimulatorV1betaReplayResult",
+"properties": {
+"accessTuple": {
+"$ref": "GoogleCloudPolicysimulatorV1betaAccessTuple",
+"description": "The access tuple that was replayed. This field includes information about the principal, resource, and permission that were involved in the access attempt."
+},
+"diff": {
+"$ref": "GoogleCloudPolicysimulatorV1betaReplayDiff",
+"description": "The difference between the principal's access under the current (baseline) policies and the principal's access under the proposed (simulated) policies. This field is only included for access tuples that were successfully replayed and had different results under the current policies and the proposed policies."
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error that caused the access tuple replay to fail. This field is only included for access tuples that were not replayed successfully."
+},
+"lastSeenDate": {
+"$ref": "GoogleTypeDate",
+"description": "The latest date this access tuple was seen in the logs."
+},
+"name": {
+"description": "The resource name of the `ReplayResult`, in the following format: `{projects|folders|organizations}/{resource-id}/locations/global/replays/{replay-id}/results/{replay-result-id}`, where `{resource-id}` is the ID of the project, folder, or organization that owns the Replay. Example: `projects/my-example-project/locations/global/replays/506a5f7f-38ce-4d7d-8e03-479ce1833c36/results/1234`",
+"type": "string"
+},
+"parent": {
+"description": "The Replay that the access tuple was included in.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaReplayResultsSummary": {
+"description": "Summary statistics about the replayed log entries.",
+"id": "GoogleCloudPolicysimulatorV1betaReplayResultsSummary",
+"properties": {
+"differenceCount": {
+"description": "The number of replayed log entries with a difference between baseline and simulated policies.",
+"format": "int32",
+"type": "integer"
+},
+"errorCount": {
+"description": "The number of log entries that could not be replayed.",
+"format": "int32",
+"type": "integer"
+},
+"logCount": {
+"description": "The total number of log entries replayed.",
+"format": "int32",
+"type": "integer"
+},
+"newestDate": {
+"$ref": "GoogleTypeDate",
+"description": "The date of the newest log entry replayed."
+},
+"oldestDate": {
+"$ref": "GoogleTypeDate",
+"description": "The date of the oldest log entry replayed."
+},
+"unchangedCount": {
+"description": "The number of replayed log entries with no difference between baseline and simulated policies.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleCloudPolicysimulatorV1betaResourceContext": {
+"description": "ResourceContext provides the context we know about a resource. It is similar in concept to google.cloud.asset.v1.Resource, but focuses on the information specifically used by Simulator.",
+"id": "GoogleCloudPolicysimulatorV1betaResourceContext",
+"properties": {
+"ancestors": {
+"description": "The ancestry path of the resource in Google Cloud [resource hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy), represented as a list of relative resource names. An ancestry path starts with the closest ancestor in the hierarchy and ends at root. If the resource is a project, folder, or organization, the ancestry path starts from the resource itself. Example: `[\"projects/123456789\", \"folders/5432\", \"organizations/1234\"]`",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"assetType": {
+"description": "The asset type of the resource as defined by CAIS. Example: `compute.googleapis.com/Firewall` See [Supported asset types](https://cloud.google.com/asset-inventory/docs/supported-asset-types) for more information.",
+"type": "string"
+},
+"resource": {
+"description": "The full name of the resource. Example: `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1` See [Resource names](https://cloud.google.com/apis/design/resource_names#full_resource_name) for more information.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1AuditConfig": {
+"description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs. If there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted. Example Policy with multiple AuditConfigs: { \"audit_configs\": [ { \"service\": \"allServices\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.",
+"id": "GoogleIamV1AuditConfig",
+"properties": {
+"auditLogConfigs": {
+"description": "The configuration for logging of each type of permission.",
+"items": {
+"$ref": "GoogleIamV1AuditLogConfig"
+},
+"type": "array"
+},
+"service": {
+"description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1AuditLogConfig": {
+"description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.",
+"id": "GoogleIamV1AuditLogConfig",
+"properties": {
+"exemptedMembers": {
+"description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"logType": {
+"description": "The log type that this config enables.",
+"enum": [
+"LOG_TYPE_UNSPECIFIED",
+"ADMIN_READ",
+"DATA_WRITE",
+"DATA_READ"
+],
+"enumDescriptions": [
+"Default case. Should never be this.",
+"Admin reads. Example: CloudIAM getIamPolicy",
+"Data writes. Example: CloudSQL Users create",
+"Data reads. Example: CloudSQL Users list"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "GoogleIamV1Binding",
+"properties": {
+"condition": {
+"$ref": "GoogleTypeExpr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIamV1Policy": {
+"description": "An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources. A `Policy` is a collection of `bindings`. A `binding` binds one or more `members`, or principals, to a single `role`. Principals can be user accounts, service accounts, Google groups, and domains (such as G Suite). A `role` is a named list of permissions; each `role` can be an IAM predefined role or a user-created custom role. For some types of Google Cloud resources, a `binding` can also specify a `condition`, which is a logical expression that allows access to a resource only if the expression evaluates to `true`. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** ``` { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time < timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } ``` **YAML example:** ``` bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time < timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 ``` For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).",
+"id": "GoogleIamV1Policy",
+"properties": {
+"auditConfigs": {
+"description": "Specifies cloud audit logging configuration for this policy.",
+"items": {
+"$ref": "GoogleIamV1AuditConfig"
+},
+"type": "array"
+},
+"bindings": {
+"description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.",
+"items": {
+"$ref": "GoogleIamV1Binding"
+},
+"type": "array"
+},
+"etag": {
+"description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.",
+"format": "byte",
+"type": "string"
+},
+"version": {
+"description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "GoogleLongrunningListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "GoogleLongrunningOperation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleLongrunningOperation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunningOperation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpcStatus",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleRpcStatus": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpcStatus",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeDate": {
+"description": "Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp",
+"id": "GoogleTypeDate",
+"properties": {
+"day": {
+"description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.",
+"format": "int32",
+"type": "integer"
+},
+"month": {
+"description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.",
+"format": "int32",
+"type": "integer"
+},
+"year": {
+"description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"GoogleTypeExpr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "GoogleTypeExpr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Policy Simulator API",
+"version": "v1beta",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/pubsublite.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/pubsublite.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..cf9c81cf68d9abf80970af1fcf6b110c33d9ea99
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/pubsublite.v1.json
@@ -0,0 +1,1696 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://pubsublite.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "PubsubLite",
+"description": "",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/pubsub/lite/docs",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "pubsublite:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://pubsublite.mtls.googleapis.com/",
+"name": "pubsublite",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"admin": {
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "pubsublite.admin.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "pubsublite.admin.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"reservations": {
+"methods": {
+"create": {
+"description": "Creates a new reservation.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/reservations",
+"httpMethod": "POST",
+"id": "pubsublite.admin.projects.locations.reservations.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent location in which to create the reservation. Structured like `projects/{project_number}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"reservationId": {
+"description": "Required. The ID to use for the reservation, which will become the final component of the reservation's name. This value is structured like: `my-reservation-name`.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+parent}/reservations",
+"request": {
+"$ref": "Reservation"
+},
+"response": {
+"$ref": "Reservation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified reservation.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}",
+"httpMethod": "DELETE",
+"id": "pubsublite.admin.projects.locations.reservations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the reservation to delete. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/reservations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns the reservation configuration.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.reservations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the reservation whose configuration to return. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/reservations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"response": {
+"$ref": "Reservation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns the list of reservations for the given project.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/reservations",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.reservations.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of reservations to return. The service may return fewer than this value. If unset or zero, all reservations for the parent will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListReservations` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListReservations` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent whose reservations are to be listed. Structured like `projects/{project_number}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+parent}/reservations",
+"response": {
+"$ref": "ListReservationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates properties of the specified reservation.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}",
+"httpMethod": "PATCH",
+"id": "pubsublite.admin.projects.locations.reservations.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the reservation. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/reservations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. A mask specifying the reservation fields to change.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"request": {
+"$ref": "Reservation"
+},
+"response": {
+"$ref": "Reservation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"topics": {
+"methods": {
+"list": {
+"description": "Lists the topics attached to the specified reservation.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/reservations/{reservationsId}/topics",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.reservations.topics.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the reservation whose topics to list. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/reservations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of topics to return. The service may return fewer than this value. If unset or zero, all topics for the given reservation will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListReservationTopics` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListReservationTopics` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}/topics",
+"response": {
+"$ref": "ListReservationTopicsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"subscriptions": {
+"methods": {
+"create": {
+"description": "Creates a new subscription.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/subscriptions",
+"httpMethod": "POST",
+"id": "pubsublite.admin.projects.locations.subscriptions.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent location in which to create the subscription. Structured like `projects/{project_number}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"skipBacklog": {
+"description": "If true, the newly created subscription will only receive messages published after the subscription was created. Otherwise, the entire message backlog will be received on the subscription. Defaults to false.",
+"location": "query",
+"type": "boolean"
+},
+"subscriptionId": {
+"description": "Required. The ID to use for the subscription, which will become the final component of the subscription's name. This value is structured like: `my-sub-name`.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+parent}/subscriptions",
+"request": {
+"$ref": "Subscription"
+},
+"response": {
+"$ref": "Subscription"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified subscription.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}",
+"httpMethod": "DELETE",
+"id": "pubsublite.admin.projects.locations.subscriptions.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the subscription to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns the subscription configuration.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.subscriptions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the subscription whose configuration to return.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"response": {
+"$ref": "Subscription"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns the list of subscriptions for the given project.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/subscriptions",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.subscriptions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of subscriptions to return. The service may return fewer than this value. If unset or zero, all subscriptions for the parent will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListSubscriptions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSubscriptions` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent whose subscriptions are to be listed. Structured like `projects/{project_number}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+parent}/subscriptions",
+"response": {
+"$ref": "ListSubscriptionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates properties of the specified subscription.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}",
+"httpMethod": "PATCH",
+"id": "pubsublite.admin.projects.locations.subscriptions.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the subscription. Structured like: projects/{project_number}/locations/{location}/subscriptions/{subscription_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. A mask specifying the subscription fields to change.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"request": {
+"$ref": "Subscription"
+},
+"response": {
+"$ref": "Subscription"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"seek": {
+"description": "Performs an out-of-band seek for a subscription to a specified target, which may be timestamps or named positions within the message backlog. Seek translates these targets to cursors for each partition and orchestrates subscribers to start consuming messages from these seek cursors. If an operation is returned, the seek has been registered and subscribers will eventually receive messages from the seek cursors (i.e. eventual consistency), as long as they are using a minimum supported client library version and not a system that tracks cursors independently of Pub/Sub Lite (e.g. Apache Beam, Dataflow, Spark). The seek operation will fail for unsupported clients. If clients would like to know when subscribers react to the seek (or not), they can poll the operation. The seek operation will succeed and complete once subscribers are ready to receive messages from the seek cursors for all partitions of the topic. This means that the seek operation will not complete until all subscribers come online. If the previous seek operation has not yet completed, it will be aborted and the new invocation of seek will supersede it.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}:seek",
+"httpMethod": "POST",
+"id": "pubsublite.admin.projects.locations.subscriptions.seek",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the subscription to seek.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}:seek",
+"request": {
+"$ref": "SeekSubscriptionRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"topics": {
+"methods": {
+"create": {
+"description": "Creates a new topic.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/topics",
+"httpMethod": "POST",
+"id": "pubsublite.admin.projects.locations.topics.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent location in which to create the topic. Structured like `projects/{project_number}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"topicId": {
+"description": "Required. The ID to use for the topic, which will become the final component of the topic's name. This value is structured like: `my-topic-name`.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+parent}/topics",
+"request": {
+"$ref": "Topic"
+},
+"response": {
+"$ref": "Topic"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes the specified topic.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/topics/{topicsId}",
+"httpMethod": "DELETE",
+"id": "pubsublite.admin.projects.locations.topics.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the topic to delete.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/topics/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Returns the topic configuration.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/topics/{topicsId}",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.topics.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the topic whose configuration to return.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/topics/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"response": {
+"$ref": "Topic"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getPartitions": {
+"description": "Returns the partition information for the requested topic.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/topics/{topicsId}/partitions",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.topics.getPartitions",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The topic whose partition information to return.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/topics/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}/partitions",
+"response": {
+"$ref": "TopicPartitions"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Returns the list of topics for the given project.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/topics",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.topics.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of topics to return. The service may return fewer than this value. If unset or zero, all topics for the parent will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListTopics` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListTopics` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent whose topics are to be listed. Structured like `projects/{project_number}/locations/{location}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/admin/{+parent}/topics",
+"response": {
+"$ref": "ListTopicsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates properties of the specified topic.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/topics/{topicsId}",
+"httpMethod": "PATCH",
+"id": "pubsublite.admin.projects.locations.topics.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the topic. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/topics/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. A mask specifying the topic fields to change.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}",
+"request": {
+"$ref": "Topic"
+},
+"response": {
+"$ref": "Topic"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"subscriptions": {
+"methods": {
+"list": {
+"description": "Lists the subscriptions attached to the specified topic.",
+"flatPath": "v1/admin/projects/{projectsId}/locations/{locationsId}/topics/{topicsId}/subscriptions",
+"httpMethod": "GET",
+"id": "pubsublite.admin.projects.locations.topics.subscriptions.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the topic whose subscriptions to list.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/topics/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of subscriptions to return. The service may return fewer than this value. If unset or zero, all subscriptions for the given topic will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListTopicSubscriptions` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListTopicSubscriptions` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/admin/{+name}/subscriptions",
+"response": {
+"$ref": "ListTopicSubscriptionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"cursor": {
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"subscriptions": {
+"methods": {
+"commitCursor": {
+"description": "Updates the committed cursor.",
+"flatPath": "v1/cursor/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}:commitCursor",
+"httpMethod": "POST",
+"id": "pubsublite.cursor.projects.locations.subscriptions.commitCursor",
+"parameterOrder": [
+"subscription"
+],
+"parameters": {
+"subscription": {
+"description": "The subscription for which to update the cursor.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/cursor/{+subscription}:commitCursor",
+"request": {
+"$ref": "CommitCursorRequest"
+},
+"response": {
+"$ref": "CommitCursorResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"cursors": {
+"methods": {
+"list": {
+"description": "Returns all committed cursor information for a subscription.",
+"flatPath": "v1/cursor/projects/{projectsId}/locations/{locationsId}/subscriptions/{subscriptionsId}/cursors",
+"httpMethod": "GET",
+"id": "pubsublite.cursor.projects.locations.subscriptions.cursors.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of cursors to return. The service may return fewer than this value. If unset or zero, all cursors for the parent will be returned.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `ListPartitionCursors` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListPartitionCursors` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The subscription for which to retrieve cursors. Structured like `projects/{project_number}/locations/{location}/subscriptions/{subscription_id}`.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/subscriptions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/cursor/{+parent}/cursors",
+"response": {
+"$ref": "ListPartitionCursorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"topicStats": {
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"resources": {
+"topics": {
+"methods": {
+"computeHeadCursor": {
+"description": "Compute the head cursor for the partition. The head cursor's offset is guaranteed to be less than or equal to all messages which have not yet been acknowledged as published, and greater than the offset of any message whose publish has already been acknowledged. It is zero if there have never been messages in the partition.",
+"flatPath": "v1/topicStats/projects/{projectsId}/locations/{locationsId}/topics/{topicsId}:computeHeadCursor",
+"httpMethod": "POST",
+"id": "pubsublite.topicStats.projects.locations.topics.computeHeadCursor",
+"parameterOrder": [
+"topic"
+],
+"parameters": {
+"topic": {
+"description": "Required. The topic for which we should compute the head cursor.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/topics/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/topicStats/{+topic}:computeHeadCursor",
+"request": {
+"$ref": "ComputeHeadCursorRequest"
+},
+"response": {
+"$ref": "ComputeHeadCursorResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"computeMessageStats": {
+"description": "Compute statistics about a range of messages in a given topic and partition.",
+"flatPath": "v1/topicStats/projects/{projectsId}/locations/{locationsId}/topics/{topicsId}:computeMessageStats",
+"httpMethod": "POST",
+"id": "pubsublite.topicStats.projects.locations.topics.computeMessageStats",
+"parameterOrder": [
+"topic"
+],
+"parameters": {
+"topic": {
+"description": "Required. The topic for which we should compute message stats.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/topics/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/topicStats/{+topic}:computeMessageStats",
+"request": {
+"$ref": "ComputeMessageStatsRequest"
+},
+"response": {
+"$ref": "ComputeMessageStatsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"computeTimeCursor": {
+"description": "Compute the corresponding cursor for a publish or event time in a topic partition.",
+"flatPath": "v1/topicStats/projects/{projectsId}/locations/{locationsId}/topics/{topicsId}:computeTimeCursor",
+"httpMethod": "POST",
+"id": "pubsublite.topicStats.projects.locations.topics.computeTimeCursor",
+"parameterOrder": [
+"topic"
+],
+"parameters": {
+"topic": {
+"description": "Required. The topic for which we should compute the cursor.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/topics/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/topicStats/{+topic}:computeTimeCursor",
+"request": {
+"$ref": "ComputeTimeCursorRequest"
+},
+"response": {
+"$ref": "ComputeTimeCursorResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241116",
+"rootUrl": "https://pubsublite.googleapis.com/",
+"schemas": {
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"Capacity": {
+"description": "The throughput capacity configuration for each partition.",
+"id": "Capacity",
+"properties": {
+"publishMibPerSec": {
+"description": "Publish throughput capacity per partition in MiB/s. Must be >= 4 and <= 16.",
+"format": "int32",
+"type": "integer"
+},
+"subscribeMibPerSec": {
+"description": "Subscribe throughput capacity per partition in MiB/s. Must be >= 4 and <= 32.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"CommitCursorRequest": {
+"description": "Request for CommitCursor.",
+"id": "CommitCursorRequest",
+"properties": {
+"cursor": {
+"$ref": "Cursor",
+"description": "The new value for the committed cursor."
+},
+"partition": {
+"description": "The partition for which to update the cursor. Partitions are zero indexed, so `partition` must be in the range [0, topic.num_partitions).",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CommitCursorResponse": {
+"description": "Response for CommitCursor.",
+"id": "CommitCursorResponse",
+"properties": {},
+"type": "object"
+},
+"ComputeHeadCursorRequest": {
+"description": "Compute the current head cursor for a partition.",
+"id": "ComputeHeadCursorRequest",
+"properties": {
+"partition": {
+"description": "Required. The partition for which we should compute the head cursor.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ComputeHeadCursorResponse": {
+"description": "Response containing the head cursor for the requested topic and partition.",
+"id": "ComputeHeadCursorResponse",
+"properties": {
+"headCursor": {
+"$ref": "Cursor",
+"description": "The head cursor."
+}
+},
+"type": "object"
+},
+"ComputeMessageStatsRequest": {
+"description": "Compute statistics about a range of messages in a given topic and partition.",
+"id": "ComputeMessageStatsRequest",
+"properties": {
+"endCursor": {
+"$ref": "Cursor",
+"description": "The exclusive end of the range. The range is empty if end_cursor <= start_cursor. Specifying a start_cursor before the first message and an end_cursor after the last message will retrieve all messages."
+},
+"partition": {
+"description": "Required. The partition for which we should compute message stats.",
+"format": "int64",
+"type": "string"
+},
+"startCursor": {
+"$ref": "Cursor",
+"description": "The inclusive start of the range."
+}
+},
+"type": "object"
+},
+"ComputeMessageStatsResponse": {
+"description": "Response containing stats for messages in the requested topic and partition.",
+"id": "ComputeMessageStatsResponse",
+"properties": {
+"messageBytes": {
+"description": "The number of quota bytes accounted to these messages.",
+"format": "int64",
+"type": "string"
+},
+"messageCount": {
+"description": "The count of messages.",
+"format": "int64",
+"type": "string"
+},
+"minimumEventTime": {
+"description": "The minimum event timestamp across these messages. For the purposes of this computation, if a message does not have an event time, we use the publish time. The timestamp will be unset if there are no messages.",
+"format": "google-datetime",
+"type": "string"
+},
+"minimumPublishTime": {
+"description": "The minimum publish timestamp across these messages. Note that publish timestamps within a partition are not guaranteed to be non-decreasing. The timestamp will be unset if there are no messages.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ComputeTimeCursorRequest": {
+"description": "Compute the corresponding cursor for a publish or event time in a topic partition.",
+"id": "ComputeTimeCursorRequest",
+"properties": {
+"partition": {
+"description": "Required. The partition for which we should compute the cursor.",
+"format": "int64",
+"type": "string"
+},
+"target": {
+"$ref": "TimeTarget",
+"description": "Required. The target publish or event time. Specifying a future time will return an unset cursor."
+}
+},
+"type": "object"
+},
+"ComputeTimeCursorResponse": {
+"description": "Response containing the cursor corresponding to a publish or event time in a topic partition.",
+"id": "ComputeTimeCursorResponse",
+"properties": {
+"cursor": {
+"$ref": "Cursor",
+"description": "If present, the cursor references the first message with time greater than or equal to the specified target time. If such a message cannot be found, the cursor will be unset (i.e. `cursor` is not present)."
+}
+},
+"type": "object"
+},
+"Cursor": {
+"description": "A cursor that describes the position of a message within a topic partition.",
+"id": "Cursor",
+"properties": {
+"offset": {
+"description": "The offset of a message within a topic partition. Must be greater than or equal 0.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DeliveryConfig": {
+"description": "The settings for a subscription's message delivery.",
+"id": "DeliveryConfig",
+"properties": {
+"deliveryRequirement": {
+"description": "The DeliveryRequirement for this subscription.",
+"enum": [
+"DELIVERY_REQUIREMENT_UNSPECIFIED",
+"DELIVER_IMMEDIATELY",
+"DELIVER_AFTER_STORED"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"The server does not wait for a published message to be successfully written to storage before delivering it to subscribers.",
+"The server will not deliver a published message to subscribers until the message has been successfully written to storage. This will result in higher end-to-end latency, but consistent delivery."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"ExportConfig": {
+"description": "Configuration for a Pub/Sub Lite subscription that writes messages to a destination. User subscriber clients must not connect to this subscription.",
+"id": "ExportConfig",
+"properties": {
+"currentState": {
+"description": "Output only. The current state of the export, which may be different to the desired state due to errors. This field is output only.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"PAUSED",
+"PERMISSION_DENIED",
+"NOT_FOUND"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"Messages are being exported.",
+"Exporting messages is suspended.",
+"Messages cannot be exported due to permission denied errors. Output only.",
+"Messages cannot be exported due to missing resources. Output only."
+],
+"readOnly": true,
+"type": "string"
+},
+"deadLetterTopic": {
+"description": "Optional. The name of an optional Pub/Sub Lite topic to publish messages that can not be exported to the destination. For example, the message can not be published to the Pub/Sub service because it does not satisfy the constraints documented at https://cloud.google.com/pubsub/docs/publisher. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}. Must be within the same project and location as the subscription. The topic may be changed or removed.",
+"type": "string"
+},
+"desiredState": {
+"description": "The desired state of this export. Setting this to values other than `ACTIVE` and `PAUSED` will result in an error.",
+"enum": [
+"STATE_UNSPECIFIED",
+"ACTIVE",
+"PAUSED",
+"PERMISSION_DENIED",
+"NOT_FOUND"
+],
+"enumDescriptions": [
+"Default value. This value is unused.",
+"Messages are being exported.",
+"Exporting messages is suspended.",
+"Messages cannot be exported due to permission denied errors. Output only.",
+"Messages cannot be exported due to missing resources. Output only."
+],
+"type": "string"
+},
+"pubsubConfig": {
+"$ref": "PubSubConfig",
+"description": "Messages are automatically written from the Pub/Sub Lite topic associated with this subscription to a Pub/Sub topic."
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListPartitionCursorsResponse": {
+"description": "Response for ListPartitionCursors",
+"id": "ListPartitionCursorsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"type": "string"
+},
+"partitionCursors": {
+"description": "The partition cursors from this request.",
+"items": {
+"$ref": "PartitionCursor"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListReservationTopicsResponse": {
+"description": "Response for ListReservationTopics.",
+"id": "ListReservationTopicsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that can be sent as `page_token` to retrieve the next page of results. If this field is omitted, there are no more results.",
+"type": "string"
+},
+"topics": {
+"description": "The names of topics attached to the reservation. The order of the topics is unspecified.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListReservationsResponse": {
+"description": "Response for ListReservations.",
+"id": "ListReservationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that can be sent as `page_token` to retrieve the next page of results. If this field is omitted, there are no more results.",
+"type": "string"
+},
+"reservations": {
+"description": "The list of reservation in the requested parent. The order of the reservations is unspecified.",
+"items": {
+"$ref": "Reservation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListSubscriptionsResponse": {
+"description": "Response for ListSubscriptions.",
+"id": "ListSubscriptionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that can be sent as `page_token` to retrieve the next page of results. If this field is omitted, there are no more results.",
+"type": "string"
+},
+"subscriptions": {
+"description": "The list of subscriptions in the requested parent. The order of the subscriptions is unspecified.",
+"items": {
+"$ref": "Subscription"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTopicSubscriptionsResponse": {
+"description": "Response for ListTopicSubscriptions.",
+"id": "ListTopicSubscriptionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that can be sent as `page_token` to retrieve the next page of results. If this field is omitted, there are no more results.",
+"type": "string"
+},
+"subscriptions": {
+"description": "The names of subscriptions attached to the topic. The order of the subscriptions is unspecified.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTopicsResponse": {
+"description": "Response for ListTopics.",
+"id": "ListTopicsResponse",
+"properties": {
+"nextPageToken": {
+"description": "A token that can be sent as `page_token` to retrieve the next page of results. If this field is omitted, there are no more results.",
+"type": "string"
+},
+"topics": {
+"description": "The list of topic in the requested parent. The order of the topics is unspecified.",
+"items": {
+"$ref": "Topic"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Metadata for long running operations.",
+"id": "OperationMetadata",
+"properties": {
+"createTime": {
+"description": "The time the operation was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"endTime": {
+"description": "The time the operation finished running. Not set if the operation has not completed.",
+"format": "google-datetime",
+"type": "string"
+},
+"target": {
+"description": "Resource path for the target of the operation. For example, targets of seeks are subscription resources, structured like: projects/{project_number}/locations/{location}/subscriptions/{subscription_id}",
+"type": "string"
+},
+"verb": {
+"description": "Name of the verb executed by the operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PartitionConfig": {
+"description": "The settings for a topic's partitions.",
+"id": "PartitionConfig",
+"properties": {
+"capacity": {
+"$ref": "Capacity",
+"description": "The capacity configuration."
+},
+"count": {
+"description": "The number of partitions in the topic. Must be at least 1. Once a topic has been created the number of partitions can be increased but not decreased. Message ordering is not guaranteed across a topic resize. For more information see https://cloud.google.com/pubsub/lite/docs/topics#scaling_capacity",
+"format": "int64",
+"type": "string"
+},
+"scale": {
+"deprecated": true,
+"description": "DEPRECATED: Use capacity instead which can express a superset of configurations. Every partition in the topic is allocated throughput equivalent to `scale` times the standard partition throughput (4 MiB/s). This is also reflected in the cost of this topic; a topic with `scale` of 2 and count of 10 is charged for 20 partitions. This value must be in the range [1,4].",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"PartitionCursor": {
+"description": "A pair of a Cursor and the partition it is for.",
+"id": "PartitionCursor",
+"properties": {
+"cursor": {
+"$ref": "Cursor",
+"description": "The value of the cursor."
+},
+"partition": {
+"description": "The partition this is for.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PubSubConfig": {
+"description": "Configuration for exporting to a Pub/Sub topic.",
+"id": "PubSubConfig",
+"properties": {
+"topic": {
+"description": "The name of the Pub/Sub topic. Structured like: projects/{project_number}/topics/{topic_id}. The topic may be changed.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Reservation": {
+"description": "Metadata about a reservation resource.",
+"id": "Reservation",
+"properties": {
+"name": {
+"description": "The name of the reservation. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}",
+"type": "string"
+},
+"throughputCapacity": {
+"description": "The reserved throughput capacity. Every unit of throughput capacity is equivalent to 1 MiB/s of published messages or 2 MiB/s of subscribed messages. Any topics which are declared as using capacity from a Reservation will consume resources from this reservation instead of being charged individually.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ReservationConfig": {
+"description": "The settings for this topic's Reservation usage.",
+"id": "ReservationConfig",
+"properties": {
+"throughputReservation": {
+"description": "The Reservation to use for this topic's throughput capacity. Structured like: projects/{project_number}/locations/{location}/reservations/{reservation_id}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RetentionConfig": {
+"description": "The settings for a topic's message retention.",
+"id": "RetentionConfig",
+"properties": {
+"perPartitionBytes": {
+"description": "The provisioned storage, in bytes, per partition. If the number of bytes stored in any of the topic's partitions grows beyond this value, older messages will be dropped to make room for newer ones, regardless of the value of `period`.",
+"format": "int64",
+"type": "string"
+},
+"period": {
+"description": "How long a published message is retained. If unset, messages will be retained as long as the bytes retained for each partition is below `per_partition_bytes`.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SeekSubscriptionRequest": {
+"description": "Request for SeekSubscription.",
+"id": "SeekSubscriptionRequest",
+"properties": {
+"namedTarget": {
+"description": "Seek to a named position with respect to the message backlog.",
+"enum": [
+"NAMED_TARGET_UNSPECIFIED",
+"TAIL",
+"HEAD"
+],
+"enumDescriptions": [
+"Unspecified named target. Do not use.",
+"Seek to the oldest retained message.",
+"Seek past all recently published messages, skipping the entire message backlog."
+],
+"type": "string"
+},
+"timeTarget": {
+"$ref": "TimeTarget",
+"description": "Seek to the first message whose publish or event time is greater than or equal to the specified query time. If no such message can be located, will seek to the end of the message backlog."
+}
+},
+"type": "object"
+},
+"SeekSubscriptionResponse": {
+"description": "Response for SeekSubscription long running operation.",
+"id": "SeekSubscriptionResponse",
+"properties": {},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Subscription": {
+"description": "Metadata about a subscription resource.",
+"id": "Subscription",
+"properties": {
+"deliveryConfig": {
+"$ref": "DeliveryConfig",
+"description": "The settings for this subscription's message delivery."
+},
+"exportConfig": {
+"$ref": "ExportConfig",
+"description": "If present, messages are automatically written from the Pub/Sub Lite topic associated with this subscription to a destination."
+},
+"name": {
+"description": "The name of the subscription. Structured like: projects/{project_number}/locations/{location}/subscriptions/{subscription_id}",
+"type": "string"
+},
+"topic": {
+"description": "The name of the topic this subscription is attached to. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TimeTarget": {
+"description": "A target publish or event time. Can be used for seeking to or retrieving the corresponding cursor.",
+"id": "TimeTarget",
+"properties": {
+"eventTime": {
+"description": "Request the cursor of the first message with event time greater than or equal to `event_time`. If messages are missing an event time, the publish time is used as a fallback. As event times are user supplied, subsequent messages may have event times less than `event_time` and should be filtered by the client, if necessary.",
+"format": "google-datetime",
+"type": "string"
+},
+"publishTime": {
+"description": "Request the cursor of the first message with publish time greater than or equal to `publish_time`. All messages thereafter are guaranteed to have publish times >= `publish_time`.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Topic": {
+"description": "Metadata about a topic resource.",
+"id": "Topic",
+"properties": {
+"name": {
+"description": "The name of the topic. Structured like: projects/{project_number}/locations/{location}/topics/{topic_id}",
+"type": "string"
+},
+"partitionConfig": {
+"$ref": "PartitionConfig",
+"description": "The settings for this topic's partitions."
+},
+"reservationConfig": {
+"$ref": "ReservationConfig",
+"description": "The settings for this topic's Reservation usage."
+},
+"retentionConfig": {
+"$ref": "RetentionConfig",
+"description": "The settings for this topic's message retention."
+}
+},
+"type": "object"
+},
+"TopicPartitions": {
+"description": "Response for GetTopicPartitions.",
+"id": "TopicPartitions",
+"properties": {
+"partitionCount": {
+"description": "The number of partitions in the topic.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Pub/Sub Lite API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/run.v1alpha1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/run.v1alpha1.json
new file mode 100644
index 0000000000000000000000000000000000000000..9e9119bdd37638e744f48f5014270990c4b49d8f
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/run.v1alpha1.json
@@ -0,0 +1,1286 @@
+{
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/cloud-platform": {
+ "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+ }
+ }
+ }
+ },
+ "basePath": "",
+ "baseUrl": "https://run.googleapis.com/",
+ "batchPath": "batch",
+ "canonicalName": "Cloud Run",
+ "description": "Deploy and manage user provided container images that scale automatically based on incoming requests. The Cloud Run Admin API v1 follows the Knative Serving API specification, while v2 is aligned with Google Cloud AIP-based API standards, as described in https://google.aip.dev/.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://cloud.google.com/run/",
+ "fullyEncodeReservedExpansion": true,
+ "icons": {
+ "x16": "http://www.google.com/images/icons/product/search-16.gif",
+ "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "id": "run:v1alpha1",
+ "kind": "discovery#restDescription",
+ "mtlsRootUrl": "https://run.mtls.googleapis.com/",
+ "name": "run",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "$.xgafv": {
+ "description": "V1 error format.",
+ "enum": [
+ "1",
+ "2"
+ ],
+ "enumDescriptions": [
+ "v1 error format",
+ "v2 error format"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "access_token": {
+ "description": "OAuth access token.",
+ "location": "query",
+ "type": "string"
+ },
+ "alt": {
+ "default": "json",
+ "description": "Data format for response.",
+ "enum": [
+ "json",
+ "media",
+ "proto"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json",
+ "Media download with context-dependent Content-Type",
+ "Responses with Content-Type of application/x-protobuf"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "callback": {
+ "description": "JSONP",
+ "location": "query",
+ "type": "string"
+ },
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
+ "type": "string"
+ },
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
+ "type": "string"
+ },
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
+ "type": "string"
+ },
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+ "location": "query",
+ "type": "string"
+ },
+ "uploadType": {
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ },
+ "upload_protocol": {
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "protocol": "rest",
+ "resources": {
+ "namespaces": {
+ "resources": {
+ "jobs": {
+ "methods": {
+ "create": {
+ "description": "Create a job.",
+ "flatPath": "apis/run.googleapis.com/v1alpha1/namespaces/{namespacesId}/jobs",
+ "httpMethod": "POST",
+ "id": "run.namespaces.jobs.create",
+ "parameterOrder": [
+ "parent"
+ ],
+ "parameters": {
+ "parent": {
+ "description": "Required. The namespace in which the job should be created. Replace {namespace_id} with the project ID or number.",
+ "location": "path",
+ "pattern": "^namespaces/[^/]+$",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "apis/run.googleapis.com/v1alpha1/{+parent}/jobs",
+ "request": {
+ "$ref": "Job"
+ },
+ "response": {
+ "$ref": "Job"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ },
+ "delete": {
+ "description": "Delete a job.",
+ "flatPath": "apis/run.googleapis.com/v1alpha1/namespaces/{namespacesId}/jobs/{jobsId}",
+ "httpMethod": "DELETE",
+ "id": "run.namespaces.jobs.delete",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "apiVersion": {
+ "description": "Optional. Cloud Run currently ignores this parameter.",
+ "location": "query",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Optional. Cloud Run currently ignores this parameter.",
+ "location": "query",
+ "type": "string"
+ },
+ "name": {
+ "description": "Required. The name of the job to delete. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number.",
+ "location": "path",
+ "pattern": "^namespaces/[^/]+/jobs/[^/]+$",
+ "required": true,
+ "type": "string"
+ },
+ "propagationPolicy": {
+ "description": "Optional. Specifies the propagation policy of delete. Cloud Run currently ignores this setting, and deletes in the background. Please see kubernetes.io/docs/concepts/workloads/controllers/garbage-collection/ for more information.",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "apis/run.googleapis.com/v1alpha1/{+name}",
+ "response": {
+ "$ref": "Empty"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ },
+ "get": {
+ "description": "Get information about a job.",
+ "flatPath": "apis/run.googleapis.com/v1alpha1/namespaces/{namespacesId}/jobs/{jobsId}",
+ "httpMethod": "GET",
+ "id": "run.namespaces.jobs.get",
+ "parameterOrder": [
+ "name"
+ ],
+ "parameters": {
+ "name": {
+ "description": "Required. The name of the job to retrieve. For Cloud Run (fully managed), replace {namespace_id} with the project ID or number.",
+ "location": "path",
+ "pattern": "^namespaces/[^/]+/jobs/[^/]+$",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "apis/run.googleapis.com/v1alpha1/{+name}",
+ "response": {
+ "$ref": "Job"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ },
+ "list": {
+ "description": "List jobs.",
+ "flatPath": "apis/run.googleapis.com/v1alpha1/namespaces/{namespacesId}/jobs",
+ "httpMethod": "GET",
+ "id": "run.namespaces.jobs.list",
+ "parameterOrder": [
+ "parent"
+ ],
+ "parameters": {
+ "continue": {
+ "description": "Optional. Optional encoded string to continue paging.",
+ "location": "query",
+ "type": "string"
+ },
+ "fieldSelector": {
+ "description": "Optional. Allows to filter resources based on a specific value for a field name. Send this in a query string format. i.e. 'metadata.name%3Dlorem'. Not currently used by Cloud Run.",
+ "location": "query",
+ "type": "string"
+ },
+ "includeUninitialized": {
+ "description": "Optional. Not currently used by Cloud Run.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "labelSelector": {
+ "description": "Optional. Allows to filter resources based on a label. Supported operations are =, !=, exists, in, and notIn.",
+ "location": "query",
+ "type": "string"
+ },
+ "limit": {
+ "description": "Optional. The maximum number of records that should be returned.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "parent": {
+ "description": "Required. The namespace from which the jobs should be listed. Replace {namespace_id} with the project ID or number.",
+ "location": "path",
+ "pattern": "^namespaces/[^/]+$",
+ "required": true,
+ "type": "string"
+ },
+ "resourceVersion": {
+ "description": "Optional. The baseline resource version from which the list or watch operation should start. Not currently used by Cloud Run.",
+ "location": "query",
+ "type": "string"
+ },
+ "watch": {
+ "description": "Optional. Flag that indicates that the client expects to watch this resource as well. Not currently used by Cloud Run.",
+ "location": "query",
+ "type": "boolean"
+ }
+ },
+ "path": "apis/run.googleapis.com/v1alpha1/{+parent}/jobs",
+ "response": {
+ "$ref": "ListJobsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform"
+ ]
+ }
+ }
+ }
+ }
+ }
+ },
+ "revision": "20220710",
+ "rootUrl": "https://run.googleapis.com/",
+ "schemas": {
+ "ConfigMapEnvSource": {
+ "description": "Not supported by Cloud Run ConfigMapEnvSource selects a ConfigMap to populate the environment variables with. The contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables.",
+ "id": "ConfigMapEnvSource",
+ "properties": {
+ "localObjectReference": {
+ "$ref": "LocalObjectReference",
+ "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
+ },
+ "name": {
+ "description": "The ConfigMap to select from.",
+ "type": "string"
+ },
+ "optional": {
+ "description": "(Optional) Specify whether the ConfigMap must be defined",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "ConfigMapKeySelector": {
+ "description": "Not supported by Cloud Run Selects a key from a ConfigMap.",
+ "id": "ConfigMapKeySelector",
+ "properties": {
+ "key": {
+ "description": "The key to select.",
+ "type": "string"
+ },
+ "localObjectReference": {
+ "$ref": "LocalObjectReference",
+ "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
+ },
+ "name": {
+ "description": "The ConfigMap to select from.",
+ "type": "string"
+ },
+ "optional": {
+ "description": "(Optional) Specify whether the ConfigMap or its key must be defined",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "ConfigMapVolumeSource": {
+ "description": "Not supported by Cloud Run Adapts a ConfigMap into a volume. The contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths.",
+ "id": "ConfigMapVolumeSource",
+ "properties": {
+ "defaultMode": {
+ "description": "(Optional) Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0644. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "items": {
+ "description": "(Optional) If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.",
+ "items": {
+ "$ref": "KeyToPath"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "Name of the config.",
+ "type": "string"
+ },
+ "optional": {
+ "description": "(Optional) Specify whether the Secret or its keys must be defined.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "Container": {
+ "description": "A single application container. This specifies both the container to run, the command to run in the container and the arguments to supply to it. Note that additional arguments may be supplied by the system to the container at runtime.",
+ "id": "Container",
+ "properties": {
+ "args": {
+ "description": "(Optional) Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "command": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "env": {
+ "description": "(Optional) List of environment variables to set in the container.",
+ "items": {
+ "$ref": "EnvVar"
+ },
+ "type": "array"
+ },
+ "envFrom": {
+ "description": "(Optional) List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated.",
+ "items": {
+ "$ref": "EnvFromSource"
+ },
+ "type": "array"
+ },
+ "image": {
+ "description": "Only supports containers from Google Container Registry or Artifact Registry URL of the Container image. More info: https://kubernetes.io/docs/concepts/containers/images",
+ "type": "string"
+ },
+ "imagePullPolicy": {
+ "description": "(Optional) Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images",
+ "type": "string"
+ },
+ "livenessProbe": {
+ "$ref": "Probe",
+ "description": "(Optional) Periodic probe of container liveness. Container will be restarted if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"
+ },
+ "name": {
+ "description": "(Optional) Name of the container specified as a DNS_LABEL. Currently unused in Cloud Run. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names",
+ "type": "string"
+ },
+ "ports": {
+ "description": "(Optional) List of ports to expose from the container. Only a single port can be specified. The specified ports must be listening on all interfaces (0.0.0.0) within the container to be accessible. If omitted, a port number will be chosen and passed to the container through the PORT environment variable for the container to listen on.",
+ "items": {
+ "$ref": "ContainerPort"
+ },
+ "type": "array"
+ },
+ "readinessProbe": {
+ "$ref": "Probe",
+ "description": "(Optional) Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"
+ },
+ "resources": {
+ "$ref": "ResourceRequirements",
+ "description": "(Optional) Compute Resources required by this container. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources"
+ },
+ "securityContext": {
+ "$ref": "SecurityContext",
+ "description": "(Optional) Security options the pod should run with. More info: https://kubernetes.io/docs/concepts/policy/security-context/ More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/"
+ },
+ "startupProbe": {
+ "$ref": "Probe",
+ "description": "(Optional) Startup probe of application within the container. All other probes are disabled if a startup probe is provided, until it succeeds. Container will not be added to service endpoints if the probe fails. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"
+ },
+ "terminationMessagePath": {
+ "description": "(Optional) Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log.",
+ "type": "string"
+ },
+ "terminationMessagePolicy": {
+ "description": "(Optional) Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.",
+ "type": "string"
+ },
+ "volumeMounts": {
+ "description": "(Optional) Volume to mount into the container's filesystem. Only supports SecretVolumeSources. Pod volumes to mount into the container's filesystem.",
+ "items": {
+ "$ref": "VolumeMount"
+ },
+ "type": "array"
+ },
+ "workingDir": {
+ "description": "(Optional) Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ContainerPort": {
+ "description": "ContainerPort represents a network port in a single container.",
+ "id": "ContainerPort",
+ "properties": {
+ "containerPort": {
+ "description": "(Optional) Port number the container listens on. This must be a valid port number, 0 < x < 65536.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "name": {
+ "description": "(Optional) If specified, used to specify which protocol to use. Allowed values are \"http1\" and \"h2c\".",
+ "type": "string"
+ },
+ "protocol": {
+ "description": "(Optional) Protocol for port. Must be \"TCP\". Defaults to \"TCP\".",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Empty": {
+ "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+ "id": "Empty",
+ "properties": {},
+ "type": "object"
+ },
+ "EnvFromSource": {
+ "description": "Not supported by Cloud Run EnvFromSource represents the source of a set of ConfigMaps",
+ "id": "EnvFromSource",
+ "properties": {
+ "configMapRef": {
+ "$ref": "ConfigMapEnvSource",
+ "description": "(Optional) The ConfigMap to select from"
+ },
+ "prefix": {
+ "description": "(Optional) An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER.",
+ "type": "string"
+ },
+ "secretRef": {
+ "$ref": "SecretEnvSource",
+ "description": "(Optional) The Secret to select from"
+ }
+ },
+ "type": "object"
+ },
+ "EnvVar": {
+ "description": "EnvVar represents an environment variable present in a Container.",
+ "id": "EnvVar",
+ "properties": {
+ "name": {
+ "description": "Name of the environment variable. Must be a C_IDENTIFIER.",
+ "type": "string"
+ },
+ "value": {
+ "description": "(Optional) Variable references $(VAR_NAME) are expanded using the previous defined environment variables in the container and any route environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. The $(VAR_NAME) syntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\".",
+ "type": "string"
+ },
+ "valueFrom": {
+ "$ref": "EnvVarSource",
+ "description": "(Optional) Source for the environment variable's value. Only supports secret_key_ref. Source for the environment variable's value. Cannot be used if value is not empty."
+ }
+ },
+ "type": "object"
+ },
+ "EnvVarSource": {
+ "description": "EnvVarSource represents a source for the value of an EnvVar.",
+ "id": "EnvVarSource",
+ "properties": {
+ "configMapKeyRef": {
+ "$ref": "ConfigMapKeySelector",
+ "description": "(Optional) Not supported by Cloud Run Selects a key of a ConfigMap."
+ },
+ "secretKeyRef": {
+ "$ref": "SecretKeySelector",
+ "description": "(Optional) Selects a key (version) of a secret in Secret Manager."
+ }
+ },
+ "type": "object"
+ },
+ "ExecAction": {
+ "description": "Not supported by Cloud Run ExecAction describes a \"run in container\" action.",
+ "id": "ExecAction",
+ "properties": {
+ "command": {
+ "description": "(Optional) Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "GRPCAction": {
+ "description": "Not supported by Cloud Run GRPCAction describes an action involving a GRPC port.",
+ "id": "GRPCAction",
+ "properties": {
+ "port": {
+ "description": "Port number of the gRPC service. Number must be in the range 1 to 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "service": {
+ "description": "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). If this is not specified, the default behavior is defined by gRPC.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "GoogleRpcStatus": {
+ "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+ "id": "GoogleRpcStatus",
+ "properties": {
+ "code": {
+ "description": "The status code, which should be an enum value of google.rpc.Code.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "details": {
+ "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+ "items": {
+ "additionalProperties": {
+ "description": "Properties of the object. Contains field @type with type URL.",
+ "type": "any"
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HTTPGetAction": {
+ "description": "Not supported by Cloud Run HTTPGetAction describes an action based on HTTP Get requests.",
+ "id": "HTTPGetAction",
+ "properties": {
+ "host": {
+ "description": "(Optional) Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead.",
+ "type": "string"
+ },
+ "httpHeaders": {
+ "description": "(Optional) Custom headers to set in the request. HTTP allows repeated headers.",
+ "items": {
+ "$ref": "HTTPHeader"
+ },
+ "type": "array"
+ },
+ "path": {
+ "description": "(Optional) Path to access on the HTTP server.",
+ "type": "string"
+ },
+ "scheme": {
+ "description": "(Optional) Scheme to use for connecting to the host. Defaults to HTTP.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HTTPHeader": {
+ "description": "Not supported by Cloud Run HTTPHeader describes a custom header to be used in HTTP probes",
+ "id": "HTTPHeader",
+ "properties": {
+ "name": {
+ "description": "The header field name",
+ "type": "string"
+ },
+ "value": {
+ "description": "The header field value",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceAttemptResult": {
+ "description": "Result of an instance attempt.",
+ "id": "InstanceAttemptResult",
+ "properties": {
+ "exitCode": {
+ "description": "Optional. The exit code of this attempt. This may be unset if the container was unable to exit cleanly with a code due to some other failure. See status field for possible failure details.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "status": {
+ "$ref": "GoogleRpcStatus",
+ "description": "Optional. The status of this attempt. If the status code is OK, then the attempt succeeded."
+ }
+ },
+ "type": "object"
+ },
+ "InstanceSpec": {
+ "description": "InstanceSpec is a description of an instance.",
+ "id": "InstanceSpec",
+ "properties": {
+ "activeDeadlineSeconds": {
+ "description": "Optional. Optional duration in seconds the instance may be active relative to StartTime before the system will actively try to mark it failed and kill associated containers. If set to zero, the system will never attempt to kill an instance based on time. Otherwise, value must be a positive integer. +optional",
+ "format": "int64",
+ "type": "string"
+ },
+ "containers": {
+ "description": "Optional. List of containers belonging to the instance. We disallow a number of fields on this Container. Only a single container may be provided.",
+ "items": {
+ "$ref": "Container"
+ },
+ "type": "array"
+ },
+ "restartPolicy": {
+ "description": "Optional. Restart policy for all containers within the instance. Allowed values are: - OnFailure: Instances will always be restarted on failure if the backoffLimit has not been reached. - Never: Instances are never restarted and all failures are permanent. Cannot be used if backoffLimit is set. +optional",
+ "type": "string"
+ },
+ "serviceAccountName": {
+ "description": "Optional. Email address of the IAM service account associated with the instance of a Job. The service account represents the identity of the running instance, and determines what permissions the instance has. If not provided, the instance will use the project's default service account. +optional",
+ "type": "string"
+ },
+ "terminationGracePeriodSeconds": {
+ "description": "Optional. Optional duration in seconds the instance needs to terminate gracefully. Value must be non-negative integer. The value zero indicates delete immediately. The grace period is the duration in seconds after the processes running in the instance are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. +optional",
+ "format": "int64",
+ "type": "string"
+ },
+ "volumes": {
+ "description": "Optional. List of volumes that can be mounted by containers belonging to the instance. More info: https://kubernetes.io/docs/concepts/storage/volumes +optional",
+ "items": {
+ "$ref": "Volume"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceStatus": {
+ "description": "Instance represents the status of an instance of a Job.",
+ "id": "InstanceStatus",
+ "properties": {
+ "completionTime": {
+ "description": "Optional. Represents time when the instance was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "failed": {
+ "description": "Optional. The number of times this instance exited with code > 0; +optional",
+ "format": "int32",
+ "type": "integer"
+ },
+ "index": {
+ "description": "Required. Index of the instance, unique per Job, and beginning at 0.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "lastAttemptResult": {
+ "$ref": "InstanceAttemptResult",
+ "description": "Optional. Result of the last attempt of this instance. +optional"
+ },
+ "lastExitCode": {
+ "description": "Optional. Last exit code seen for this instance. +optional",
+ "format": "int32",
+ "type": "integer"
+ },
+ "restarted": {
+ "description": "Optional. The number of times this instance was restarted. Instances are restarted according the restartPolicy configured in the Job template. +optional",
+ "format": "int32",
+ "type": "integer"
+ },
+ "startTime": {
+ "description": "Optional. Represents time when the instance was created by the job controller. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "succeeded": {
+ "description": "Optional. The number of times this instance exited with code == 0. +optional",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceTemplateSpec": {
+ "description": "InstanceTemplateSpec describes the data an instance should have when created from a template.",
+ "id": "InstanceTemplateSpec",
+ "properties": {
+ "spec": {
+ "$ref": "InstanceSpec",
+ "description": "Optional. Specification of the desired behavior of the instance. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status +optional"
+ }
+ },
+ "type": "object"
+ },
+ "Job": {
+ "description": "Job represents the configuration of a single job. A job an immutable resource that references a container image which is run to completion.",
+ "id": "Job",
+ "properties": {
+ "apiVersion": {
+ "description": "Optional. APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources +optional",
+ "type": "string"
+ },
+ "kind": {
+ "description": "Optional. Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds +optional",
+ "type": "string"
+ },
+ "metadata": {
+ "$ref": "ObjectMeta",
+ "description": "Optional. Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata +optional"
+ },
+ "spec": {
+ "$ref": "JobSpec",
+ "description": "Optional. Specification of the desired behavior of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional"
+ },
+ "status": {
+ "$ref": "JobStatus",
+ "description": "Optional. Current status of a job. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status +optional"
+ }
+ },
+ "type": "object"
+ },
+ "JobCondition": {
+ "description": "JobCondition defines a readiness condition for a Revision.",
+ "id": "JobCondition",
+ "properties": {
+ "lastTransitionTime": {
+ "description": "Optional. Last time the condition transitioned from one status to another.",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "message": {
+ "description": "Optional. Human readable message indicating details about the current status.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Optional. One-word CamelCase reason for the condition's last transition.",
+ "type": "string"
+ },
+ "severity": {
+ "description": "Optional. How to interpret failures of this condition, one of Error, Warning, Info",
+ "type": "string"
+ },
+ "status": {
+ "description": "Required. Status of the condition, one of True, False, Unknown.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Required. Type is used to communicate the status of the reconciliation process. See also: https://github.com/knative/serving/blob/main/docs/spec/errors.md#error-conditions-and-reporting Types include: * \"Completed\": True when the Job has successfully completed. * \"Started\": True when the Job has successfully started running. * \"ResourcesAvailable\": True when underlying resources have been provisioned.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "JobSpec": {
+ "description": "JobSpec describes how the job execution will look like.",
+ "id": "JobSpec",
+ "properties": {
+ "activeDeadlineSeconds": {
+ "description": "Optional. Not supported. Specifies the duration in seconds relative to the startTime that the job may be active before the system tries to terminate it. If set to zero, the system will never attempt to terminate the job based on time. Otherwise, the value must be positive integer. +optional",
+ "format": "int64",
+ "type": "string"
+ },
+ "backoffLimit": {
+ "description": "Optional. Specifies the number of retries per instance, before marking this job failed. If set to zero, instances will never retry on failure. +optional",
+ "format": "int32",
+ "type": "integer"
+ },
+ "completions": {
+ "description": "Optional. Specifies the desired number of successfully finished instances the job should be run with. Setting to 1 means that parallelism is limited to 1 and the success of that instance signals the success of the job. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional",
+ "format": "int32",
+ "type": "integer"
+ },
+ "parallelism": {
+ "description": "Optional. Specifies the maximum desired number of instances the job should run at any given time. Must be <= completions. The actual number of instances running in steady state will be less than this number when ((.spec.completions - .status.successful) < .spec.parallelism), i.e. when the work left to do is less than max parallelism. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional",
+ "format": "int32",
+ "type": "integer"
+ },
+ "template": {
+ "$ref": "InstanceTemplateSpec",
+ "description": "Optional. Describes the instance that will be created when executing a job."
+ },
+ "ttlSecondsAfterFinished": {
+ "description": "Optional. Not supported. ttlSecondsAfterFinished limits the lifetime of a Job that has finished execution (either Complete or Failed). If this field is set, ttlSecondsAfterFinished after the Job finishes, it is eligible to be automatically deleted. When the Job is being deleted, its lifecycle guarantees (e.g. finalizers) will be honored. If this field is set to zero, the Job won't be automatically deleted. +optional",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "JobStatus": {
+ "description": "JobStatus represents the current state of a Job.",
+ "id": "JobStatus",
+ "properties": {
+ "active": {
+ "description": "Optional. The number of actively running instances. +optional",
+ "format": "int32",
+ "type": "integer"
+ },
+ "completionTime": {
+ "description": "Optional. Represents time when the job was completed. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "conditions": {
+ "description": "Optional. The latest available observations of a job's current state. More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ +optional",
+ "items": {
+ "$ref": "JobCondition"
+ },
+ "type": "array"
+ },
+ "failed": {
+ "description": "Optional. The number of instances which reached phase Failed. +optional",
+ "format": "int32",
+ "type": "integer"
+ },
+ "imageDigest": {
+ "description": "Optional. ImageDigest holds the resolved digest for the image specified within .Spec.Template.Spec.Container.Image. The digest is resolved during the creation of the Job. This field holds the digest value regardless of whether a tag or digest was originally specified in the Container object.",
+ "type": "string"
+ },
+ "instances": {
+ "description": "Optional. Status of completed, failed, and running instances. +optional",
+ "items": {
+ "$ref": "InstanceStatus"
+ },
+ "type": "array"
+ },
+ "observedGeneration": {
+ "description": "Optional. The 'generation' of the job that was last processed by the controller.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "startTime": {
+ "description": "Optional. Represents time when the job was acknowledged by the job controller. It is not guaranteed to be set in happens-before order across separate operations. It is represented in RFC3339 form and is in UTC. +optional",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "succeeded": {
+ "description": "Optional. The number of instances which reached phase Succeeded. +optional",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "KeyToPath": {
+ "description": "Maps a string key to a path within a volume.",
+ "id": "KeyToPath",
+ "properties": {
+ "key": {
+ "description": "The Cloud Secret Manager secret version. Can be 'latest' for the latest value or an integer for a specific version. The key to project.",
+ "type": "string"
+ },
+ "mode": {
+ "description": "(Optional) Mode bits to use on this file, must be a value between 01 and 0777 (octal). If 0 or not set, the Volume's default mode will be used. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "path": {
+ "description": "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ListJobsResponse": {
+ "description": "ListJobsResponse is a list of Jobs resources.",
+ "id": "ListJobsResponse",
+ "properties": {
+ "apiVersion": {
+ "description": "The API version for this call such as \"run.googleapis.com/v1alpha1\".",
+ "type": "string"
+ },
+ "items": {
+ "description": "List of Jobs.",
+ "items": {
+ "$ref": "Job"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "description": "The kind of this resource, in this case \"JobsList\".",
+ "type": "string"
+ },
+ "metadata": {
+ "$ref": "ListMeta",
+ "description": "Metadata associated with this jobs list."
+ },
+ "nextPageToken": {
+ "description": "This field is equivalent to the metadata.continue field and is provided as a convenience for compatibility with https://google.aip.dev/158. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The metadata.resourceVersion field returned when using this field will be identical to the value in the first response.",
+ "type": "string"
+ },
+ "unreachable": {
+ "description": "Locations that could not be reached.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ListMeta": {
+ "description": "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}.",
+ "id": "ListMeta",
+ "properties": {
+ "continue": {
+ "description": "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response.",
+ "type": "string"
+ },
+ "resourceVersion": {
+ "description": "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency +optional",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "SelfLink is a URL representing this object. Populated by the system. Read-only. +optional",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LocalObjectReference": {
+ "description": "Not supported by Cloud Run LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace.",
+ "id": "LocalObjectReference",
+ "properties": {
+ "name": {
+ "description": "(Optional) Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ObjectMeta": {
+ "description": "k8s.io.apimachinery.pkg.apis.meta.v1.ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create.",
+ "id": "ObjectMeta",
+ "properties": {
+ "annotations": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "(Optional) Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: https://kubernetes.io/docs/user-guide/annotations",
+ "type": "object"
+ },
+ "clusterName": {
+ "description": "(Optional) Not supported by Cloud Run The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "(Optional) CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC. Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "deletionGracePeriodSeconds": {
+ "description": "(Optional) Not supported by Cloud Run Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "deletionTimestamp": {
+ "description": "(Optional) Not supported by Cloud Run DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested. Populated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata",
+ "format": "google-datetime",
+ "type": "string"
+ },
+ "finalizers": {
+ "description": "(Optional) Not supported by Cloud Run Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. +patchStrategy=merge",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "generateName": {
+ "description": "(Optional) Not supported by Cloud Run GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server. If this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header). Applied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency string generateName = 2;",
+ "type": "string"
+ },
+ "generation": {
+ "description": "(Optional) A sequence number representing a specific generation of the desired state. Populated by the system. Read-only.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "(Optional) Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and routes. More info: https://kubernetes.io/docs/user-guide/labels",
+ "type": "object"
+ },
+ "name": {
+ "description": "Name must be unique within a namespace, within a Cloud Run region. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: https://kubernetes.io/docs/user-guide/identifiers#names +optional",
+ "type": "string"
+ },
+ "namespace": {
+ "description": "Namespace defines the space within each name must be unique, within a Cloud Run region. In Cloud Run the namespace must be equal to either the project ID or project number.",
+ "type": "string"
+ },
+ "ownerReferences": {
+ "description": "(Optional) Not supported by Cloud Run List of objects that own this object. If ALL objects in the list have been deleted, this object will be garbage collected.",
+ "items": {
+ "$ref": "OwnerReference"
+ },
+ "type": "array"
+ },
+ "resourceVersion": {
+ "description": "Optional. An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server or omit the value to disable conflict-detection. They may only be valid for a particular resource or set of resources. Populated by the system. Read-only. Value must be treated as opaque by clients or omitted. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "(Optional) SelfLink is a URL representing this object. Populated by the system. Read-only. string selfLink = 4;",
+ "type": "string"
+ },
+ "uid": {
+ "description": "(Optional) UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations. Populated by the system. Read-only. More info: https://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "OwnerReference": {
+ "description": "OwnerReference contains enough information to let you identify an owning object. Currently, an owning object must be in the same namespace, so there is no namespace field.",
+ "id": "OwnerReference",
+ "properties": {
+ "apiVersion": {
+ "description": "API version of the referent.",
+ "type": "string"
+ },
+ "blockOwnerDeletion": {
+ "description": "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned. +optional",
+ "type": "boolean"
+ },
+ "controller": {
+ "description": "If true, this reference points to the managing controller. +optional",
+ "type": "boolean"
+ },
+ "kind": {
+ "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the referent. More info: https://kubernetes.io/docs/user-guide/identifiers#names",
+ "type": "string"
+ },
+ "uid": {
+ "description": "UID of the referent. More info: https://kubernetes.io/docs/user-guide/identifiers#uids",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Probe": {
+ "description": "Not supported by Cloud Run Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic.",
+ "id": "Probe",
+ "properties": {
+ "exec": {
+ "$ref": "ExecAction",
+ "description": "(Optional) Not supported by Cloud Run One and only one of the following should be specified. Exec specifies the action to take. A field inlined from the Handler message."
+ },
+ "failureThreshold": {
+ "description": "(Optional) Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "grpc": {
+ "$ref": "GRPCAction",
+ "description": "(Optional) GRPCAction specifies an action involving a GRPC port. A field inlined from the Handler message."
+ },
+ "httpGet": {
+ "$ref": "HTTPGetAction",
+ "description": "(Optional) HTTPGet specifies the http request to perform. A field inlined from the Handler message."
+ },
+ "initialDelaySeconds": {
+ "description": "(Optional) Number of seconds after the container has started before the probe is initiated. Defaults to 0 seconds. Minimum value is 0. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
+ "format": "int32",
+ "type": "integer"
+ },
+ "periodSeconds": {
+ "description": "(Optional) How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. Maximum value for liveness probe is 3600. Maximum value for startup probe is 240. Must be greater or equal than timeout_seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "successThreshold": {
+ "description": "(Optional) Minimum consecutive successes for the probe to be considered successful after having failed. Must be 1 if set.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "tcpSocket": {
+ "$ref": "TCPSocketAction",
+ "description": "(Optional) TCPSocket specifies an action involving a TCP port. TCP hooks not yet supported A field inlined from the Handler message."
+ },
+ "timeoutSeconds": {
+ "description": "(Optional) Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. Maximum value is 3600. Must be smaller than period_seconds. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "ResourceRequirements": {
+ "description": "ResourceRequirements describes the compute resource requirements.",
+ "id": "ResourceRequirements",
+ "properties": {
+ "limits": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "(Optional) Only memory and CPU are supported. Limits describes the maximum amount of compute resources allowed. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go",
+ "type": "object"
+ },
+ "requests": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "(Optional) Only memory and CPU are supported. Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. The values of the map is string form of the 'quantity' k8s type: https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SecretEnvSource": {
+ "description": "Not supported by Cloud Run SecretEnvSource selects a Secret to populate the environment variables with. The contents of the target Secret's Data field will represent the key-value pairs as environment variables.",
+ "id": "SecretEnvSource",
+ "properties": {
+ "localObjectReference": {
+ "$ref": "LocalObjectReference",
+ "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
+ },
+ "name": {
+ "description": "The Secret to select from.",
+ "type": "string"
+ },
+ "optional": {
+ "description": "(Optional) Specify whether the Secret must be defined",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "SecretKeySelector": {
+ "description": "SecretKeySelector selects a key of a Secret.",
+ "id": "SecretKeySelector",
+ "properties": {
+ "key": {
+ "description": "A Cloud Secret Manager secret version. Must be 'latest' for the latest version or an integer for a specific version. The key of the secret to select from. Must be a valid secret key.",
+ "type": "string"
+ },
+ "localObjectReference": {
+ "$ref": "LocalObjectReference",
+ "description": "This field should not be used directly as it is meant to be inlined directly into the message. Use the \"name\" field instead."
+ },
+ "name": {
+ "description": "The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. The name of the secret in the pod's namespace to select from.",
+ "type": "string"
+ },
+ "optional": {
+ "description": "(Optional) Specify whether the Secret or its key must be defined",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "SecretVolumeSource": {
+ "description": "The secret's value will be presented as the content of a file whose name is defined in the item path. If no items are defined, the name of the file is the secret_name. The contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names.",
+ "id": "SecretVolumeSource",
+ "properties": {
+ "defaultMode": {
+ "description": "Integer representation of mode bits to use on created files by default. Must be a value between 01 and 0777 (octal). If 0 or not set, it will default to 0444. Directories within the path are not affected by this setting. Notes * Internally, a umask of 0222 will be applied to any non-zero value. * This is an integer representation of the mode bits. So, the octal integer value should look exactly as the chmod numeric notation with a leading zero. Some examples: for chmod 777 (a=rwx), set to 0777 (octal) or 511 (base-10). For chmod 640 (u=rw,g=r), set to 0640 (octal) or 416 (base-10). For chmod 755 (u=rwx,g=rx,o=rx), set to 0755 (octal) or 493 (base-10). * This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "items": {
+ "description": "(Optional) If unspecified, the volume will expose a file whose name is the secret_name. If specified, the key will be used as the version to fetch from Cloud Secret Manager and the path will be the name of the file exposed in the volume. When items are defined, they must specify a key and a path. If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified that is not present in the Secret, the volume setup will error unless it is marked optional.",
+ "items": {
+ "$ref": "KeyToPath"
+ },
+ "type": "array"
+ },
+ "optional": {
+ "description": "(Optional) Specify whether the Secret or its keys must be defined.",
+ "type": "boolean"
+ },
+ "secretName": {
+ "description": "The name of the secret in Cloud Secret Manager. By default, the secret is assumed to be in the same project. If the secret is in another project, you must define an alias. An alias definition has the form: :projects//secrets/. If multiple alias definitions are needed, they must be separated by commas. The alias definitions must be set on the run.googleapis.com/secrets annotation. Name of the secret in the container's namespace to use.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityContext": {
+ "description": "Not supported by Cloud Run SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext. When both are set, the values in SecurityContext take precedence.",
+ "id": "SecurityContext",
+ "properties": {
+ "runAsUser": {
+ "description": "(Optional) The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "TCPSocketAction": {
+ "description": "Not supported by Cloud Run TCPSocketAction describes an action based on opening a socket",
+ "id": "TCPSocketAction",
+ "properties": {
+ "host": {
+ "description": "(Optional) Optional: Host name to connect to, defaults to the pod IP.",
+ "type": "string"
+ },
+ "port": {
+ "description": "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. This field is currently limited to integer types only because of proto's inability to properly support the IntOrString golang type.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Volume": {
+ "description": "Volume represents a named volume in a container.",
+ "id": "Volume",
+ "properties": {
+ "configMap": {
+ "$ref": "ConfigMapVolumeSource"
+ },
+ "name": {
+ "description": "Volume's name. In Cloud Run Fully Managed, the name 'cloudsql' is reserved.",
+ "type": "string"
+ },
+ "secret": {
+ "$ref": "SecretVolumeSource"
+ }
+ },
+ "type": "object"
+ },
+ "VolumeMount": {
+ "description": "VolumeMount describes a mounting of a Volume within a container.",
+ "id": "VolumeMount",
+ "properties": {
+ "mountPath": {
+ "description": "Path within the container at which the volume should be mounted. Must not contain ':'.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name of the volume. There must be a corresponding Volume with the same name.",
+ "type": "string"
+ },
+ "readOnly": {
+ "description": "(Optional) Only true is accepted. Defaults to true.",
+ "type": "boolean"
+ },
+ "subPath": {
+ "description": "(Optional) Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "servicePath": "",
+ "title": "Cloud Run Admin API",
+ "version": "v1alpha1",
+ "version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/serviceusage.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/serviceusage.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..e3542b81060576349583b42e871703389f88cb52
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/serviceusage.v1.json
@@ -0,0 +1,3588 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+},
+"https://www.googleapis.com/auth/cloud-platform.read-only": {
+"description": "View your data across Google Cloud services and see the email address of your Google Account"
+},
+"https://www.googleapis.com/auth/service.management": {
+"description": "Manage your Google API service configuration"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://serviceusage.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Service Usage",
+"description": "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.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/service-usage/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "serviceusage:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://serviceusage.mtls.googleapis.com/",
+"name": "serviceusage",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "serviceusage.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/service.management"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "serviceusage.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^operations/.*$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/service.management"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "serviceusage.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/service.management"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/operations",
+"httpMethod": "GET",
+"id": "serviceusage.operations.list",
+"parameterOrder": [],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/service.management"
+]
+}
+}
+},
+"services": {
+"methods": {
+"batchEnable": {
+"description": "Enable multiple services on a project. The operation is atomic: if enabling any service fails, then the entire batch fails, and no state changes occur. To enable a single service, use the `EnableService` method instead.",
+"flatPath": "v1/{v1Id}/{v1Id1}/services:batchEnable",
+"httpMethod": "POST",
+"id": "serviceusage.services.batchEnable",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Parent to enable services on. An example name would be: `projects/123` where `123` is the project number. The `BatchEnableServices` method currently only supports projects.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/services:batchEnable",
+"request": {
+"$ref": "BatchEnableServicesRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/service.management"
+]
+},
+"batchGet": {
+"description": "Returns the service configurations and enabled states for a given list of services.",
+"flatPath": "v1/{v1Id}/{v1Id1}/services:batchGet",
+"httpMethod": "GET",
+"id": "serviceusage.services.batchGet",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"names": {
+"description": "Names of the services to retrieve. An example name would be: `projects/123/services/serviceusage.googleapis.com` where `123` is the project number. A single request can get a maximum of 30 services at a time.",
+"location": "query",
+"repeated": true,
+"type": "string"
+},
+"parent": {
+"description": "Parent to retrieve services from. If this is set, the parent of all of the services specified in `names` must match this field. An example name would be: `projects/123` where `123` is the project number. The `BatchGetServices` method currently only supports projects.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/services:batchGet",
+"response": {
+"$ref": "BatchGetServicesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"disable": {
+"description": "Disable a service so that it can no longer be used with a project. This prevents unintended usage that may cause unexpected billing charges or security leaks. It is not valid to call the disable method on a service that is not currently enabled. Callers will receive a `FAILED_PRECONDITION` status if the target service is not currently enabled.",
+"flatPath": "v1/{v1Id}/{v1Id1}/services/{servicesId}:disable",
+"httpMethod": "POST",
+"id": "serviceusage.services.disable",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Name of the consumer and service to disable the service on. The enable and disable methods currently only support projects. An example name would be: `projects/123/services/serviceusage.googleapis.com` where `123` is the project number.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:disable",
+"request": {
+"$ref": "DisableServiceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/service.management"
+]
+},
+"enable": {
+"description": "Enable a service so that it can be used with a project.",
+"flatPath": "v1/{v1Id}/{v1Id1}/services/{servicesId}:enable",
+"httpMethod": "POST",
+"id": "serviceusage.services.enable",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Name of the consumer and service to enable the service on. The `EnableService` and `DisableService` methods currently only support projects. Enabling a service requires that the service is public or is shared with the user enabling the service. An example name would be: `projects/123/services/serviceusage.googleapis.com` where `123` is the project number.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:enable",
+"request": {
+"$ref": "EnableServiceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/service.management"
+]
+},
+"get": {
+"description": "Returns the service configuration and enabled state for a given service.",
+"flatPath": "v1/{v1Id}/{v1Id1}/services/{servicesId}",
+"httpMethod": "GET",
+"id": "serviceusage.services.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Name of the consumer and service to get the `ConsumerState` for. An example name would be: `projects/123/services/serviceusage.googleapis.com` where `123` is the project number.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+/services/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "GoogleApiServiceusageV1Service"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+},
+"list": {
+"description": "List all services available to the specified project, and the current state of those services with respect to the project. The list includes all public services, all services for which the calling user has the `servicemanagement.services.bind` permission, and all services that have already been enabled on the project. The list can be filtered to only include services in a specific state, for example to only include services enabled on the project. WARNING: If you need to query enabled services frequently or across an organization, you should use [Cloud Asset Inventory API](https://cloud.google.com/asset-inventory/docs/apis), which provides higher throughput and richer filtering capability.",
+"flatPath": "v1/{v1Id}/{v1Id1}/services",
+"httpMethod": "GET",
+"id": "serviceusage.services.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Only list services that conform to the given filter. The allowed filter strings are `state:ENABLED` and `state:DISABLED`.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Requested size of the next page of data. Requested page size cannot exceed 200. If not set, the default page size is 50.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token identifying which result to start with, which is returned by a previous list call.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Parent to search for services on. An example name would be: `projects/123` where `123` is the project number.",
+"location": "path",
+"pattern": "^[^/]+/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/services",
+"response": {
+"$ref": "ListServicesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform",
+"https://www.googleapis.com/auth/cloud-platform.read-only"
+]
+}
+}
+}
+},
+"revision": "20241219",
+"rootUrl": "https://serviceusage.googleapis.com/",
+"schemas": {
+"AddEnableRulesMetadata": {
+"description": "Metadata for the `AddEnableRules` method.",
+"id": "AddEnableRulesMetadata",
+"properties": {},
+"type": "object"
+},
+"AddEnableRulesResponse": {
+"description": "The response message of `AddEnableRules` method.",
+"id": "AddEnableRulesResponse",
+"properties": {
+"addedValues": {
+"description": "The values added to the parent consumer policy.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"parent": {
+"description": "The parent consumer policy. It can be `projects/12345/consumerPolicies/default`, or `folders/12345/consumerPolicies/default`, or `organizations/12345/consumerPolicies/default`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AdminQuotaPolicy": {
+"description": "Quota policy created by quota administrator.",
+"id": "AdminQuotaPolicy",
+"properties": {
+"container": {
+"description": "The cloud resource container at which the quota policy is created. The format is `{container_type}/{container_number}`",
+"type": "string"
+},
+"dimensions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": " If this map is nonempty, then this policy applies only to specific values for dimensions defined in the limit unit. For example, a policy on a limit with the unit `1/{project}/{region}` could contain an entry with the key `region` and the value `us-east-1`; the policy is only applied to quota consumed in that region. This map has the following restrictions: * If `region` appears as a key, its value must be a valid Cloud region. * If `zone` appears as a key, its value must be a valid Cloud zone. * Keys other than `region` or `zone` are not valid.",
+"type": "object"
+},
+"metric": {
+"description": "The name of the metric to which this policy applies. An example name would be: `compute.googleapis.com/cpus`",
+"type": "string"
+},
+"name": {
+"description": "The resource name of the policy. This name is generated by the server when the policy is created. Example names would be: `organizations/123/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/adminQuotaPolicies/4a3f2c1d`",
+"type": "string"
+},
+"policyValue": {
+"description": "The quota policy value. Can be any nonnegative integer, or -1 (unlimited quota).",
+"format": "int64",
+"type": "string"
+},
+"unit": {
+"description": "The limit unit of the limit to which this policy applies. An example unit would be: `1/{project}/{region}` Note that `{project}` and `{region}` are not placeholders in this example; the literal characters `{` and `}` occur in the string.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Analysis": {
+"description": "A message to group the analysis information.",
+"id": "Analysis",
+"properties": {
+"analysis": {
+"$ref": "AnalysisResult",
+"description": "Output only. Analysis result of updating a policy.",
+"readOnly": true
+},
+"analysisType": {
+"description": "Output only. The type of analysis.",
+"enum": [
+"ANALYSIS_TYPE_UNSPECIFIED",
+"ANALYSIS_TYPE_DEPENDENCY",
+"ANALYSIS_TYPE_RESOURCE_USAGE",
+"ANALYSIS_TYPE_RESOURCE_EXISTENCE"
+],
+"enumDescriptions": [
+"Unspecified analysis type. Do not use.",
+"The analysis of service dependencies.",
+"The analysis of service resource usage.",
+"The analysis of service resource existence."
+],
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Output only. The user friendly display name of the analysis type. E.g. service dependency analysis, service resource usage analysis, etc.",
+"readOnly": true,
+"type": "string"
+},
+"service": {
+"description": "The names of the service that has analysis result of warnings or blockers. Example: `services/storage.googleapis.com`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AnalysisResult": {
+"description": "An analysis result including blockers and warnings.",
+"id": "AnalysisResult",
+"properties": {
+"blockers": {
+"description": "Blocking information that would prevent the policy changes at runtime.",
+"items": {
+"$ref": "Impact"
+},
+"type": "array"
+},
+"warnings": {
+"description": "Warning information indicating that the policy changes might be unsafe, but will not block the changes at runtime.",
+"items": {
+"$ref": "Impact"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AnalyzeConsumerPolicyMetadata": {
+"description": "Metadata for the `AnalyzeConsumerPolicy` method.",
+"id": "AnalyzeConsumerPolicyMetadata",
+"properties": {},
+"type": "object"
+},
+"AnalyzeConsumerPolicyResponse": {
+"description": "The response of analyzing a consumer policy update.",
+"id": "AnalyzeConsumerPolicyResponse",
+"properties": {
+"analysis": {
+"description": "The list of analyses returned from performing the intended policy update analysis. The analysis is grouped by service name and different analysis types. The empty analysis list means that the consumer policy can be updated without any warnings or blockers.",
+"items": {
+"$ref": "Analysis"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Api": {
+"description": "Api is a light-weight descriptor for an API Interface. Interfaces are also described as \"protocol buffer services\" in some contexts, such as by the \"service\" keyword in a .proto file, but they are different from API Services, which represent a concrete implementation of an interface as opposed to simply a description of methods and bindings. They are also sometimes simply referred to as \"APIs\" in other contexts, such as the name of this message itself. See https://cloud.google.com/apis/design/glossary for detailed terminology.",
+"id": "Api",
+"properties": {
+"methods": {
+"description": "The methods of this interface, in unspecified order.",
+"items": {
+"$ref": "Method"
+},
+"type": "array"
+},
+"mixins": {
+"description": "Included interfaces. See Mixin.",
+"items": {
+"$ref": "Mixin"
+},
+"type": "array"
+},
+"name": {
+"description": "The fully qualified name of this interface, including package name followed by the interface's simple name.",
+"type": "string"
+},
+"options": {
+"description": "Any metadata attached to the interface.",
+"items": {
+"$ref": "Option"
+},
+"type": "array"
+},
+"sourceContext": {
+"$ref": "SourceContext",
+"description": "Source context for the protocol buffer service represented by this message."
+},
+"syntax": {
+"description": "The source syntax of the service.",
+"enum": [
+"SYNTAX_PROTO2",
+"SYNTAX_PROTO3",
+"SYNTAX_EDITIONS"
+],
+"enumDescriptions": [
+"Syntax `proto2`.",
+"Syntax `proto3`.",
+"Syntax `editions`."
+],
+"type": "string"
+},
+"version": {
+"description": "A version string for this interface. If specified, must have the form `major-version.minor-version`, as in `1.10`. If the minor version is omitted, it defaults to zero. If the entire version field is empty, the major version is derived from the package name, as outlined below. If the field is not empty, the version in the package name will be verified to be consistent with what is provided here. The versioning schema uses [semantic versioning](http://semver.org) where the major version number indicates a breaking change and the minor version an additive, non-breaking change. Both version numbers are signals to users what to expect from different versions, and should be carefully chosen based on the product plan. The major version is also reflected in the package name of the interface, which must end in `v`, as in `google.feature.v1`. For major versions 0 and 1, the suffix can be omitted. Zero major versions must only be used for experimental, non-GA interfaces. ",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AuthProvider": {
+"description": "Configuration for an authentication provider, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
+"id": "AuthProvider",
+"properties": {
+"audiences": {
+"description": "The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted. When this setting is absent, JWTs with audiences: - \"https://[service.name]/[google.protobuf.Api.name]\" - \"https://[service.name]/\" will be accepted. For example, if no audiences are in the setting, LibraryService API will accept JWTs with the following audiences: - https://library-example.googleapis.com/google.example.library.v1.LibraryService - https://library-example.googleapis.com/ Example: audiences: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com",
+"type": "string"
+},
+"authorizationUrl": {
+"description": "Redirect URL if JWT token is required but not present or is expired. Implement authorizationUrl of securityDefinitions in OpenAPI spec.",
+"type": "string"
+},
+"id": {
+"description": "The unique identifier of the auth provider. It will be referred to by `AuthRequirement.provider_id`. Example: \"bookstore_auth\".",
+"type": "string"
+},
+"issuer": {
+"description": "Identifies the principal that issued the JWT. See https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1 Usually a URL or an email address. Example: https://securetoken.google.com Example: 1234567-compute@developer.gserviceaccount.com",
+"type": "string"
+},
+"jwksUri": {
+"description": "URL of the provider's public key set to validate signature of the JWT. See [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata). Optional if the key set document: - can be retrieved from [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html) of the issuer. - can be inferred from the email domain of the issuer (e.g. a Google service account). Example: https://www.googleapis.com/oauth2/v1/certs",
+"type": "string"
+},
+"jwtLocations": {
+"description": "Defines the locations to extract the JWT. For now it is only used by the Cloud Endpoints to store the OpenAPI extension [x-google-jwt-locations] (https://cloud.google.com/endpoints/docs/openapi/openapi-extensions#x-google-jwt-locations) JWT locations can be one of HTTP headers, URL query parameters or cookies. The rule is that the first match wins. If not specified, default to use following 3 locations: 1) Authorization: Bearer 2) x-goog-iap-jwt-assertion 3) access_token query parameter Default locations can be specified as followings: jwt_locations: - header: Authorization value_prefix: \"Bearer \" - header: x-goog-iap-jwt-assertion - query: access_token",
+"items": {
+"$ref": "JwtLocation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AuthRequirement": {
+"description": "User-defined authentication requirements, including support for [JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).",
+"id": "AuthRequirement",
+"properties": {
+"audiences": {
+"description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is implemented and accepted in all the runtime components. The list of JWT [audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3). that are allowed to access. A JWT containing any of these audiences will be accepted. When this setting is absent, only JWTs with audience \"https://Service_name/API_name\" will be accepted. For example, if no audiences are in the setting, LibraryService API will only accept JWTs with the following audience \"https://library-example.googleapis.com/google.example.library.v1.LibraryService\". Example: audiences: bookstore_android.apps.googleusercontent.com, bookstore_web.apps.googleusercontent.com",
+"type": "string"
+},
+"providerId": {
+"description": "id from authentication provider. Example: provider_id: bookstore_auth",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Authentication": {
+"description": "`Authentication` defines the authentication configuration for API methods provided by an API service. Example: name: calendar.googleapis.com authentication: providers: - id: google_calendar_auth jwks_uri: https://www.googleapis.com/oauth2/v1/certs issuer: https://securetoken.google.com rules: - selector: \"*\" requirements: provider_id: google_calendar_auth - selector: google.calendar.Delegate oauth: canonical_scopes: https://www.googleapis.com/auth/calendar.read",
+"id": "Authentication",
+"properties": {
+"providers": {
+"description": "Defines a set of authentication providers that a service supports.",
+"items": {
+"$ref": "AuthProvider"
+},
+"type": "array"
+},
+"rules": {
+"description": "A list of authentication rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order.",
+"items": {
+"$ref": "AuthenticationRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AuthenticationRule": {
+"description": "Authentication rules for the service. By default, if a method has any authentication requirements, every request must include a valid credential matching one of the requirements. It's an error to include more than one kind of credential in a single request. If a method doesn't have any auth requirements, request credentials will be ignored.",
+"id": "AuthenticationRule",
+"properties": {
+"allowWithoutCredential": {
+"description": "If true, the service accepts API keys without any other credential. This flag only applies to HTTP and gRPC requests.",
+"type": "boolean"
+},
+"oauth": {
+"$ref": "OAuthRequirements",
+"description": "The requirements for OAuth credentials."
+},
+"requirements": {
+"description": "Requirements for additional authentication providers.",
+"items": {
+"$ref": "AuthRequirement"
+},
+"type": "array"
+},
+"selector": {
+"description": "Selects the methods to which this rule applies. Refer to selector for syntax details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Backend": {
+"description": "`Backend` defines the backend configuration for a service.",
+"id": "Backend",
+"properties": {
+"rules": {
+"description": "A list of API backend rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order.",
+"items": {
+"$ref": "BackendRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BackendRule": {
+"description": "A backend rule provides configuration for an individual API element.",
+"id": "BackendRule",
+"properties": {
+"address": {
+"description": "The address of the API backend. The scheme is used to determine the backend protocol and security. The following schemes are accepted: SCHEME PROTOCOL SECURITY http:// HTTP None https:// HTTP TLS grpc:// gRPC None grpcs:// gRPC TLS It is recommended to explicitly include a scheme. Leaving out the scheme may cause constrasting behaviors across platforms. If the port is unspecified, the default is: - 80 for schemes without TLS - 443 for schemes with TLS For HTTP backends, use protocol to specify the protocol version.",
+"type": "string"
+},
+"deadline": {
+"description": "The number of seconds to wait for a response from a request. The default varies based on the request protocol and deployment environment.",
+"format": "double",
+"type": "number"
+},
+"disableAuth": {
+"description": "When disable_auth is true, a JWT ID token won't be generated and the original \"Authorization\" HTTP header will be preserved. If the header is used to carry the original token and is expected by the backend, this field must be set to true to preserve the header.",
+"type": "boolean"
+},
+"jwtAudience": {
+"description": "The JWT audience is used when generating a JWT ID token for the backend. This ID token will be added in the HTTP \"authorization\" header, and sent to the backend.",
+"type": "string"
+},
+"minDeadline": {
+"deprecated": true,
+"description": "Deprecated, do not use.",
+"format": "double",
+"type": "number"
+},
+"operationDeadline": {
+"description": "The number of seconds to wait for the completion of a long running operation. The default is no deadline.",
+"format": "double",
+"type": "number"
+},
+"overridesByRequestProtocol": {
+"additionalProperties": {
+"$ref": "BackendRule"
+},
+"description": "The map between request protocol and the backend address.",
+"type": "object"
+},
+"pathTranslation": {
+"enum": [
+"PATH_TRANSLATION_UNSPECIFIED",
+"CONSTANT_ADDRESS",
+"APPEND_PATH_TO_ADDRESS"
+],
+"enumDescriptions": [
+"",
+"Use the backend address as-is, with no modification to the path. If the URL pattern contains variables, the variable names and values will be appended to the query string. If a query string parameter and a URL pattern variable have the same name, this may result in duplicate keys in the query string. # Examples Given the following operation config: Method path: /api/company/{cid}/user/{uid} Backend address: https://example.cloudfunctions.net/getUser Requests to the following request paths will call the backend at the translated path: Request path: /api/company/widgetworks/user/johndoe Translated: https://example.cloudfunctions.net/getUser?cid=widgetworks&uid=johndoe Request path: /api/company/widgetworks/user/johndoe?timezone=EST Translated: https://example.cloudfunctions.net/getUser?timezone=EST&cid=widgetworks&uid=johndoe",
+"The request path will be appended to the backend address. # Examples Given the following operation config: Method path: /api/company/{cid}/user/{uid} Backend address: https://example.appspot.com Requests to the following request paths will call the backend at the translated path: Request path: /api/company/widgetworks/user/johndoe Translated: https://example.appspot.com/api/company/widgetworks/user/johndoe Request path: /api/company/widgetworks/user/johndoe?timezone=EST Translated: https://example.appspot.com/api/company/widgetworks/user/johndoe?timezone=EST"
+],
+"type": "string"
+},
+"protocol": {
+"description": "The protocol used for sending a request to the backend. The supported values are \"http/1.1\" and \"h2\". The default value is inferred from the scheme in the address field: SCHEME PROTOCOL http:// http/1.1 https:// http/1.1 grpc:// h2 grpcs:// h2 For secure HTTP backends (https://) that support HTTP/2, set this field to \"h2\" for improved performance. Configuring this field to non-default values is only supported for secure HTTP backends. This field will be ignored for all other backends. See https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids for more details on the supported values.",
+"type": "string"
+},
+"selector": {
+"description": "Selects the methods to which this rule applies. Refer to selector for syntax details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"BatchCreateAdminOverridesResponse": {
+"description": "Response message for BatchCreateAdminOverrides",
+"id": "BatchCreateAdminOverridesResponse",
+"properties": {
+"overrides": {
+"description": "The overrides that were created.",
+"items": {
+"$ref": "QuotaOverride"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BatchCreateConsumerOverridesResponse": {
+"description": "Response message for BatchCreateConsumerOverrides",
+"id": "BatchCreateConsumerOverridesResponse",
+"properties": {
+"overrides": {
+"description": "The overrides that were created.",
+"items": {
+"$ref": "QuotaOverride"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BatchEnableServicesRequest": {
+"description": "Request message for the `BatchEnableServices` method.",
+"id": "BatchEnableServicesRequest",
+"properties": {
+"serviceIds": {
+"description": "The identifiers of the services to enable on the project. A valid identifier would be: serviceusage.googleapis.com Enabling services requires that each service is public or is shared with the user enabling the service. A single request can enable a maximum of 20 services at a time. If more than 20 services are specified, the request will fail, and no state changes will occur.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BatchEnableServicesResponse": {
+"description": "Response message for the `BatchEnableServices` method. This response message is assigned to the `response` field of the returned Operation when that operation is done.",
+"id": "BatchEnableServicesResponse",
+"properties": {
+"failures": {
+"description": "If allow_partial_success is true, and one or more services could not be enabled, this field contains the details about each failure.",
+"items": {
+"$ref": "EnableFailure"
+},
+"type": "array"
+},
+"services": {
+"description": "The new state of the services after enabling.",
+"items": {
+"$ref": "GoogleApiServiceusageV1Service"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BatchGetServicesResponse": {
+"description": "Response message for the `BatchGetServices` method.",
+"id": "BatchGetServicesResponse",
+"properties": {
+"services": {
+"description": "The requested Service states.",
+"items": {
+"$ref": "GoogleApiServiceusageV1Service"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Billing": {
+"description": "Billing related configuration of the service. The following example shows how to configure monitored resources and metrics for billing, `consumer_destinations` is the only supported destination and the monitored resources need at least one label key `cloud.googleapis.com/location` to indicate the location of the billing usage, using different monitored resources between monitoring and billing is recommended so they can be evolved independently: monitored_resources: - type: library.googleapis.com/billing_branch labels: - key: cloud.googleapis.com/location description: | Predefined label to support billing location restriction. - key: city description: | Custom label to define the city where the library branch is located in. - key: name description: Custom label to define the name of the library branch. metrics: - name: library.googleapis.com/book/borrowed_count metric_kind: DELTA value_type: INT64 unit: \"1\" billing: consumer_destinations: - monitored_resource: library.googleapis.com/billing_branch metrics: - library.googleapis.com/book/borrowed_count",
+"id": "Billing",
+"properties": {
+"consumerDestinations": {
+"description": "Billing configurations for sending metrics to the consumer project. There can be multiple consumer destinations per service, each one must have a different monitored resource type. A metric can be used in at most one consumer destination.",
+"items": {
+"$ref": "BillingDestination"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BillingDestination": {
+"description": "Configuration of a specific billing destination (Currently only support bill against consumer project).",
+"id": "BillingDestination",
+"properties": {
+"metrics": {
+"description": "Names of the metrics to report to this billing destination. Each name must be defined in Service.metrics section.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"monitoredResource": {
+"description": "The monitored resource type. The type must be defined in Service.monitored_resources section.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"ClientLibrarySettings": {
+"description": "Details about how and where to publish client libraries.",
+"id": "ClientLibrarySettings",
+"properties": {
+"cppSettings": {
+"$ref": "CppSettings",
+"description": "Settings for C++ client libraries."
+},
+"dotnetSettings": {
+"$ref": "DotnetSettings",
+"description": "Settings for .NET client libraries."
+},
+"goSettings": {
+"$ref": "GoSettings",
+"description": "Settings for Go client libraries."
+},
+"javaSettings": {
+"$ref": "JavaSettings",
+"description": "Settings for legacy Java features, supported in the Service YAML."
+},
+"launchStage": {
+"description": "Launch stage of this version of the API.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"UNIMPLEMENTED",
+"PRELAUNCH",
+"EARLY_ACCESS",
+"ALPHA",
+"BETA",
+"GA",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The feature is not yet implemented. Users can not use it.",
+"Prelaunch features are hidden from users and are only visible internally.",
+"Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
+"Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+"Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
+"GA features are open to all developers and are considered stable and fully qualified for production use.",
+"Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+],
+"type": "string"
+},
+"nodeSettings": {
+"$ref": "NodeSettings",
+"description": "Settings for Node client libraries."
+},
+"phpSettings": {
+"$ref": "PhpSettings",
+"description": "Settings for PHP client libraries."
+},
+"pythonSettings": {
+"$ref": "PythonSettings",
+"description": "Settings for Python client libraries."
+},
+"restNumericEnums": {
+"description": "When using transport=rest, the client request will encode enums as numbers rather than strings.",
+"type": "boolean"
+},
+"rubySettings": {
+"$ref": "RubySettings",
+"description": "Settings for Ruby client libraries."
+},
+"version": {
+"description": "Version of the API to apply these settings to. This is the full protobuf package for the API, ending in the version element. Examples: \"google.cloud.speech.v1\" and \"google.spanner.admin.database.v1\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CommonLanguageSettings": {
+"description": "Required information for every language.",
+"id": "CommonLanguageSettings",
+"properties": {
+"destinations": {
+"description": "The destination where API teams want this client library to be published.",
+"items": {
+"enum": [
+"CLIENT_LIBRARY_DESTINATION_UNSPECIFIED",
+"GITHUB",
+"PACKAGE_MANAGER"
+],
+"enumDescriptions": [
+"Client libraries will neither be generated nor published to package managers.",
+"Generate the client library in a repo under github.com/googleapis, but don't publish it to package managers.",
+"Publish the library to package managers like nuget.org and npmjs.com."
+],
+"type": "string"
+},
+"type": "array"
+},
+"referenceDocsUri": {
+"deprecated": true,
+"description": "Link to automatically generated reference documentation. Example: https://cloud.google.com/nodejs/docs/reference/asset/latest",
+"type": "string"
+},
+"selectiveGapicGeneration": {
+"$ref": "SelectiveGapicGeneration",
+"description": "Configuration for which RPCs should be generated in the GAPIC client."
+}
+},
+"type": "object"
+},
+"ConsumerPolicy": {
+"description": "Consumer Policy is a set of rules that define what services or service groups can be used for a cloud resource hierarchy.",
+"id": "ConsumerPolicy",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Annotations is an unstructured key-value map stored with a policy that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. [AIP-128](https://google.aip.dev/128#annotations)",
+"type": "object"
+},
+"enableRules": {
+"description": "Enable rules define usable services and service groups.",
+"items": {
+"$ref": "EnableRule"
+},
+"type": "array"
+},
+"etag": {
+"description": "An opaque tag indicating the current version of the policy, used for concurrency control.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the policy. We only allow consumer policy name as `default` for now: `projects/12345/consumerPolicies/default`, `folders/12345/consumerPolicies/default`, `organizations/12345/consumerPolicies/default`.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "The last-modified time.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Context": {
+"description": "`Context` defines which contexts an API requests. Example: context: rules: - selector: \"*\" requested: - google.rpc.context.ProjectContext - google.rpc.context.OriginContext The above specifies that all methods in the API request `google.rpc.context.ProjectContext` and `google.rpc.context.OriginContext`. Available context types are defined in package `google.rpc.context`. This also provides mechanism to allowlist any protobuf message extension that can be sent in grpc metadata using \u201cx-goog-ext--bin\u201d and \u201cx-goog-ext--jspb\u201d format. For example, list any service specific protobuf types that can appear in grpc metadata as follows in your yaml file: Example: context: rules: - selector: \"google.example.library.v1.LibraryService.CreateBook\" allowed_request_extensions: - google.foo.v1.NewExtension allowed_response_extensions: - google.foo.v1.NewExtension You can also specify extension ID instead of fully qualified extension name here.",
+"id": "Context",
+"properties": {
+"rules": {
+"description": "A list of RPC context rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order.",
+"items": {
+"$ref": "ContextRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ContextRule": {
+"description": "A context rule provides information about the context for an individual API element.",
+"id": "ContextRule",
+"properties": {
+"allowedRequestExtensions": {
+"description": "A list of full type names or extension IDs of extensions allowed in grpc side channel from client to backend.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"allowedResponseExtensions": {
+"description": "A list of full type names or extension IDs of extensions allowed in grpc side channel from backend to client.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"provided": {
+"description": "A list of full type names of provided contexts. It is used to support propagating HTTP headers and ETags from the response extension.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"requested": {
+"description": "A list of full type names of requested contexts, only the requested context will be made available to the backend.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"selector": {
+"description": "Selects the methods to which this rule applies. Refer to selector for syntax details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Control": {
+"description": "Selects and configures the service controller used by the service. Example: control: environment: servicecontrol.googleapis.com",
+"id": "Control",
+"properties": {
+"environment": {
+"description": "The service controller environment to use. If empty, no control plane feature (like quota and billing) will be enabled. The recommended value for most services is servicecontrol.googleapis.com",
+"type": "string"
+},
+"methodPolicies": {
+"description": "Defines policies applying to the API methods of the service.",
+"items": {
+"$ref": "MethodPolicy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CppSettings": {
+"description": "Settings for C++ client libraries.",
+"id": "CppSettings",
+"properties": {
+"common": {
+"$ref": "CommonLanguageSettings",
+"description": "Some settings."
+}
+},
+"type": "object"
+},
+"CreateAdminQuotaPolicyMetadata": {
+"description": "Metadata message that provides information such as progress, partial failures, and similar information on each GetOperation call of LRO returned by CreateAdminQuotaPolicy.",
+"id": "CreateAdminQuotaPolicyMetadata",
+"properties": {},
+"type": "object"
+},
+"CustomError": {
+"description": "Customize service error responses. For example, list any service specific protobuf types that can appear in error detail lists of error responses. Example: custom_error: types: - google.foo.v1.CustomError - google.foo.v1.AnotherError",
+"id": "CustomError",
+"properties": {
+"rules": {
+"description": "The list of custom error rules that apply to individual API messages. **NOTE:** All service configuration rules follow \"last one wins\" order.",
+"items": {
+"$ref": "CustomErrorRule"
+},
+"type": "array"
+},
+"types": {
+"description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"CustomErrorRule": {
+"description": "A custom error rule.",
+"id": "CustomErrorRule",
+"properties": {
+"isErrorType": {
+"description": "Mark this message as possible payload in error response. Otherwise, objects of this type will be filtered when they appear in error payload.",
+"type": "boolean"
+},
+"selector": {
+"description": "Selects messages to which this rule applies. Refer to selector for syntax details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CustomHttpPattern": {
+"description": "A custom pattern is used for defining custom HTTP verb.",
+"id": "CustomHttpPattern",
+"properties": {
+"kind": {
+"description": "The name of this custom HTTP verb.",
+"type": "string"
+},
+"path": {
+"description": "The path matched by this custom verb.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DeleteAdminQuotaPolicyMetadata": {
+"description": "Metadata message that provides information such as progress, partial failures, and similar information on each GetOperation call of LRO returned by DeleteAdminQuotaPolicy.",
+"id": "DeleteAdminQuotaPolicyMetadata",
+"properties": {},
+"type": "object"
+},
+"DisableServiceRequest": {
+"description": "Request message for the `DisableService` method.",
+"id": "DisableServiceRequest",
+"properties": {
+"checkIfServiceHasUsage": {
+"description": "Defines the behavior for checking service usage when disabling a service.",
+"enum": [
+"CHECK_IF_SERVICE_HAS_USAGE_UNSPECIFIED",
+"SKIP",
+"CHECK"
+],
+"enumDescriptions": [
+"When unset, the default behavior is used, which is SKIP.",
+"If set, skip checking service usage when disabling a service.",
+"If set, service usage is checked when disabling the service. If a service, or its dependents, has usage in the last 30 days, the request returns a FAILED_PRECONDITION error."
+],
+"type": "string"
+},
+"disableDependentServices": {
+"description": "Indicates if services that are enabled and which depend on this service should also be disabled. If not set, an error will be generated if any enabled services depend on the service to be disabled. When set, the service, and any enabled services that depend on it, will be disabled together.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"DisableServiceResponse": {
+"description": "Response message for the `DisableService` method. This response message is assigned to the `response` field of the returned Operation when that operation is done.",
+"id": "DisableServiceResponse",
+"properties": {
+"service": {
+"$ref": "GoogleApiServiceusageV1Service",
+"description": "The new state of the service after disabling."
+}
+},
+"type": "object"
+},
+"Documentation": {
+"description": "`Documentation` provides the information for describing a service. Example: documentation: summary: > The Google Calendar API gives access to most calendar features. pages: - name: Overview content: (== include google/foo/overview.md ==) - name: Tutorial content: (== include google/foo/tutorial.md ==) subpages: - name: Java content: (== include google/foo/tutorial_java.md ==) rules: - selector: google.calendar.Calendar.Get description: > ... - selector: google.calendar.Calendar.Put description: > ... Documentation is provided in markdown syntax. In addition to standard markdown features, definition lists, tables and fenced code blocks are supported. Section headers can be provided and are interpreted relative to the section nesting of the context where a documentation fragment is embedded. Documentation from the IDL is merged with documentation defined via the config at normalization time, where documentation provided by config rules overrides IDL provided. A number of constructs specific to the API platform are supported in documentation text. In order to reference a proto element, the following notation can be used: [fully.qualified.proto.name][] To override the display text used for the link, this can be used: [display text][fully.qualified.proto.name] Text can be excluded from doc using the following notation: (-- internal comment --) A few directives are available in documentation. Note that directives must appear on a single line to be properly identified. The `include` directive includes a markdown file from an external source: (== include path/to/file ==) The `resource_for` directive marks a message to be the resource of a collection in REST view. If it is not specified, tools attempt to infer the resource from the operations in a collection: (== resource_for v1.shelves.books ==) The directive `suppress_warning` does not directly affect documentation and is documented together with service config validation.",
+"id": "Documentation",
+"properties": {
+"additionalIamInfo": {
+"description": "Optional information about the IAM configuration. This is typically used to link to documentation about a product's IAM roles and permissions.",
+"type": "string"
+},
+"documentationRootUrl": {
+"description": "The URL to the root of documentation.",
+"type": "string"
+},
+"overview": {
+"description": "Declares a single overview page. For example: documentation: summary: ... overview: (== include overview.md ==) This is a shortcut for the following declaration (using pages style): documentation: summary: ... pages: - name: Overview content: (== include overview.md ==) Note: you cannot specify both `overview` field and `pages` field.",
+"type": "string"
+},
+"pages": {
+"description": "The top level pages for the documentation set.",
+"items": {
+"$ref": "Page"
+},
+"type": "array"
+},
+"rules": {
+"description": "A list of documentation rules that apply to individual API elements. **NOTE:** All service configuration rules follow \"last one wins\" order.",
+"items": {
+"$ref": "DocumentationRule"
+},
+"type": "array"
+},
+"sectionOverrides": {
+"description": "Specifies section and content to override boilerplate content provided by go/api-docgen. Currently overrides following sections: 1. rest.service.client_libraries",
+"items": {
+"$ref": "Page"
+},
+"type": "array"
+},
+"serviceRootUrl": {
+"description": "Specifies the service root url if the default one (the service name from the yaml file) is not suitable. This can be seen in any fully specified service urls as well as sections that show a base that other urls are relative to.",
+"type": "string"
+},
+"summary": {
+"description": "A short description of what the service does. The summary must be plain text. It becomes the overview of the service displayed in Google Cloud Console. NOTE: This field is equivalent to the standard field `description`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DocumentationRule": {
+"description": "A documentation rule provides information about individual API elements.",
+"id": "DocumentationRule",
+"properties": {
+"deprecationDescription": {
+"description": "Deprecation description of the selected element(s). It can be provided if an element is marked as `deprecated`.",
+"type": "string"
+},
+"description": {
+"description": "Description of the selected proto element (e.g. a message, a method, a 'service' definition, or a field). Defaults to leading & trailing comments taken from the proto source definition of the proto element.",
+"type": "string"
+},
+"disableReplacementWords": {
+"description": "String of comma or space separated case-sensitive words for which method/field name replacement will be disabled by go/api-docgen.",
+"type": "string"
+},
+"selector": {
+"description": "The selector is a comma-separated list of patterns for any element such as a method, a field, an enum value. Each pattern is a qualified name of the element which may end in \"*\", indicating a wildcard. Wildcards are only allowed at the end and for a whole component of the qualified name, i.e. \"foo.*\" is ok, but not \"foo.b*\" or \"foo.*.bar\". A wildcard will match one or more components. To specify a default for all applicable elements, the whole pattern \"*\" is used.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DotnetSettings": {
+"description": "Settings for Dotnet client libraries.",
+"id": "DotnetSettings",
+"properties": {
+"common": {
+"$ref": "CommonLanguageSettings",
+"description": "Some settings."
+},
+"forcedNamespaceAliases": {
+"description": "Namespaces which must be aliased in snippets due to a known (but non-generator-predictable) naming collision",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"handwrittenSignatures": {
+"description": "Method signatures (in the form \"service.method(signature)\") which are provided separately, so shouldn't be generated. Snippets *calling* these methods are still generated, however.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"ignoredResources": {
+"description": "List of full resource types to ignore during generation. This is typically used for API-specific Location resources, which should be handled by the generator as if they were actually the common Location resources. Example entry: \"documentai.googleapis.com/Location\"",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"renamedResources": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Map from full resource types to the effective short name for the resource. This is used when otherwise resource named from different services would cause naming collisions. Example entry: \"datalabeling.googleapis.com/Dataset\": \"DataLabelingDataset\"",
+"type": "object"
+},
+"renamedServices": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Map from original service names to renamed versions. This is used when the default generated types would cause a naming conflict. (Neither name is fully-qualified.) Example: Subscriber to SubscriberServiceApi.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"EnableFailure": {
+"description": "Provides error messages for the failing services.",
+"id": "EnableFailure",
+"properties": {
+"errorMessage": {
+"description": "An error message describing why the service could not be enabled.",
+"type": "string"
+},
+"serviceId": {
+"description": "The service id of a service that could not be enabled.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"EnableRule": {
+"description": "The consumer policy rule that defines usable services and service groups.",
+"id": "EnableRule",
+"properties": {
+"enableType": {
+"description": "Client and resource project enable type.",
+"enum": [
+"ENABLE_TYPE_UNSPECIFIED",
+"CLIENT",
+"RESOURCE",
+"V1_COMPATIBLE"
+],
+"enumDescriptions": [
+"Unspecified enable type, which means enabled as both client and resource project.",
+"Enable all clients under the CRM node specified by `ConsumerPolicy.name` to use the listed services. A client can be an API key, an OAuth client, or a service account.",
+"Enable resources in the list services to be created and used under the CRM node specified by the `ConsumerPolicy.name`.",
+"Activation made by Service Usage v1 API. This will be how consumers differentiate between policy changes made by v1 and v2 clients and understand what is actually possible based on those different policies."
+],
+"type": "string"
+},
+"groups": {
+"deprecated": true,
+"description": "DEPRECATED: Please use field `values`. Service group should have prefix `groups/`. The names of the service groups that are enabled (Not Implemented). Example: `groups/googleServices`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"services": {
+"deprecated": true,
+"description": "DEPRECATED: Please use field `values`. Service should have prefix `services/`. The names of the services that are enabled. Example: `storage.googleapis.com`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"values": {
+"description": "The names of the services or service groups that are enabled. Example: `services/storage.googleapis.com`, `groups/googleServices`, `groups/allServices`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"EnableServiceRequest": {
+"description": "Request message for the `EnableService` method.",
+"id": "EnableServiceRequest",
+"properties": {},
+"type": "object"
+},
+"EnableServiceResponse": {
+"description": "Response message for the `EnableService` method. This response message is assigned to the `response` field of the returned Operation when that operation is done.",
+"id": "EnableServiceResponse",
+"properties": {
+"service": {
+"$ref": "GoogleApiServiceusageV1Service",
+"description": "The new state of the service after enabling."
+}
+},
+"type": "object"
+},
+"Endpoint": {
+"description": "`Endpoint` describes a network address of a service that serves a set of APIs. It is commonly known as a service endpoint. A service may expose any number of service endpoints, and all service endpoints share the same service definition, such as quota limits and monitoring metrics. Example: type: google.api.Service name: library-example.googleapis.com endpoints: # Declares network address `https://library-example.googleapis.com` # for service `library-example.googleapis.com`. The `https` scheme # is implicit for all service endpoints. Other schemes may be # supported in the future. - name: library-example.googleapis.com allow_cors: false - name: content-staging-library-example.googleapis.com # Allows HTTP OPTIONS calls to be passed to the API frontend, for it # to decide whether the subsequent cross-origin request is allowed # to proceed. allow_cors: true",
+"id": "Endpoint",
+"properties": {
+"aliases": {
+"description": "Aliases for this endpoint, these will be served by the same UrlMap as the parent endpoint, and will be provisioned in the GCP stack for the Regional Endpoints.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"allowCors": {
+"description": "Allowing [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka cross-domain traffic, would allow the backends served from this endpoint to receive and respond to HTTP OPTIONS requests. The response will be used by the browser to determine whether the subsequent cross-origin request is allowed to proceed.",
+"type": "boolean"
+},
+"name": {
+"description": "The canonical name of this endpoint.",
+"type": "string"
+},
+"target": {
+"description": "The specification of an Internet routable address of API frontend that will handle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary). It should be either a valid IPv4 address or a fully-qualified domain name. For example, \"8.8.8.8\" or \"myservice.appspot.com\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Enum": {
+"description": "Enum type definition.",
+"id": "Enum",
+"properties": {
+"edition": {
+"description": "The source edition string, only valid when syntax is SYNTAX_EDITIONS.",
+"type": "string"
+},
+"enumvalue": {
+"description": "Enum value definitions.",
+"items": {
+"$ref": "EnumValue"
+},
+"type": "array"
+},
+"name": {
+"description": "Enum type name.",
+"type": "string"
+},
+"options": {
+"description": "Protocol buffer options.",
+"items": {
+"$ref": "Option"
+},
+"type": "array"
+},
+"sourceContext": {
+"$ref": "SourceContext",
+"description": "The source context."
+},
+"syntax": {
+"description": "The source syntax.",
+"enum": [
+"SYNTAX_PROTO2",
+"SYNTAX_PROTO3",
+"SYNTAX_EDITIONS"
+],
+"enumDescriptions": [
+"Syntax `proto2`.",
+"Syntax `proto3`.",
+"Syntax `editions`."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"EnumValue": {
+"description": "Enum value definition.",
+"id": "EnumValue",
+"properties": {
+"name": {
+"description": "Enum value name.",
+"type": "string"
+},
+"number": {
+"description": "Enum value number.",
+"format": "int32",
+"type": "integer"
+},
+"options": {
+"description": "Protocol buffer options.",
+"items": {
+"$ref": "Option"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ExperimentalFeatures": {
+"description": "Experimental features to be included during client library generation. These fields will be deprecated once the feature graduates and is enabled by default.",
+"id": "ExperimentalFeatures",
+"properties": {
+"protobufPythonicTypesEnabled": {
+"description": "Enables generation of protobuf code using new types that are more Pythonic which are included in `protobuf>=5.29.x`. This feature will be enabled by default 1 month after launching the feature in preview packages.",
+"type": "boolean"
+},
+"restAsyncIoEnabled": {
+"description": "Enables generation of asynchronous REST clients if `rest` transport is enabled. By default, asynchronous REST clients will not be generated. This feature will be enabled by default 1 month after launching the feature in preview packages.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Field": {
+"description": "A single field of a message type.",
+"id": "Field",
+"properties": {
+"cardinality": {
+"description": "The field cardinality.",
+"enum": [
+"CARDINALITY_UNKNOWN",
+"CARDINALITY_OPTIONAL",
+"CARDINALITY_REQUIRED",
+"CARDINALITY_REPEATED"
+],
+"enumDescriptions": [
+"For fields with unknown cardinality.",
+"For optional fields.",
+"For required fields. Proto2 syntax only.",
+"For repeated fields."
+],
+"type": "string"
+},
+"defaultValue": {
+"description": "The string value of the default value of this field. Proto2 syntax only.",
+"type": "string"
+},
+"jsonName": {
+"description": "The field JSON name.",
+"type": "string"
+},
+"kind": {
+"description": "The field type.",
+"enum": [
+"TYPE_UNKNOWN",
+"TYPE_DOUBLE",
+"TYPE_FLOAT",
+"TYPE_INT64",
+"TYPE_UINT64",
+"TYPE_INT32",
+"TYPE_FIXED64",
+"TYPE_FIXED32",
+"TYPE_BOOL",
+"TYPE_STRING",
+"TYPE_GROUP",
+"TYPE_MESSAGE",
+"TYPE_BYTES",
+"TYPE_UINT32",
+"TYPE_ENUM",
+"TYPE_SFIXED32",
+"TYPE_SFIXED64",
+"TYPE_SINT32",
+"TYPE_SINT64"
+],
+"enumDescriptions": [
+"Field type unknown.",
+"Field type double.",
+"Field type float.",
+"Field type int64.",
+"Field type uint64.",
+"Field type int32.",
+"Field type fixed64.",
+"Field type fixed32.",
+"Field type bool.",
+"Field type string.",
+"Field type group. Proto2 syntax only, and deprecated.",
+"Field type message.",
+"Field type bytes.",
+"Field type uint32.",
+"Field type enum.",
+"Field type sfixed32.",
+"Field type sfixed64.",
+"Field type sint32.",
+"Field type sint64."
+],
+"type": "string"
+},
+"name": {
+"description": "The field name.",
+"type": "string"
+},
+"number": {
+"description": "The field number.",
+"format": "int32",
+"type": "integer"
+},
+"oneofIndex": {
+"description": "The index of the field type in `Type.oneofs`, for message or enumeration types. The first type has index 1; zero means the type is not in the list.",
+"format": "int32",
+"type": "integer"
+},
+"options": {
+"description": "The protocol buffer options.",
+"items": {
+"$ref": "Option"
+},
+"type": "array"
+},
+"packed": {
+"description": "Whether to use alternative packed wire representation.",
+"type": "boolean"
+},
+"typeUrl": {
+"description": "The field type URL, without the scheme, for message or enumeration types. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FieldPolicy": {
+"description": "Google API Policy Annotation This message defines a simple API policy annotation that can be used to annotate API request and response message fields with applicable policies. One field may have multiple applicable policies that must all be satisfied before a request can be processed. This policy annotation is used to generate the overall policy that will be used for automatic runtime policy enforcement and documentation generation.",
+"id": "FieldPolicy",
+"properties": {
+"resourcePermission": {
+"description": "Specifies the required permission(s) for the resource referred to by the field. It requires the field contains a valid resource reference, and the request must pass the permission checks to proceed. For example, \"resourcemanager.projects.get\".",
+"type": "string"
+},
+"resourceType": {
+"description": "Specifies the resource type for the resource referred to by the field.",
+"type": "string"
+},
+"selector": {
+"description": "Selects one or more request or response message fields to apply this `FieldPolicy`. When a `FieldPolicy` is used in proto annotation, the selector must be left as empty. The service config generator will automatically fill the correct value. When a `FieldPolicy` is used in service config, the selector must be a comma-separated string with valid request or response field paths, such as \"foo.bar\" or \"foo.bar,foo.baz\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GetServiceIdentityMetadata": {
+"description": "Metadata for the `GetServiceIdentity` method.",
+"id": "GetServiceIdentityMetadata",
+"properties": {},
+"type": "object"
+},
+"GetServiceIdentityResponse": {
+"description": "Response message for getting service identity.",
+"id": "GetServiceIdentityResponse",
+"properties": {
+"identity": {
+"$ref": "ServiceIdentity",
+"description": "Service identity that service producer can use to access consumer resources. If exists is true, it contains email and unique_id. If exists is false, it contains pre-constructed email and empty unique_id."
+},
+"state": {
+"description": "Service identity state.",
+"enum": [
+"IDENTITY_STATE_UNSPECIFIED",
+"ACTIVE"
+],
+"enumDescriptions": [
+"Default service identity state. This value is used if the state is omitted.",
+"Service identity has been created and can be used."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoSettings": {
+"description": "Settings for Go client libraries.",
+"id": "GoSettings",
+"properties": {
+"common": {
+"$ref": "CommonLanguageSettings",
+"description": "Some settings."
+},
+"renamedServices": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Map of service names to renamed services. Keys are the package relative service names and values are the name to be used for the service client and call options. publishing: go_settings: renamed_services: Publisher: TopicAdmin",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleApiService": {
+"description": "`Service` is the root object of Google API service configuration (service config). It describes the basic information about a logical service, such as the service name and the user-facing title, and delegates other aspects to sub-sections. Each sub-section is either a proto message or a repeated proto message that configures a specific aspect, such as auth. For more information, see each proto message definition. Example: type: google.api.Service name: calendar.googleapis.com title: Google Calendar API apis: - name: google.calendar.v3.Calendar visibility: rules: - selector: \"google.calendar.v3.*\" restriction: PREVIEW backend: rules: - selector: \"google.calendar.v3.*\" address: calendar.example.com authentication: providers: - id: google_calendar_auth jwks_uri: https://www.googleapis.com/oauth2/v1/certs issuer: https://securetoken.google.com rules: - selector: \"*\" requirements: provider_id: google_calendar_auth",
+"id": "GoogleApiService",
+"properties": {
+"apis": {
+"description": "A list of API interfaces exported by this service. Only the `name` field of the google.protobuf.Api needs to be provided by the configuration author, as the remaining fields will be derived from the IDL during the normalization process. It is an error to specify an API interface here which cannot be resolved against the associated IDL files.",
+"items": {
+"$ref": "Api"
+},
+"type": "array"
+},
+"authentication": {
+"$ref": "Authentication",
+"description": "Auth configuration."
+},
+"backend": {
+"$ref": "Backend",
+"description": "API backend configuration."
+},
+"billing": {
+"$ref": "Billing",
+"description": "Billing configuration."
+},
+"configVersion": {
+"description": "Obsolete. Do not use. This field has no semantic meaning. The service config compiler always sets this field to `3`.",
+"format": "uint32",
+"type": "integer"
+},
+"context": {
+"$ref": "Context",
+"description": "Context configuration."
+},
+"control": {
+"$ref": "Control",
+"description": "Configuration for the service control plane."
+},
+"customError": {
+"$ref": "CustomError",
+"description": "Custom error configuration."
+},
+"documentation": {
+"$ref": "Documentation",
+"description": "Additional API documentation."
+},
+"endpoints": {
+"description": "Configuration for network endpoints. If this is empty, then an endpoint with the same name as the service is automatically generated to service all defined APIs.",
+"items": {
+"$ref": "Endpoint"
+},
+"type": "array"
+},
+"enums": {
+"description": "A list of all enum types included in this API service. Enums referenced directly or indirectly by the `apis` are automatically included. Enums which are not referenced but shall be included should be listed here by name by the configuration author. Example: enums: - name: google.someapi.v1.SomeEnum",
+"items": {
+"$ref": "Enum"
+},
+"type": "array"
+},
+"http": {
+"$ref": "Http",
+"description": "HTTP configuration."
+},
+"id": {
+"description": "A unique ID for a specific instance of this message, typically assigned by the client for tracking purpose. Must be no longer than 63 characters and only lower case letters, digits, '.', '_' and '-' are allowed. If empty, the server may choose to generate one instead.",
+"type": "string"
+},
+"logging": {
+"$ref": "Logging",
+"description": "Logging configuration."
+},
+"logs": {
+"description": "Defines the logs used by this service.",
+"items": {
+"$ref": "LogDescriptor"
+},
+"type": "array"
+},
+"metrics": {
+"description": "Defines the metrics used by this service.",
+"items": {
+"$ref": "MetricDescriptor"
+},
+"type": "array"
+},
+"monitoredResources": {
+"description": "Defines the monitored resources used by this service. This is required by the Service.monitoring and Service.logging configurations.",
+"items": {
+"$ref": "MonitoredResourceDescriptor"
+},
+"type": "array"
+},
+"monitoring": {
+"$ref": "Monitoring",
+"description": "Monitoring configuration."
+},
+"name": {
+"description": "The service name, which is a DNS-like logical identifier for the service, such as `calendar.googleapis.com`. The service name typically goes through DNS verification to make sure the owner of the service also owns the DNS name.",
+"type": "string"
+},
+"producerProjectId": {
+"description": "The Google project that owns this service.",
+"type": "string"
+},
+"publishing": {
+"$ref": "Publishing",
+"description": "Settings for [Google Cloud Client libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) generated from APIs defined as protocol buffers."
+},
+"quota": {
+"$ref": "Quota",
+"description": "Quota configuration."
+},
+"sourceInfo": {
+"$ref": "SourceInfo",
+"description": "Output only. The source information for this configuration if available."
+},
+"systemParameters": {
+"$ref": "SystemParameters",
+"description": "System parameter configuration."
+},
+"systemTypes": {
+"description": "A list of all proto message types included in this API service. It serves similar purpose as [google.api.Service.types], except that these types are not needed by user-defined APIs. Therefore, they will not show up in the generated discovery doc. This field should only be used to define system APIs in ESF.",
+"items": {
+"$ref": "Type"
+},
+"type": "array"
+},
+"title": {
+"description": "The product title for this service, it is the name displayed in Google Cloud Console.",
+"type": "string"
+},
+"types": {
+"description": "A list of all proto message types included in this API service. Types referenced directly or indirectly by the `apis` are automatically included. Messages which are not referenced but shall be included, such as types used by the `google.protobuf.Any` type, should be listed here by name by the configuration author. Example: types: - name: google.protobuf.Int32",
+"items": {
+"$ref": "Type"
+},
+"type": "array"
+},
+"usage": {
+"$ref": "Usage",
+"description": "Configuration controlling usage of this service."
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV1OperationMetadata": {
+"description": "The operation metadata returned for the batchend services operation.",
+"id": "GoogleApiServiceusageV1OperationMetadata",
+"properties": {
+"resourceNames": {
+"description": "The full name of the resources that this operation is directly associated with.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV1Service": {
+"description": "A service that is available for use by the consumer.",
+"id": "GoogleApiServiceusageV1Service",
+"properties": {
+"config": {
+"$ref": "GoogleApiServiceusageV1ServiceConfig",
+"description": "The service configuration of the available service. Some fields may be filtered out of the configuration in responses to the `ListServices` method. These fields are present only in responses to the `GetService` method."
+},
+"name": {
+"description": "The resource name of the consumer and service. A valid name would be: - projects/123/services/serviceusage.googleapis.com",
+"type": "string"
+},
+"parent": {
+"description": "The resource name of the consumer. A valid name would be: - projects/123",
+"type": "string"
+},
+"state": {
+"description": "Whether or not the service has been enabled for use by the consumer.",
+"enum": [
+"STATE_UNSPECIFIED",
+"DISABLED",
+"ENABLED"
+],
+"enumDescriptions": [
+"The default value, which indicates that the enabled state of the service is unspecified or not meaningful. Currently, all consumers other than projects (such as folders and organizations) are always in this state.",
+"The service cannot be used by this consumer. It has either been explicitly disabled, or has never been enabled.",
+"The service has been explicitly enabled for use by this consumer."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV1ServiceConfig": {
+"description": "The configuration of the service.",
+"id": "GoogleApiServiceusageV1ServiceConfig",
+"properties": {
+"apis": {
+"description": "A list of API interfaces exported by this service. Contains only the names, versions, and method names of the interfaces.",
+"items": {
+"$ref": "Api"
+},
+"type": "array"
+},
+"authentication": {
+"$ref": "Authentication",
+"description": "Auth configuration. Contains only the OAuth rules."
+},
+"documentation": {
+"$ref": "Documentation",
+"description": "Additional API documentation. Contains only the summary and the documentation URL."
+},
+"endpoints": {
+"description": "Configuration for network endpoints. Contains only the names and aliases of the endpoints.",
+"items": {
+"$ref": "Endpoint"
+},
+"type": "array"
+},
+"monitoredResources": {
+"description": "Defines the monitored resources used by this service. This is required by the Service.monitoring and Service.logging configurations.",
+"items": {
+"$ref": "MonitoredResourceDescriptor"
+},
+"type": "array"
+},
+"monitoring": {
+"$ref": "Monitoring",
+"description": "Monitoring configuration. This should not include the 'producer_destinations' field."
+},
+"name": {
+"description": "The DNS address at which this service is available. An example DNS address would be: `calendar.googleapis.com`.",
+"type": "string"
+},
+"quota": {
+"$ref": "Quota",
+"description": "Quota configuration."
+},
+"title": {
+"description": "The product title for this service.",
+"type": "string"
+},
+"usage": {
+"$ref": "Usage",
+"description": "Configuration controlling usage of this service."
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV1beta1GetServiceIdentityResponse": {
+"description": "Response message for getting service identity.",
+"id": "GoogleApiServiceusageV1beta1GetServiceIdentityResponse",
+"properties": {
+"identity": {
+"$ref": "GoogleApiServiceusageV1beta1ServiceIdentity",
+"description": "Service identity that service producer can use to access consumer resources. If exists is true, it contains email and unique_id. If exists is false, it contains pre-constructed email and empty unique_id."
+},
+"state": {
+"description": "Service identity state.",
+"enum": [
+"IDENTITY_STATE_UNSPECIFIED",
+"ACTIVE"
+],
+"enumDescriptions": [
+"Default service identity state. This value is used if the state is omitted.",
+"Service identity has been created and can be used."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV1beta1ServiceIdentity": {
+"description": "Service identity for a service. This is the identity that service producer should use to access consumer resources.",
+"id": "GoogleApiServiceusageV1beta1ServiceIdentity",
+"properties": {
+"email": {
+"description": "The email address of the service account that a service producer would use to access consumer resources.",
+"type": "string"
+},
+"uniqueId": {
+"description": "The unique and stable id of the service account. https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts#ServiceAccount",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2alphaConsumerPolicy": {
+"description": "Consumer Policy is a set of rules that define what services or service groups can be used for a cloud resource hierarchy.",
+"id": "GoogleApiServiceusageV2alphaConsumerPolicy",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Annotations is an unstructured key-value map stored with a policy that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. [AIP-128](https://google.aip.dev/128#annotations)",
+"type": "object"
+},
+"createTime": {
+"description": "Output only. The time the policy was created. For singleton policies, this is the first touch of the policy.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"enableRules": {
+"description": "Enable rules define usable services, groups, and categories. There can currently be at most one `EnableRule`. This restriction will be lifted in later releases.",
+"items": {
+"$ref": "GoogleApiServiceusageV2alphaEnableRule"
+},
+"type": "array"
+},
+"etag": {
+"description": "Output only. An opaque tag indicating the current version of the policy, used for concurrency control.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the policy. Only the `default` policy is supported: `projects/12345/consumerPolicies/default`, `folders/12345/consumerPolicies/default`, `organizations/12345/consumerPolicies/default`.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time the policy was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2alphaEnableRule": {
+"description": "The consumer policy rule that defines enabled services, groups, and categories.",
+"id": "GoogleApiServiceusageV2alphaEnableRule",
+"properties": {
+"services": {
+"description": "The names of the services that are enabled. Example: `services/storage.googleapis.com`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2alphaUpdateConsumerPolicyMetadata": {
+"description": "Metadata for the `UpdateConsumerPolicy` method.",
+"id": "GoogleApiServiceusageV2alphaUpdateConsumerPolicyMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleApiServiceusageV2betaAnalysis": {
+"description": "A message to group the analysis information.",
+"id": "GoogleApiServiceusageV2betaAnalysis",
+"properties": {
+"analysis": {
+"$ref": "GoogleApiServiceusageV2betaAnalysisResult",
+"description": "Output only. Analysis result of updating a policy.",
+"readOnly": true
+},
+"analysisType": {
+"description": "Output only. The type of analysis.",
+"enum": [
+"ANALYSIS_TYPE_UNSPECIFIED",
+"ANALYSIS_TYPE_DEPENDENCY",
+"ANALYSIS_TYPE_RESOURCE_USAGE"
+],
+"enumDescriptions": [
+"Unspecified analysis type. Do not use.",
+"The analysis of service dependencies.",
+"The analysis of service resource usage."
+],
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "Output only. The user friendly display name of the analysis type. E.g. service dependency analysis, service resource usage analysis, etc.",
+"readOnly": true,
+"type": "string"
+},
+"service": {
+"description": "The names of the service that has analysis result of warnings or blockers. Example: `services/storage.googleapis.com`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2betaAnalysisResult": {
+"description": "An analysis result including blockers and warnings.",
+"id": "GoogleApiServiceusageV2betaAnalysisResult",
+"properties": {
+"blockers": {
+"description": "Blocking information that would prevent the policy changes at runtime.",
+"items": {
+"$ref": "GoogleApiServiceusageV2betaImpact"
+},
+"type": "array"
+},
+"warnings": {
+"description": "Warning information indicating that the policy changes might be unsafe, but will not block the changes at runtime.",
+"items": {
+"$ref": "GoogleApiServiceusageV2betaImpact"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2betaAnalyzeConsumerPolicyMetadata": {
+"description": "Metadata for the `AnalyzeConsumerPolicy` method.",
+"id": "GoogleApiServiceusageV2betaAnalyzeConsumerPolicyMetadata",
+"properties": {},
+"type": "object"
+},
+"GoogleApiServiceusageV2betaAnalyzeConsumerPolicyResponse": {
+"description": "The response of analyzing a consumer policy update.",
+"id": "GoogleApiServiceusageV2betaAnalyzeConsumerPolicyResponse",
+"properties": {
+"analysis": {
+"description": "The list of analyses returned from performing the intended policy update analysis. The analysis is grouped by service name and different analysis types. The empty analysis list means that the consumer policy can be updated without any warnings or blockers.",
+"items": {
+"$ref": "GoogleApiServiceusageV2betaAnalysis"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2betaConsumerPolicy": {
+"description": "Consumer Policy is a set of rules that define what services or service groups can be used for a cloud resource hierarchy.",
+"id": "GoogleApiServiceusageV2betaConsumerPolicy",
+"properties": {
+"annotations": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. Annotations is an unstructured key-value map stored with a policy that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. [AIP-128](https://google.aip.dev/128#annotations)",
+"type": "object"
+},
+"createTime": {
+"description": "Output only. The time the policy was created. For singleton policies, this is the first touch of the policy.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"enableRules": {
+"description": "Enable rules define usable services, groups, and categories. There can currently be at most one `EnableRule`. This restriction will be lifted in later releases.",
+"items": {
+"$ref": "GoogleApiServiceusageV2betaEnableRule"
+},
+"type": "array"
+},
+"etag": {
+"description": "Output only. An opaque tag indicating the current version of the policy, used for concurrency control.",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The resource name of the policy. Only the `default` policy is supported: `projects/12345/consumerPolicies/default`, `folders/12345/consumerPolicies/default`, `organizations/12345/consumerPolicies/default`.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The time the policy was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2betaEnableRule": {
+"description": "The consumer policy rule that defines enabled services, groups, and categories.",
+"id": "GoogleApiServiceusageV2betaEnableRule",
+"properties": {
+"services": {
+"description": "The names of the services that are enabled. Example: `services/storage.googleapis.com`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2betaImpact": {
+"description": "A message to group impacts of updating a policy.",
+"id": "GoogleApiServiceusageV2betaImpact",
+"properties": {
+"detail": {
+"description": "Output only. User friendly impact detail in a free form message.",
+"readOnly": true,
+"type": "string"
+},
+"impactType": {
+"description": "Output only. The type of impact.",
+"enum": [
+"IMPACT_TYPE_UNSPECIFIED",
+"DEPENDENCY_MISSING_DEPENDENCIES"
+],
+"enumDescriptions": [
+"Reserved Blocks (Block n contains codes from 100n to 100(n+1) -1 Block 0 - Special/Admin codes Block 1 - Impact Type of ANALYSIS_TYPE_DEPENDENCY Block 2 - Impact Type of ANALYSIS_TYPE_RESOURCE_USAGE ...",
+"Block 1 - Impact Type of ANALYSIS_TYPE_DEPENDENCY"
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleApiServiceusageV2betaUpdateConsumerPolicyMetadata": {
+"description": "Metadata for the `UpdateConsumerPolicy` method.",
+"id": "GoogleApiServiceusageV2betaUpdateConsumerPolicyMetadata",
+"properties": {},
+"type": "object"
+},
+"Http": {
+"description": "Defines the HTTP configuration for an API service. It contains a list of HttpRule, each specifying the mapping of an RPC method to one or more HTTP REST API methods.",
+"id": "Http",
+"properties": {
+"fullyDecodeReservedExpansion": {
+"description": "When set to true, URL path parameters will be fully URI-decoded except in cases of single segment matches in reserved expansion, where \"%2F\" will be left encoded. The default behavior is to not decode RFC 6570 reserved characters in multi segment matches.",
+"type": "boolean"
+},
+"rules": {
+"description": "A list of HTTP configuration rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order.",
+"items": {
+"$ref": "HttpRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"HttpRule": {
+"description": "gRPC Transcoding gRPC Transcoding is a feature for mapping between a gRPC method and one or more HTTP REST endpoints. It allows developers to build a single API service that supports both gRPC APIs and REST APIs. Many systems, including [Google APIs](https://github.com/googleapis/googleapis), [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC Gateway](https://github.com/grpc-ecosystem/grpc-gateway), and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature and use it for large scale production services. `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies how different portions of the gRPC request message are mapped to the URL path, URL query parameters, and HTTP request body. It also controls how the gRPC response message is mapped to the HTTP response body. `HttpRule` is typically specified as an `google.api.http` annotation on the gRPC method. Each mapping specifies a URL path template and an HTTP method. The path template may refer to one or more fields in the gRPC request message, as long as each field is a non-repeated field with a primitive (non-message) type. The path template controls how fields of the request message are mapped to the URL path. Example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get: \"/v1/{name=messages/*}\" }; } } message GetMessageRequest { string name = 1; // Mapped to URL path. } message Message { string text = 1; // The resource content. } This enables an HTTP REST to gRPC mapping as below: - HTTP: `GET /v1/messages/123456` - gRPC: `GetMessage(name: \"messages/123456\")` Any fields in the request message which are not bound by the path template automatically become HTTP query parameters if there is no HTTP request body. For example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get:\"/v1/messages/{message_id}\" }; } } message GetMessageRequest { message SubMessage { string subfield = 1; } string message_id = 1; // Mapped to URL path. int64 revision = 2; // Mapped to URL query parameter `revision`. SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. } This enables a HTTP JSON to RPC mapping as below: - HTTP: `GET /v1/messages/123456?revision=2&sub.subfield=foo` - gRPC: `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))` Note that fields which are mapped to URL query parameters must have a primitive type or a repeated primitive type or a non-repeated message type. In the case of a repeated type, the parameter can be repeated in the URL as `...?param=A¶m=B`. In the case of a message type, each field of the message is mapped to a separate parameter, such as `...?foo.a=A&foo.b=B&foo.c=C`. For HTTP methods that allow a request body, the `body` field specifies the mapping. Consider a REST update method on the message resource collection: service Messaging { rpc UpdateMessage(UpdateMessageRequest) returns (Message) { option (google.api.http) = { patch: \"/v1/messages/{message_id}\" body: \"message\" }; } } message UpdateMessageRequest { string message_id = 1; // mapped to the URL Message message = 2; // mapped to the body } The following HTTP JSON to RPC mapping is enabled, where the representation of the JSON in the request body is determined by protos JSON encoding: - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` - gRPC: `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })` The special name `*` can be used in the body mapping to define that every field not bound by the path template should be mapped to the request body. This enables the following alternative definition of the update method: service Messaging { rpc UpdateMessage(Message) returns (Message) { option (google.api.http) = { patch: \"/v1/messages/{message_id}\" body: \"*\" }; } } message Message { string message_id = 1; string text = 2; } The following HTTP JSON to RPC mapping is enabled: - HTTP: `PATCH /v1/messages/123456 { \"text\": \"Hi!\" }` - gRPC: `UpdateMessage(message_id: \"123456\" text: \"Hi!\")` Note that when using `*` in the body mapping, it is not possible to have HTTP parameters, as all fields not bound by the path end in the body. This makes this option more rarely used in practice when defining REST APIs. The common usage of `*` is in custom methods which don't use the URL at all for transferring data. It is possible to define multiple HTTP methods for one RPC by using the `additional_bindings` option. Example: service Messaging { rpc GetMessage(GetMessageRequest) returns (Message) { option (google.api.http) = { get: \"/v1/messages/{message_id}\" additional_bindings { get: \"/v1/users/{user_id}/messages/{message_id}\" } }; } } message GetMessageRequest { string message_id = 1; string user_id = 2; } This enables the following two alternative HTTP JSON to RPC mappings: - HTTP: `GET /v1/messages/123456` - gRPC: `GetMessage(message_id: \"123456\")` - HTTP: `GET /v1/users/me/messages/123456` - gRPC: `GetMessage(user_id: \"me\" message_id: \"123456\")` Rules for HTTP mapping 1. Leaf request fields (recursive expansion nested messages in the request message) are classified into three categories: - Fields referred by the path template. They are passed via the URL path. - Fields referred by the HttpRule.body. They are passed via the HTTP request body. - All other fields are passed via the URL query parameters, and the parameter name is the field path in the request message. A repeated field can be represented as multiple query parameters under the same name. 2. If HttpRule.body is \"*\", there is no URL query parameter, all fields are passed via URL path and HTTP request body. 3. If HttpRule.body is omitted, there is no HTTP request body, all fields are passed via URL path and URL query parameters. Path template syntax Template = \"/\" Segments [ Verb ] ; Segments = Segment { \"/\" Segment } ; Segment = \"*\" | \"**\" | LITERAL | Variable ; Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ; FieldPath = IDENT { \".\" IDENT } ; Verb = \":\" LITERAL ; The syntax `*` matches a single URL path segment. The syntax `**` matches zero or more URL path segments, which must be the last part of the URL path except the `Verb`. The syntax `Variable` matches part of the URL path as specified by its template. A variable template must not contain other variables. If a variable matches a single path segment, its template may be omitted, e.g. `{var}` is equivalent to `{var=*}`. The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` contains any reserved character, such characters should be percent-encoded before the matching. If a variable contains exactly one path segment, such as `\"{var}\"` or `\"{var=*}\"`, when such a variable is expanded into a URL path on the client side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The server side does the reverse decoding. Such variables show up in the [Discovery Document](https://developers.google.com/discovery/v1/reference/apis) as `{var}`. If a variable contains multiple path segments, such as `\"{var=foo/*}\"` or `\"{var=**}\"`, when such a variable is expanded into a URL path on the client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. The server side does the reverse decoding, except \"%2F\" and \"%2f\" are left unchanged. Such variables show up in the [Discovery Document](https://developers.google.com/discovery/v1/reference/apis) as `{+var}`. Using gRPC API Service Configuration gRPC API Service Configuration (service config) is a configuration language for configuring a gRPC service to become a user-facing product. The service config is simply the YAML representation of the `google.api.Service` proto message. As an alternative to annotating your proto file, you can configure gRPC transcoding in your service config YAML files. You do this by specifying a `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same effect as the proto annotation. This can be particularly useful if you have a proto that is reused in multiple services. Note that any transcoding specified in the service config will override any matching transcoding configuration in the proto. The following example selects a gRPC method and applies an `HttpRule` to it: http: rules: - selector: example.v1.Messaging.GetMessage get: /v1/messages/{message_id}/{sub.subfield} Special notes When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the proto to JSON conversion must follow the [proto3 specification](https://developers.google.com/protocol-buffers/docs/proto3#json). While the single segment variable follows the semantics of [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String Expansion, the multi segment variable **does not** follow RFC 6570 Section 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion does not expand special characters like `?` and `#`, which would lead to invalid URLs. As the result, gRPC Transcoding uses a custom encoding for multi segment variables. The path variables **must not** refer to any repeated or mapped field, because client libraries are not capable of handling such variable expansion. The path variables **must not** capture the leading \"/\" character. The reason is that the most common use case \"{var}\" does not capture the leading \"/\" character. For consistency, all path variables must share the same behavior. Repeated message fields must not be mapped to URL query parameters, because no client library can support such complicated mapping. If an API needs to use a JSON array for request or response body, it can map the request or response body to a repeated field. However, some gRPC Transcoding implementations may not support this feature.",
+"id": "HttpRule",
+"properties": {
+"additionalBindings": {
+"description": "Additional HTTP bindings for the selector. Nested bindings must not contain an `additional_bindings` field themselves (that is, the nesting may only be one level deep).",
+"items": {
+"$ref": "HttpRule"
+},
+"type": "array"
+},
+"body": {
+"description": "The name of the request field whose value is mapped to the HTTP request body, or `*` for mapping all request fields not captured by the path pattern to the HTTP body, or omitted for not having any HTTP request body. NOTE: the referred field must be present at the top-level of the request message type.",
+"type": "string"
+},
+"custom": {
+"$ref": "CustomHttpPattern",
+"description": "The custom pattern is used for specifying an HTTP method that is not included in the `pattern` field, such as HEAD, or \"*\" to leave the HTTP method unspecified for this rule. The wild-card rule is useful for services that provide content to Web (HTML) clients."
+},
+"delete": {
+"description": "Maps to HTTP DELETE. Used for deleting a resource.",
+"type": "string"
+},
+"get": {
+"description": "Maps to HTTP GET. Used for listing and getting information about resources.",
+"type": "string"
+},
+"patch": {
+"description": "Maps to HTTP PATCH. Used for updating a resource.",
+"type": "string"
+},
+"post": {
+"description": "Maps to HTTP POST. Used for creating a resource or performing an action.",
+"type": "string"
+},
+"put": {
+"description": "Maps to HTTP PUT. Used for replacing a resource.",
+"type": "string"
+},
+"responseBody": {
+"description": "Optional. The name of the response field whose value is mapped to the HTTP response body. When omitted, the entire response message will be used as the HTTP response body. NOTE: The referred field must be present at the top-level of the response message type.",
+"type": "string"
+},
+"selector": {
+"description": "Selects a method to which this rule applies. Refer to selector for syntax details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Impact": {
+"description": "A message to group impacts of updating a policy.",
+"id": "Impact",
+"properties": {
+"detail": {
+"description": "Output only. User friendly impact detail in a free form message.",
+"readOnly": true,
+"type": "string"
+},
+"impactType": {
+"description": "Output only. The type of impact.",
+"enum": [
+"IMPACT_TYPE_UNSPECIFIED",
+"DEPENDENCY_MISSING_DEPENDENCIES",
+"RESOURCE_EXISTENCE_PROJECT"
+],
+"enumDescriptions": [
+"Reserved Blocks (Block n contains codes from 100n to 100(n+1) -1 Block 0 - Special/Admin codes Block 1 - Impact Type of ANALYSIS_TYPE_DEPENDENCY Block 2 - Impact Type of ANALYSIS_TYPE_RESOURCE_USAGE Block 3 - Impact Type of ANALYSIS_TYPE_RESOURCE_EXISTENCE ...",
+"Block 1 - Impact Type of ANALYSIS_TYPE_DEPENDENCY",
+"Block 3 - Impact Type of ANALYSIS_TYPE_RESOURCE_EXISTENCE"
+],
+"readOnly": true,
+"type": "string"
+},
+"parent": {
+"description": "The parent resource that the analysis is based on and the service name that the analysis is for. Example: `projects/100/services/compute.googleapis.com`, folders/101/services/compute.googleapis.com` and `organizations/102/services/compute.googleapis.com`. Usually, the parent resource here is same as the parent resource of the analyzed policy. However, for some analysis types, the parent can be different. For example, for resource existence analysis, if the parent resource of the analyzed policy is a folder or an organization, the parent resource here can still be the project that contains the resources.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ImportAdminOverridesMetadata": {
+"description": "Metadata message that provides information such as progress, partial failures, and similar information on each GetOperation call of LRO returned by ImportAdminOverrides.",
+"id": "ImportAdminOverridesMetadata",
+"properties": {},
+"type": "object"
+},
+"ImportAdminOverridesResponse": {
+"description": "Response message for ImportAdminOverrides",
+"id": "ImportAdminOverridesResponse",
+"properties": {
+"overrides": {
+"description": "The overrides that were created from the imported data.",
+"items": {
+"$ref": "QuotaOverride"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ImportAdminQuotaPoliciesMetadata": {
+"description": "Metadata message that provides information such as progress, partial failures, and similar information on each GetOperation call of LRO returned by ImportAdminQuotaPolicies.",
+"id": "ImportAdminQuotaPoliciesMetadata",
+"properties": {},
+"type": "object"
+},
+"ImportAdminQuotaPoliciesResponse": {
+"description": "Response message for ImportAdminQuotaPolicies",
+"id": "ImportAdminQuotaPoliciesResponse",
+"properties": {
+"policies": {
+"description": "The policies that were created from the imported data.",
+"items": {
+"$ref": "AdminQuotaPolicy"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ImportConsumerOverridesMetadata": {
+"description": "Metadata message that provides information such as progress, partial failures, and similar information on each GetOperation call of LRO returned by ImportConsumerOverrides.",
+"id": "ImportConsumerOverridesMetadata",
+"properties": {},
+"type": "object"
+},
+"ImportConsumerOverridesResponse": {
+"description": "Response message for ImportConsumerOverrides",
+"id": "ImportConsumerOverridesResponse",
+"properties": {
+"overrides": {
+"description": "The overrides that were created from the imported data.",
+"items": {
+"$ref": "QuotaOverride"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"JavaSettings": {
+"description": "Settings for Java client libraries.",
+"id": "JavaSettings",
+"properties": {
+"common": {
+"$ref": "CommonLanguageSettings",
+"description": "Some settings."
+},
+"libraryPackage": {
+"description": "The package name to use in Java. Clobbers the java_package option set in the protobuf. This should be used **only** by APIs who have already set the language_settings.java.package_name\" field in gapic.yaml. API teams should use the protobuf java_package option where possible. Example of a YAML configuration:: publishing: java_settings: library_package: com.google.cloud.pubsub.v1",
+"type": "string"
+},
+"serviceClassNames": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Configure the Java class name to use instead of the service's for its corresponding generated GAPIC client. Keys are fully-qualified service names as they appear in the protobuf (including the full the language_settings.java.interface_names\" field in gapic.yaml. API teams should otherwise use the service name as it appears in the protobuf. Example of a YAML configuration:: publishing: java_settings: service_class_names: - google.pubsub.v1.Publisher: TopicAdmin - google.pubsub.v1.Subscriber: SubscriptionAdmin",
+"type": "object"
+}
+},
+"type": "object"
+},
+"JwtLocation": {
+"description": "Specifies a location to extract JWT from an API request.",
+"id": "JwtLocation",
+"properties": {
+"cookie": {
+"description": "Specifies cookie name to extract JWT token.",
+"type": "string"
+},
+"header": {
+"description": "Specifies HTTP header name to extract JWT token.",
+"type": "string"
+},
+"query": {
+"description": "Specifies URL query parameter name to extract JWT token.",
+"type": "string"
+},
+"valuePrefix": {
+"description": "The value prefix. The value format is \"value_prefix{token}\" Only applies to \"in\" header type. Must be empty for \"in\" query type. If not empty, the header value has to match (case sensitive) this prefix. If not matched, JWT will not be extracted. If matched, JWT will be extracted after the prefix is removed. For example, for \"Authorization: Bearer {JWT}\", value_prefix=\"Bearer \" with a space at the end.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LabelDescriptor": {
+"description": "A description of a label.",
+"id": "LabelDescriptor",
+"properties": {
+"description": {
+"description": "A human-readable description for the label.",
+"type": "string"
+},
+"key": {
+"description": "The label key.",
+"type": "string"
+},
+"valueType": {
+"description": "The type of data that can be assigned to the label.",
+"enum": [
+"STRING",
+"BOOL",
+"INT64"
+],
+"enumDescriptions": [
+"A variable-length string. This is the default.",
+"Boolean; true or false.",
+"A 64-bit signed integer."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListServicesResponse": {
+"description": "Response message for the `ListServices` method.",
+"id": "ListServicesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Token that can be passed to `ListServices` to resume a paginated query.",
+"type": "string"
+},
+"services": {
+"description": "The available services for the requested project.",
+"items": {
+"$ref": "GoogleApiServiceusageV1Service"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"LogDescriptor": {
+"description": "A description of a log type. Example in YAML format: - name: library.googleapis.com/activity_history description: The history of borrowing and returning library items. display_name: Activity labels: - key: /customer_id description: Identifier of a library customer",
+"id": "LogDescriptor",
+"properties": {
+"description": {
+"description": "A human-readable description of this log. This information appears in the documentation and can contain details.",
+"type": "string"
+},
+"displayName": {
+"description": "The human-readable name for this log. This information appears on the user interface and should be concise.",
+"type": "string"
+},
+"labels": {
+"description": "The set of labels that are available to describe a specific log entry. Runtime requests that contain labels not specified here are considered invalid.",
+"items": {
+"$ref": "LabelDescriptor"
+},
+"type": "array"
+},
+"name": {
+"description": "The name of the log. It must be less than 512 characters long and can include the following characters: upper- and lower-case alphanumeric characters [A-Za-z0-9], and punctuation characters including slash, underscore, hyphen, period [/_-.].",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Logging": {
+"description": "Logging configuration of the service. The following example shows how to configure logs to be sent to the producer and consumer projects. In the example, the `activity_history` log is sent to both the producer and consumer projects, whereas the `purchase_history` log is only sent to the producer project. monitored_resources: - type: library.googleapis.com/branch labels: - key: /city description: The city where the library branch is located in. - key: /name description: The name of the branch. logs: - name: activity_history labels: - key: /customer_id - name: purchase_history logging: producer_destinations: - monitored_resource: library.googleapis.com/branch logs: - activity_history - purchase_history consumer_destinations: - monitored_resource: library.googleapis.com/branch logs: - activity_history",
+"id": "Logging",
+"properties": {
+"consumerDestinations": {
+"description": "Logging configurations for sending logs to the consumer project. There can be multiple consumer destinations, each one must have a different monitored resource type. A log can be used in at most one consumer destination.",
+"items": {
+"$ref": "LoggingDestination"
+},
+"type": "array"
+},
+"producerDestinations": {
+"description": "Logging configurations for sending logs to the producer project. There can be multiple producer destinations, each one must have a different monitored resource type. A log can be used in at most one producer destination.",
+"items": {
+"$ref": "LoggingDestination"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"LoggingDestination": {
+"description": "Configuration of a specific logging destination (the producer project or the consumer project).",
+"id": "LoggingDestination",
+"properties": {
+"logs": {
+"description": "Names of the logs to be sent to this destination. Each name must be defined in the Service.logs section. If the log name is not a domain scoped name, it will be automatically prefixed with the service name followed by \"/\".",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"monitoredResource": {
+"description": "The monitored resource type. The type must be defined in the Service.monitored_resources section.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"LongRunning": {
+"description": "Describes settings to use when generating API methods that use the long-running operation pattern. All default values below are from those used in the client library generators (e.g. [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).",
+"id": "LongRunning",
+"properties": {
+"initialPollDelay": {
+"description": "Initial delay after which the first poll request will be made. Default value: 5 seconds.",
+"format": "google-duration",
+"type": "string"
+},
+"maxPollDelay": {
+"description": "Maximum time between two subsequent poll requests. Default value: 45 seconds.",
+"format": "google-duration",
+"type": "string"
+},
+"pollDelayMultiplier": {
+"description": "Multiplier to gradually increase delay between subsequent polls until it reaches max_poll_delay. Default value: 1.5.",
+"format": "float",
+"type": "number"
+},
+"totalPollTimeout": {
+"description": "Total polling timeout. Default value: 5 minutes.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Method": {
+"description": "Method represents a method of an API interface.",
+"id": "Method",
+"properties": {
+"name": {
+"description": "The simple name of this method.",
+"type": "string"
+},
+"options": {
+"description": "Any metadata attached to the method.",
+"items": {
+"$ref": "Option"
+},
+"type": "array"
+},
+"requestStreaming": {
+"description": "If true, the request is streamed.",
+"type": "boolean"
+},
+"requestTypeUrl": {
+"description": "A URL of the input message type.",
+"type": "string"
+},
+"responseStreaming": {
+"description": "If true, the response is streamed.",
+"type": "boolean"
+},
+"responseTypeUrl": {
+"description": "The URL of the output message type.",
+"type": "string"
+},
+"syntax": {
+"description": "The source syntax of this method.",
+"enum": [
+"SYNTAX_PROTO2",
+"SYNTAX_PROTO3",
+"SYNTAX_EDITIONS"
+],
+"enumDescriptions": [
+"Syntax `proto2`.",
+"Syntax `proto3`.",
+"Syntax `editions`."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"MethodPolicy": {
+"description": "Defines policies applying to an RPC method.",
+"id": "MethodPolicy",
+"properties": {
+"requestPolicies": {
+"description": "Policies that are applicable to the request message.",
+"items": {
+"$ref": "FieldPolicy"
+},
+"type": "array"
+},
+"selector": {
+"description": "Selects a method to which these policies should be enforced, for example, \"google.pubsub.v1.Subscriber.CreateSubscription\". Refer to selector for syntax details. NOTE: This field must not be set in the proto annotation. It will be automatically filled by the service config compiler .",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MethodSettings": {
+"description": "Describes the generator configuration for a method.",
+"id": "MethodSettings",
+"properties": {
+"autoPopulatedFields": {
+"description": "List of top-level fields of the request message, that should be automatically populated by the client libraries based on their (google.api.field_info).format. Currently supported format: UUID4. Example of a YAML configuration: publishing: method_settings: - selector: google.example.v1.ExampleService.CreateExample auto_populated_fields: - request_id",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"longRunning": {
+"$ref": "LongRunning",
+"description": "Describes settings to use for long-running operations when generating API methods for RPCs. Complements RPCs that use the annotations in google/longrunning/operations.proto. Example of a YAML configuration:: publishing: method_settings: - selector: google.cloud.speech.v2.Speech.BatchRecognize long_running: initial_poll_delay: 60s # 1 minute poll_delay_multiplier: 1.5 max_poll_delay: 360s # 6 minutes total_poll_timeout: 54000s # 90 minutes"
+},
+"selector": {
+"description": "The fully qualified name of the method, for which the options below apply. This is used to find the method to apply the options. Example: publishing: method_settings: - selector: google.storage.control.v2.StorageControl.CreateFolder # method settings for CreateFolder...",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MetricDescriptor": {
+"description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable. ",
+"id": "MetricDescriptor",
+"properties": {
+"description": {
+"description": "A detailed description of the metric, which can be used in documentation.",
+"type": "string"
+},
+"displayName": {
+"description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\". This field is optional but it is recommended to be set for any metrics associated with user-visible concepts, such as Quota.",
+"type": "string"
+},
+"labels": {
+"description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the `appengine.googleapis.com/http/server/response_latencies` metric type has a label for the HTTP response code, `response_code`, so you can look at latencies for successful responses or just for responses that failed.",
+"items": {
+"$ref": "LabelDescriptor"
+},
+"type": "array"
+},
+"launchStage": {
+"description": "Optional. The launch stage of the metric definition.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"UNIMPLEMENTED",
+"PRELAUNCH",
+"EARLY_ACCESS",
+"ALPHA",
+"BETA",
+"GA",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The feature is not yet implemented. Users can not use it.",
+"Prelaunch features are hidden from users and are only visible internally.",
+"Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
+"Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+"Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
+"GA features are open to all developers and are considered stable and fully qualified for production use.",
+"Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+],
+"type": "string"
+},
+"metadata": {
+"$ref": "MetricDescriptorMetadata",
+"description": "Optional. Metadata which can be used to guide usage of the metric."
+},
+"metricKind": {
+"description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of `metric_kind` and `value_type` might not be supported.",
+"enum": [
+"METRIC_KIND_UNSPECIFIED",
+"GAUGE",
+"DELTA",
+"CUMULATIVE"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"An instantaneous measurement of a value.",
+"The change in a value during a time interval.",
+"A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points."
+],
+"type": "string"
+},
+"monitoredResourceTypes": {
+"description": "Read-only. If present, then a time series, which is identified partially by a metric type and a MonitoredResourceDescriptor, that is associated with this metric type can only be associated with one of the monitored resource types listed here.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"name": {
+"description": "The resource name of the metric descriptor.",
+"type": "string"
+},
+"type": {
+"description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined metric types have the DNS name `custom.googleapis.com` or `external.googleapis.com`. Metric types should use a natural hierarchical grouping. For example: \"custom.googleapis.com/invoice/paid/amount\" \"external.googleapis.com/prometheus/up\" \"appengine.googleapis.com/http/server/response_latencies\"",
+"type": "string"
+},
+"unit": {
+"description": "The units in which the metric value is reported. It is only applicable if the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The `unit` defines the representation of the stored metric values. Different systems might scale the values to be more easily displayed (so a value of `0.02kBy` _might_ be displayed as `20By`, and a value of `3523kBy` _might_ be displayed as `3.5MBy`). However, if the `unit` is `kBy`, then the value of the metric is always in thousands of bytes, no matter how it might be displayed. If you want a custom metric to record the exact number of CPU-seconds used by a job, you can create an `INT64 CUMULATIVE` metric whose `unit` is `s{CPU}` (or equivalently `1s{CPU}` or just `s`). If the job uses 12,005 CPU-seconds, then the value is written as `12005`. Alternatively, if you want a custom metric to record data in a more granular way, you can create a `DOUBLE CUMULATIVE` metric whose `unit` is `ks{CPU}`, and then write the value `12.005` (which is `12005/1000`), or use `Kis{CPU}` and write `11.723` (which is `12005/1024`). The supported units are a subset of [The Unified Code for Units of Measure](https://unitsofmeasure.org/ucum.html) standard: **Basic units (UNIT)** * `bit` bit * `By` byte * `s` second * `min` minute * `h` hour * `d` day * `1` dimensionless **Prefixes (PREFIX)** * `k` kilo (10^3) * `M` mega (10^6) * `G` giga (10^9) * `T` tera (10^12) * `P` peta (10^15) * `E` exa (10^18) * `Z` zetta (10^21) * `Y` yotta (10^24) * `m` milli (10^-3) * `u` micro (10^-6) * `n` nano (10^-9) * `p` pico (10^-12) * `f` femto (10^-15) * `a` atto (10^-18) * `z` zepto (10^-21) * `y` yocto (10^-24) * `Ki` kibi (2^10) * `Mi` mebi (2^20) * `Gi` gibi (2^30) * `Ti` tebi (2^40) * `Pi` pebi (2^50) **Grammar** The grammar also includes these connectors: * `/` division or ratio (as an infix operator). For examples, `kBy/{email}` or `MiBy/10ms` (although you should almost never have `/s` in a metric `unit`; rates should always be computed at query time from the underlying cumulative or delta value). * `.` multiplication or composition (as an infix operator). For examples, `GBy.d` or `k{watt}.h`. The grammar for a unit is as follows: Expression = Component { \".\" Component } { \"/\" Component } ; Component = ( [ PREFIX ] UNIT | \"%\" ) [ Annotation ] | Annotation | \"1\" ; Annotation = \"{\" NAME \"}\" ; Notes: * `Annotation` is just a comment if it follows a `UNIT`. If the annotation is used alone, then the unit is equivalent to `1`. For examples, `{request}/s == 1/s`, `By{transmitted}/s == By/s`. * `NAME` is a sequence of non-blank printable ASCII characters not containing `{` or `}`. * `1` represents a unitary [dimensionless unit](https://en.wikipedia.org/wiki/Dimensionless_quantity) of 1, such as in `1/s`. It is typically used when none of the basic units are appropriate. For example, \"new users per day\" can be represented as `1/d` or `{new-users}/d` (and a metric value `5` would mean \"5 new users). Alternatively, \"thousands of page views per day\" would be represented as `1000/d` or `k1/d` or `k{page_views}/d` (and a metric value of `5.3` would mean \"5300 page views per day\"). * `%` represents dimensionless value of 1/100, and annotates values giving a percentage (so the metric values are typically in the range of 0..100, and a metric value `3` means \"3 percent\"). * `10^2.%` indicates a metric contains a ratio, typically in the range 0..1, that will be multiplied by 100 and displayed as a percentage (so a metric value `0.03` means \"3 percent\").",
+"type": "string"
+},
+"valueType": {
+"description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of `metric_kind` and `value_type` might not be supported.",
+"enum": [
+"VALUE_TYPE_UNSPECIFIED",
+"BOOL",
+"INT64",
+"DOUBLE",
+"STRING",
+"DISTRIBUTION",
+"MONEY"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The value is a boolean. This value type can be used only if the metric kind is `GAUGE`.",
+"The value is a signed 64-bit integer.",
+"The value is a double precision floating point number.",
+"The value is a text string. This value type can be used only if the metric kind is `GAUGE`.",
+"The value is a `Distribution`.",
+"The value is money."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"MetricDescriptorMetadata": {
+"description": "Additional annotations that can be used to guide the usage of a metric.",
+"id": "MetricDescriptorMetadata",
+"properties": {
+"ingestDelay": {
+"description": "The delay of data points caused by ingestion. Data points older than this age are guaranteed to be ingested and available to be read, excluding data loss due to errors.",
+"format": "google-duration",
+"type": "string"
+},
+"launchStage": {
+"deprecated": true,
+"description": "Deprecated. Must use the MetricDescriptor.launch_stage instead.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"UNIMPLEMENTED",
+"PRELAUNCH",
+"EARLY_ACCESS",
+"ALPHA",
+"BETA",
+"GA",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The feature is not yet implemented. Users can not use it.",
+"Prelaunch features are hidden from users and are only visible internally.",
+"Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
+"Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+"Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
+"GA features are open to all developers and are considered stable and fully qualified for production use.",
+"Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+],
+"type": "string"
+},
+"samplePeriod": {
+"description": "The sampling period of metric data points. For metrics which are written periodically, consecutive data points are stored at this time interval, excluding data loss due to errors. Metrics with a higher granularity have a smaller sampling period.",
+"format": "google-duration",
+"type": "string"
+},
+"timeSeriesResourceHierarchyLevel": {
+"description": "The scope of the timeseries data of the metric.",
+"items": {
+"enum": [
+"TIME_SERIES_RESOURCE_HIERARCHY_LEVEL_UNSPECIFIED",
+"PROJECT",
+"ORGANIZATION",
+"FOLDER"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"Scopes a metric to a project.",
+"Scopes a metric to an organization.",
+"Scopes a metric to a folder."
+],
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MetricRule": {
+"description": "Bind API methods to metrics. Binding a method to a metric causes that metric's configured quota behaviors to apply to the method call.",
+"id": "MetricRule",
+"properties": {
+"metricCosts": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "Metrics to update when the selected methods are called, and the associated cost applied to each metric. The key of the map is the metric name, and the values are the amount increased for the metric against which the quota limits are defined. The value must not be negative.",
+"type": "object"
+},
+"selector": {
+"description": "Selects the methods to which this rule applies. Refer to selector for syntax details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Mixin": {
+"description": "Declares an API Interface to be included in this interface. The including interface must redeclare all the methods from the included interface, but documentation and options are inherited as follows: - If after comment and whitespace stripping, the documentation string of the redeclared method is empty, it will be inherited from the original method. - Each annotation belonging to the service config (http, visibility) which is not set in the redeclared method will be inherited. - If an http annotation is inherited, the path pattern will be modified as follows. Any version prefix will be replaced by the version of the including interface plus the root path if specified. Example of a simple mixin: package google.acl.v1; service AccessControl { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v1/{resource=**}:getAcl\"; } } package google.storage.v2; service Storage { // rpc GetAcl(GetAclRequest) returns (Acl); // Get a data record. rpc GetData(GetDataRequest) returns (Data) { option (google.api.http).get = \"/v2/{resource=**}\"; } } Example of a mixin configuration: apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl The mixin construct implies that all methods in `AccessControl` are also declared with same name and request/response types in `Storage`. A documentation generator or annotation processor will see the effective `Storage.GetAcl` method after inheriting documentation and annotations as follows: service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v2/{resource=**}:getAcl\"; } ... } Note how the version in the path pattern changed from `v1` to `v2`. If the `root` field in the mixin is specified, it should be a relative path under which inherited HTTP paths are placed. Example: apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl root: acls This implies the following inherited HTTP annotation: service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = \"/v2/acls/{resource=**}:getAcl\"; } ... }",
+"id": "Mixin",
+"properties": {
+"name": {
+"description": "The fully qualified name of the interface which is included.",
+"type": "string"
+},
+"root": {
+"description": "If non-empty specifies a path under which inherited HTTP paths are rooted.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MonitoredResourceDescriptor": {
+"description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of `\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and `\"zone\"` to identify particular VM instances. Different APIs can support different monitored resource types. APIs generally provide a `list` method that returns the monitored resource descriptors used by the API. ",
+"id": "MonitoredResourceDescriptor",
+"properties": {
+"description": {
+"description": "Optional. A detailed description of the monitored resource type that might be used in documentation.",
+"type": "string"
+},
+"displayName": {
+"description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, `\"Google Cloud SQL Database\"`.",
+"type": "string"
+},
+"labels": {
+"description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels `\"database_id\"` and `\"zone\"`.",
+"items": {
+"$ref": "LabelDescriptor"
+},
+"type": "array"
+},
+"launchStage": {
+"description": "Optional. The launch stage of the monitored resource definition.",
+"enum": [
+"LAUNCH_STAGE_UNSPECIFIED",
+"UNIMPLEMENTED",
+"PRELAUNCH",
+"EARLY_ACCESS",
+"ALPHA",
+"BETA",
+"GA",
+"DEPRECATED"
+],
+"enumDescriptions": [
+"Do not use this default value.",
+"The feature is not yet implemented. Users can not use it.",
+"Prelaunch features are hidden from users and are only visible internally.",
+"Early Access features are limited to a closed group of testers. To use these features, you must sign up in advance and sign a Trusted Tester agreement (which includes confidentiality provisions). These features may be unstable, changed in backward-incompatible ways, and are not guaranteed to be released.",
+"Alpha is a limited availability test for releases before they are cleared for widespread use. By Alpha, all significant design issues are resolved and we are in the process of verifying functionality. Alpha customers need to apply for access, agree to applicable terms, and have their projects allowlisted. Alpha releases don't have to be feature complete, no SLAs are provided, and there are no technical support obligations, but they will be far enough along that customers can actually use them in test environments or for limited-use tests -- just like they would in normal production cases.",
+"Beta is the point at which we are ready to open a release for any customer to use. There are no SLA or technical support obligations in a Beta release. Products will be complete from a feature perspective, but may have some open outstanding issues. Beta releases are suitable for limited production use cases.",
+"GA features are open to all developers and are considered stable and fully qualified for production use.",
+"Deprecated features are scheduled to be shut down and removed. For more information, see the \"Deprecation Policy\" section of our [Terms of Service](https://cloud.google.com/terms/) and the [Google Cloud Platform Subject to the Deprecation Policy](https://cloud.google.com/terms/deprecation) documentation."
+],
+"type": "string"
+},
+"name": {
+"description": "Optional. The resource name of the monitored resource descriptor: `\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where {type} is the value of the `type` field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format `\"monitoredResourceDescriptors/{type}\"`.",
+"type": "string"
+},
+"type": {
+"description": "Required. The monitored resource type. For example, the type `\"cloudsql_database\"` represents databases in Google Cloud SQL. For a list of types, see [Monitored resource types](https://cloud.google.com/monitoring/api/resources) and [Logging resource types](https://cloud.google.com/logging/docs/api/v2/resource-list).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Monitoring": {
+"description": "Monitoring configuration of the service. The example below shows how to configure monitored resources and metrics for monitoring. In the example, a monitored resource and two metrics are defined. The `library.googleapis.com/book/returned_count` metric is sent to both producer and consumer projects, whereas the `library.googleapis.com/book/num_overdue` metric is only sent to the consumer project. monitored_resources: - type: library.googleapis.com/Branch display_name: \"Library Branch\" description: \"A branch of a library.\" launch_stage: GA labels: - key: resource_container description: \"The Cloud container (ie. project id) for the Branch.\" - key: location description: \"The location of the library branch.\" - key: branch_id description: \"The id of the branch.\" metrics: - name: library.googleapis.com/book/returned_count display_name: \"Books Returned\" description: \"The count of books that have been returned.\" launch_stage: GA metric_kind: DELTA value_type: INT64 unit: \"1\" labels: - key: customer_id description: \"The id of the customer.\" - name: library.googleapis.com/book/num_overdue display_name: \"Books Overdue\" description: \"The current number of overdue books.\" launch_stage: GA metric_kind: GAUGE value_type: INT64 unit: \"1\" labels: - key: customer_id description: \"The id of the customer.\" monitoring: producer_destinations: - monitored_resource: library.googleapis.com/Branch metrics: - library.googleapis.com/book/returned_count consumer_destinations: - monitored_resource: library.googleapis.com/Branch metrics: - library.googleapis.com/book/returned_count - library.googleapis.com/book/num_overdue",
+"id": "Monitoring",
+"properties": {
+"consumerDestinations": {
+"description": "Monitoring configurations for sending metrics to the consumer project. There can be multiple consumer destinations. A monitored resource type may appear in multiple monitoring destinations if different aggregations are needed for different sets of metrics associated with that monitored resource type. A monitored resource and metric pair may only be used once in the Monitoring configuration.",
+"items": {
+"$ref": "MonitoringDestination"
+},
+"type": "array"
+},
+"producerDestinations": {
+"description": "Monitoring configurations for sending metrics to the producer project. There can be multiple producer destinations. A monitored resource type may appear in multiple monitoring destinations if different aggregations are needed for different sets of metrics associated with that monitored resource type. A monitored resource and metric pair may only be used once in the Monitoring configuration.",
+"items": {
+"$ref": "MonitoringDestination"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"MonitoringDestination": {
+"description": "Configuration of a specific monitoring destination (the producer project or the consumer project).",
+"id": "MonitoringDestination",
+"properties": {
+"metrics": {
+"description": "Types of the metrics to report to this monitoring destination. Each type must be defined in Service.metrics section.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"monitoredResource": {
+"description": "The monitored resource type. The type must be defined in Service.monitored_resources section.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NodeSettings": {
+"description": "Settings for Node client libraries.",
+"id": "NodeSettings",
+"properties": {
+"common": {
+"$ref": "CommonLanguageSettings",
+"description": "Some settings."
+}
+},
+"type": "object"
+},
+"OAuthRequirements": {
+"description": "OAuth scopes are a way to define data and permissions on data. For example, there are scopes defined for \"Read-only access to Google Calendar\" and \"Access to Cloud Platform\". Users can consent to a scope for an application, giving it permission to access that data on their behalf. OAuth scope specifications should be fairly coarse grained; a user will need to see and understand the text description of what your scope means. In most cases: use one or at most two OAuth scopes for an entire family of products. If your product has multiple APIs, you should probably be sharing the OAuth scope across all of those APIs. When you need finer grained OAuth consent screens: talk with your product management about how developers will use them in practice. Please note that even though each of the canonical scopes is enough for a request to be accepted and passed to the backend, a request can still fail due to the backend requiring additional scopes or permissions.",
+"id": "OAuthRequirements",
+"properties": {
+"canonicalScopes": {
+"description": "The list of publicly documented OAuth scopes that are allowed access. An OAuth token containing any of these scopes will be accepted. Example: canonical_scopes: https://www.googleapis.com/auth/calendar, https://www.googleapis.com/auth/calendar.read",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "The operation metadata returned for the batchend services operation.",
+"id": "OperationMetadata",
+"properties": {
+"resourceNames": {
+"description": "The full name of the resources that this operation is directly associated with.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Option": {
+"description": "A protocol buffer option, which can be attached to a message, field, enumeration, etc.",
+"id": "Option",
+"properties": {
+"name": {
+"description": "The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, `\"map_entry\"`. For custom options, it should be the fully-qualified name. For example, `\"google.api.http\"`.",
+"type": "string"
+},
+"value": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The option's value packed in an Any message. If the value is a primitive, the corresponding wrapper type defined in google/protobuf/wrappers.proto should be used. If the value is an enum, it should be stored as an int32 value using the google.protobuf.Int32Value type.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"Page": {
+"description": "Represents a documentation page. A page can contain subpages to represent nested documentation set structure.",
+"id": "Page",
+"properties": {
+"content": {
+"description": "The Markdown content of the page. You can use (== include {path} ==) to include content from a Markdown file. The content can be used to produce the documentation page such as HTML format page.",
+"type": "string"
+},
+"name": {
+"description": "The name of the page. It will be used as an identity of the page to generate URI of the page, text of the link to this page in navigation, etc. The full page name (start from the root page name to this page concatenated with `.`) can be used as reference to the page in your documentation. For example: pages: - name: Tutorial content: (== include tutorial.md ==) subpages: - name: Java content: (== include tutorial_java.md ==) You can reference `Java` page using Markdown reference link syntax: `Java`.",
+"type": "string"
+},
+"subpages": {
+"description": "Subpages of this page. The order of subpages specified here will be honored in the generated docset.",
+"items": {
+"$ref": "Page"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"PhpSettings": {
+"description": "Settings for Php client libraries.",
+"id": "PhpSettings",
+"properties": {
+"common": {
+"$ref": "CommonLanguageSettings",
+"description": "Some settings."
+}
+},
+"type": "object"
+},
+"Publishing": {
+"description": "This message configures the settings for publishing [Google Cloud Client libraries](https://cloud.google.com/apis/docs/cloud-client-libraries) generated from the service config.",
+"id": "Publishing",
+"properties": {
+"apiShortName": {
+"description": "Used as a tracking tag when collecting data about the APIs developer relations artifacts like docs, packages delivered to package managers, etc. Example: \"speech\".",
+"type": "string"
+},
+"codeownerGithubTeams": {
+"description": "GitHub teams to be added to CODEOWNERS in the directory in GitHub containing source code for the client libraries for this API.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"docTagPrefix": {
+"description": "A prefix used in sample code when demarking regions to be included in documentation.",
+"type": "string"
+},
+"documentationUri": {
+"description": "Link to product home page. Example: https://cloud.google.com/asset-inventory/docs/overview",
+"type": "string"
+},
+"githubLabel": {
+"description": "GitHub label to apply to issues and pull requests opened for this API.",
+"type": "string"
+},
+"librarySettings": {
+"description": "Client library settings. If the same version string appears multiple times in this list, then the last one wins. Settings from earlier settings with the same version string are discarded.",
+"items": {
+"$ref": "ClientLibrarySettings"
+},
+"type": "array"
+},
+"methodSettings": {
+"description": "A list of API method settings, e.g. the behavior for methods that use the long-running operation pattern.",
+"items": {
+"$ref": "MethodSettings"
+},
+"type": "array"
+},
+"newIssueUri": {
+"description": "Link to a *public* URI where users can report issues. Example: https://issuetracker.google.com/issues/new?component=190865&template=1161103",
+"type": "string"
+},
+"organization": {
+"description": "For whom the client library is being published.",
+"enum": [
+"CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED",
+"CLOUD",
+"ADS",
+"PHOTOS",
+"STREET_VIEW",
+"SHOPPING",
+"GEO",
+"GENERATIVE_AI"
+],
+"enumDescriptions": [
+"Not useful.",
+"Google Cloud Platform Org.",
+"Ads (Advertising) Org.",
+"Photos Org.",
+"Street View Org.",
+"Shopping Org.",
+"Geo Org.",
+"Generative AI - https://developers.generativeai.google"
+],
+"type": "string"
+},
+"protoReferenceDocumentationUri": {
+"description": "Optional link to proto reference documentation. Example: https://cloud.google.com/pubsub/lite/docs/reference/rpc",
+"type": "string"
+},
+"restReferenceDocumentationUri": {
+"description": "Optional link to REST reference documentation. Example: https://cloud.google.com/pubsub/lite/docs/reference/rest",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PythonSettings": {
+"description": "Settings for Python client libraries.",
+"id": "PythonSettings",
+"properties": {
+"common": {
+"$ref": "CommonLanguageSettings",
+"description": "Some settings."
+},
+"experimentalFeatures": {
+"$ref": "ExperimentalFeatures",
+"description": "Experimental features to be included during client library generation."
+}
+},
+"type": "object"
+},
+"Quota": {
+"description": "Quota configuration helps to achieve fairness and budgeting in service usage. The metric based quota configuration works this way: - The service configuration defines a set of metrics. - For API calls, the quota.metric_rules maps methods to metrics with corresponding costs. - The quota.limits defines limits on the metrics, which will be used for quota checks at runtime. An example quota configuration in yaml format: quota: limits: - name: apiWriteQpsPerProject metric: library.googleapis.com/write_calls unit: \"1/min/{project}\" # rate limit for consumer projects values: STANDARD: 10000 (The metric rules bind all methods to the read_calls metric, except for the UpdateBook and DeleteBook methods. These two methods are mapped to the write_calls metric, with the UpdateBook method consuming at twice rate as the DeleteBook method.) metric_rules: - selector: \"*\" metric_costs: library.googleapis.com/read_calls: 1 - selector: google.example.library.v1.LibraryService.UpdateBook metric_costs: library.googleapis.com/write_calls: 2 - selector: google.example.library.v1.LibraryService.DeleteBook metric_costs: library.googleapis.com/write_calls: 1 Corresponding Metric definition: metrics: - name: library.googleapis.com/read_calls display_name: Read requests metric_kind: DELTA value_type: INT64 - name: library.googleapis.com/write_calls display_name: Write requests metric_kind: DELTA value_type: INT64 ",
+"id": "Quota",
+"properties": {
+"limits": {
+"description": "List of QuotaLimit definitions for the service.",
+"items": {
+"$ref": "QuotaLimit"
+},
+"type": "array"
+},
+"metricRules": {
+"description": "List of MetricRule definitions, each one mapping a selected method to one or more metrics.",
+"items": {
+"$ref": "MetricRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"QuotaLimit": {
+"description": "`QuotaLimit` defines a specific limit that applies over a specified duration for a limit type. There can be at most one limit for a duration and limit type combination defined within a `QuotaGroup`.",
+"id": "QuotaLimit",
+"properties": {
+"defaultLimit": {
+"description": "Default number of tokens that can be consumed during the specified duration. This is the number of tokens assigned when a client application developer activates the service for his/her project. Specifying a value of 0 will block all requests. This can be used if you are provisioning quota to selected consumers and blocking others. Similarly, a value of -1 will indicate an unlimited quota. No other negative values are allowed. Used by group-based quotas only.",
+"format": "int64",
+"type": "string"
+},
+"description": {
+"description": "Optional. User-visible, extended description for this quota limit. Should be used only when more context is needed to understand this limit than provided by the limit's display name (see: `display_name`).",
+"type": "string"
+},
+"displayName": {
+"description": "User-visible display name for this limit. Optional. If not set, the UI will provide a default display name based on the quota configuration. This field can be used to override the default display name generated from the configuration.",
+"type": "string"
+},
+"duration": {
+"description": "Duration of this limit in textual notation. Must be \"100s\" or \"1d\". Used by group-based quotas only.",
+"type": "string"
+},
+"freeTier": {
+"description": "Free tier value displayed in the Developers Console for this limit. The free tier is the number of tokens that will be subtracted from the billed amount when billing is enabled. This field can only be set on a limit with duration \"1d\", in a billable group; it is invalid on any other limit. If this field is not set, it defaults to 0, indicating that there is no free tier for this service. Used by group-based quotas only.",
+"format": "int64",
+"type": "string"
+},
+"maxLimit": {
+"description": "Maximum number of tokens that can be consumed during the specified duration. Client application developers can override the default limit up to this maximum. If specified, this value cannot be set to a value less than the default limit. If not specified, it is set to the default limit. To allow clients to apply overrides with no upper bound, set this to -1, indicating unlimited maximum quota. Used by group-based quotas only.",
+"format": "int64",
+"type": "string"
+},
+"metric": {
+"description": "The name of the metric this quota limit applies to. The quota limits with the same metric will be checked together during runtime. The metric must be defined within the service config.",
+"type": "string"
+},
+"name": {
+"description": "Name of the quota limit. The name must be provided, and it must be unique within the service. The name can only include alphanumeric characters as well as '-'. The maximum length of the limit name is 64 characters.",
+"type": "string"
+},
+"unit": {
+"description": "Specify the unit of the quota limit. It uses the same syntax as MetricDescriptor.unit. The supported unit kinds are determined by the quota backend system. Here are some examples: * \"1/min/{project}\" for quota per minute per project. Note: the order of unit components is insignificant. The \"1\" at the beginning is required to follow the metric unit syntax.",
+"type": "string"
+},
+"values": {
+"additionalProperties": {
+"format": "int64",
+"type": "string"
+},
+"description": "Tiered limit values. You must specify this as a key:value pair, with an integer value that is the maximum number of requests allowed for the specified unit. Currently only STANDARD is supported.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"QuotaOverride": {
+"description": "A quota override",
+"id": "QuotaOverride",
+"properties": {
+"adminOverrideAncestor": {
+"description": "The resource name of the ancestor that requested the override. For example: `organizations/12345` or `folders/67890`. Used by admin overrides only.",
+"type": "string"
+},
+"dimensions": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "If this map is nonempty, then this override applies only to specific values for dimensions defined in the limit unit. For example, an override on a limit with the unit `1/{project}/{region}` could contain an entry with the key `region` and the value `us-east-1`; the override is only applied to quota consumed in that region. This map has the following restrictions: * Keys that are not defined in the limit's unit are not valid keys. Any string appearing in `{brackets}` in the unit (besides `{project}` or `{user}`) is a defined key. * `project` is not a valid key; the project is already specified in the parent resource name. * `user` is not a valid key; the API does not support quota overrides that apply only to a specific user. * If `region` appears as a key, its value must be a valid Cloud region. * If `zone` appears as a key, its value must be a valid Cloud zone. * If any valid key other than `region` or `zone` appears in the map, then all valid keys other than `region` or `zone` must also appear in the map.",
+"type": "object"
+},
+"metric": {
+"description": "The name of the metric to which this override applies. An example name would be: `compute.googleapis.com/cpus`",
+"type": "string"
+},
+"name": {
+"description": "The resource name of the override. This name is generated by the server when the override is created. Example names would be: `projects/123/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/adminOverrides/4a3f2c1d` `projects/123/services/compute.googleapis.com/consumerQuotaMetrics/compute.googleapis.com%2Fcpus/limits/%2Fproject%2Fregion/consumerOverrides/4a3f2c1d` The resource name is intended to be opaque and should not be parsed for its component strings, since its representation could change in the future.",
+"type": "string"
+},
+"overrideValue": {
+"description": "The overriding quota limit value. Can be any nonnegative integer, or -1 (unlimited quota).",
+"format": "int64",
+"type": "string"
+},
+"unit": {
+"description": "The limit unit of the limit to which this override applies. An example unit would be: `1/{project}/{region}` Note that `{project}` and `{region}` are not placeholders in this example; the literal characters `{` and `}` occur in the string.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RemoveEnableRulesMetadata": {
+"description": "Metadata for the `RemoveEnableRules` method.",
+"id": "RemoveEnableRulesMetadata",
+"properties": {},
+"type": "object"
+},
+"RemoveEnableRulesResponse": {
+"description": "The response message of `RemoveEnableRules` method.",
+"id": "RemoveEnableRulesResponse",
+"properties": {
+"parent": {
+"description": "The parent consumer policy. It can be `projects/12345/consumerPolicies/default`, or `folders/12345/consumerPolicies/default`, or `organizations/12345/consumerPolicies/default`.",
+"type": "string"
+},
+"removedValues": {
+"deprecated": true,
+"description": "The values removed from the parent consumer policy.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"RubySettings": {
+"description": "Settings for Ruby client libraries.",
+"id": "RubySettings",
+"properties": {
+"common": {
+"$ref": "CommonLanguageSettings",
+"description": "Some settings."
+}
+},
+"type": "object"
+},
+"SelectiveGapicGeneration": {
+"description": "This message is used to configure the generation of a subset of the RPCs in a service for client libraries.",
+"id": "SelectiveGapicGeneration",
+"properties": {
+"methods": {
+"description": "An allowlist of the fully qualified names of RPCs that should be included on public client surfaces.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ServiceIdentity": {
+"description": "Service identity for a service. This is the identity that service producer should use to access consumer resources.",
+"id": "ServiceIdentity",
+"properties": {
+"email": {
+"description": "The email address of the service account that a service producer would use to access consumer resources.",
+"type": "string"
+},
+"uniqueId": {
+"description": "The unique and stable id of the service account. https://cloud.google.com/iam/reference/rest/v1/projects.serviceAccounts#ServiceAccount",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SourceContext": {
+"description": "`SourceContext` represents information about the source of a protobuf element, like the file in which it is defined.",
+"id": "SourceContext",
+"properties": {
+"fileName": {
+"description": "The path-qualified name of the .proto file that contained the associated protobuf element. For example: `\"google/protobuf/source_context.proto\"`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SourceInfo": {
+"description": "Source information used to create a Service Config",
+"id": "SourceInfo",
+"properties": {
+"sourceFiles": {
+"description": "All files used during config generation.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SystemParameter": {
+"description": "Define a parameter's name and location. The parameter may be passed as either an HTTP header or a URL query parameter, and if both are passed the behavior is implementation-dependent.",
+"id": "SystemParameter",
+"properties": {
+"httpHeader": {
+"description": "Define the HTTP header name to use for the parameter. It is case insensitive.",
+"type": "string"
+},
+"name": {
+"description": "Define the name of the parameter, such as \"api_key\" . It is case sensitive.",
+"type": "string"
+},
+"urlQueryParameter": {
+"description": "Define the URL query parameter name to use for the parameter. It is case sensitive.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SystemParameterRule": {
+"description": "Define a system parameter rule mapping system parameter definitions to methods.",
+"id": "SystemParameterRule",
+"properties": {
+"parameters": {
+"description": "Define parameters. Multiple names may be defined for a parameter. For a given method call, only one of them should be used. If multiple names are used the behavior is implementation-dependent. If none of the specified names are present the behavior is parameter-dependent.",
+"items": {
+"$ref": "SystemParameter"
+},
+"type": "array"
+},
+"selector": {
+"description": "Selects the methods to which this rule applies. Use '*' to indicate all methods in all APIs. Refer to selector for syntax details.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SystemParameters": {
+"description": "### System parameter configuration A system parameter is a special kind of parameter defined by the API system, not by an individual API. It is typically mapped to an HTTP header and/or a URL query parameter. This configuration specifies which methods change the names of the system parameters.",
+"id": "SystemParameters",
+"properties": {
+"rules": {
+"description": "Define system parameters. The parameters defined here will override the default parameters implemented by the system. If this field is missing from the service config, default system parameters will be used. Default system parameters and names is implementation-dependent. Example: define api key for all methods system_parameters rules: - selector: \"*\" parameters: - name: api_key url_query_parameter: api_key Example: define 2 api key names for a specific method. system_parameters rules: - selector: \"/ListShelves\" parameters: - name: api_key http_header: Api-Key1 - name: api_key http_header: Api-Key2 **NOTE:** All service configuration rules follow \"last one wins\" order.",
+"items": {
+"$ref": "SystemParameterRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Type": {
+"description": "A protocol buffer message type.",
+"id": "Type",
+"properties": {
+"edition": {
+"description": "The source edition string, only valid when syntax is SYNTAX_EDITIONS.",
+"type": "string"
+},
+"fields": {
+"description": "The list of fields.",
+"items": {
+"$ref": "Field"
+},
+"type": "array"
+},
+"name": {
+"description": "The fully qualified message name.",
+"type": "string"
+},
+"oneofs": {
+"description": "The list of types appearing in `oneof` definitions in this type.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"options": {
+"description": "The protocol buffer options.",
+"items": {
+"$ref": "Option"
+},
+"type": "array"
+},
+"sourceContext": {
+"$ref": "SourceContext",
+"description": "The source context."
+},
+"syntax": {
+"description": "The source syntax.",
+"enum": [
+"SYNTAX_PROTO2",
+"SYNTAX_PROTO3",
+"SYNTAX_EDITIONS"
+],
+"enumDescriptions": [
+"Syntax `proto2`.",
+"Syntax `proto3`.",
+"Syntax `editions`."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpdateAdminQuotaPolicyMetadata": {
+"description": "Metadata message that provides information such as progress, partial failures, and similar information on each GetOperation call of LRO returned by UpdateAdminQuotaPolicy.",
+"id": "UpdateAdminQuotaPolicyMetadata",
+"properties": {},
+"type": "object"
+},
+"UpdateConsumerPolicyMetadata": {
+"description": "Metadata for the `UpdateConsumerPolicy` method.",
+"id": "UpdateConsumerPolicyMetadata",
+"properties": {},
+"type": "object"
+},
+"Usage": {
+"description": "Configuration controlling usage of a service.",
+"id": "Usage",
+"properties": {
+"producerNotificationChannel": {
+"description": "The full resource name of a channel used for sending notifications to the service producer. Google Service Management currently only supports [Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification channel. To use Google Cloud Pub/Sub as the channel, this must be the name of a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format documented in https://cloud.google.com/pubsub/docs/overview.",
+"type": "string"
+},
+"requirements": {
+"description": "Requirements that must be satisfied before a consumer project can use the service. Each requirement is of the form /; for example 'serviceusage.googleapis.com/billing-enabled'. For Google APIs, a Terms of Service requirement must be included here. Google Cloud APIs must include \"serviceusage.googleapis.com/tos/cloud\". Other Google APIs should include \"serviceusage.googleapis.com/tos/universal\". Additional ToS can be included based on the business needs.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"rules": {
+"description": "A list of usage rules that apply to individual API methods. **NOTE:** All service configuration rules follow \"last one wins\" order.",
+"items": {
+"$ref": "UsageRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"UsageRule": {
+"description": "Usage configuration rules for the service. NOTE: Under development. Use this rule to configure unregistered calls for the service. Unregistered calls are calls that do not contain consumer project identity. (Example: calls that do not contain an API key). By default, API methods do not allow unregistered calls, and each method call must be identified by a consumer project identity. Use this rule to allow/disallow unregistered calls. Example of an API that wants to allow unregistered calls for entire service. usage: rules: - selector: \"*\" allow_unregistered_calls: true Example of a method that wants to allow unregistered calls. usage: rules: - selector: \"google.example.library.v1.LibraryService.CreateBook\" allow_unregistered_calls: true",
+"id": "UsageRule",
+"properties": {
+"allowUnregisteredCalls": {
+"description": "If true, the selected method allows unregistered calls, e.g. calls that don't identify any user or application.",
+"type": "boolean"
+},
+"selector": {
+"description": "Selects the methods to which this rule applies. Use '*' to indicate all methods in all APIs. Refer to selector for syntax details.",
+"type": "string"
+},
+"skipServiceControl": {
+"description": "If true, the selected method should skip service control and the control plane features, such as quota and billing, will not be available. This flag is used by Google Cloud Endpoints to bypass checks for internal methods, such as service health check methods.",
+"type": "boolean"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Service Usage API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/sts.v1beta.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/sts.v1beta.json
new file mode 100644
index 0000000000000000000000000000000000000000..7feaa9f60a137ac9e2e893ecb3c798f2d257d625
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/sts.v1beta.json
@@ -0,0 +1,340 @@
+{
+"basePath": "",
+"baseUrl": "https://sts.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Security Token",
+"description": "The Security Token Service exchanges Google or third-party credentials for a short-lived access token to Google Cloud resources.",
+"discoveryVersion": "v1",
+"documentationLink": "http://cloud.google.com/iam/docs/workload-identity-federation",
+"endpoints": [
+{
+"description": "Regional Endpoint",
+"endpointUrl": "https://sts.us-east7.rep.googleapis.com/",
+"location": "us-east7"
+}
+],
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "sts:v1beta",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://sts.mtls.googleapis.com/",
+"name": "sts",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"v1beta": {
+"methods": {
+"token": {
+"description": "Exchanges a credential for a Google OAuth 2.0 access token. The token asserts an external identity within a workload identity pool, or it applies a Credential Access Boundary to a Google access token. When you call this method, do not send the `Authorization` HTTP header in the request. This method does not require the `Authorization` header, and using the header can cause the request to fail.",
+"flatPath": "v1beta/token",
+"httpMethod": "POST",
+"id": "sts.token",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1beta/token",
+"request": {
+"$ref": "GoogleIdentityStsV1betaExchangeTokenRequest"
+},
+"response": {
+"$ref": "GoogleIdentityStsV1betaExchangeTokenResponse"
+}
+}
+}
+}
+},
+"revision": "20241106",
+"rootUrl": "https://sts.googleapis.com/",
+"schemas": {
+"GoogleIamV1Binding": {
+"description": "Associates `members`, or principals, with a `role`.",
+"id": "GoogleIamV1Binding",
+"properties": {
+"condition": {
+"$ref": "GoogleTypeExpr",
+"description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)."
+},
+"members": {
+"description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. * `principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workforce identity pool. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/group/{group_id}`: All workforce identities in a group. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All workforce identities with a specific attribute value. * `principalSet://iam.googleapis.com/locations/global/workforcePools/{pool_id}/*`: All identities in a workforce identity pool. * `principal://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/subject/{subject_attribute_value}`: A single identity in a workload identity pool. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/group/{group_id}`: A workload identity pool group. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/attribute.{attribute_name}/{attribute_value}`: All identities in a workload identity pool with a certain attribute. * `principalSet://iam.googleapis.com/projects/{project_number}/locations/global/workloadIdentityPools/{pool_id}/*`: All identities in a workload identity pool. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `deleted:principal://iam.googleapis.com/locations/global/workforcePools/{pool_id}/subject/{subject_attribute_value}`: Deleted single identity in a workforce identity pool. For example, `deleted:principal://iam.googleapis.com/locations/global/workforcePools/my-pool-id/subject/my-subject-attribute-value`.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"role": {
+"description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`. For an overview of the IAM roles and permissions, see the [IAM documentation](https://cloud.google.com/iam/docs/roles-overview). For a list of the available pre-defined roles, see [here](https://cloud.google.com/iam/docs/understanding-roles).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityStsV1AccessBoundary": {
+"description": "An access boundary defines the upper bound of what a principal may access. It includes a list of access boundary rules that each defines the resource that may be allowed as well as permissions that may be used on those resources.",
+"id": "GoogleIdentityStsV1AccessBoundary",
+"properties": {
+"accessBoundaryRules": {
+"description": "A list of access boundary rules which defines the upper bound of the permission a principal may carry. If multiple rules are specified, the effective access boundary is the union of all the access boundary rules attached. One access boundary can contain at most 10 rules.",
+"items": {
+"$ref": "GoogleIdentityStsV1AccessBoundaryRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIdentityStsV1AccessBoundaryRule": {
+"description": "An access boundary rule defines an upper bound of IAM permissions on a single resource.",
+"id": "GoogleIdentityStsV1AccessBoundaryRule",
+"properties": {
+"availabilityCondition": {
+"$ref": "GoogleTypeExpr",
+"description": "The availability condition further constrains the access allowed by the access boundary rule. If the condition evaluates to `true`, then this access boundary rule will provide access to the specified resource, assuming the principal has the required permissions for the resource. If the condition does not evaluate to `true`, then access to the specified resource will not be available. Note that all access boundary rules in an access boundary are evaluated together as a union. As such, another access boundary rule may allow access to the resource, even if this access boundary rule does not allow access. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). The maximum length of the `expression` field is 2048 characters."
+},
+"availablePermissions": {
+"description": "A list of permissions that may be allowed for use on the specified resource. The only supported values in the list are IAM roles, following the format of google.iam.v1.Binding.role. Example value: `inRole:roles/logging.viewer` for predefined roles and `inRole:organizations/{ORGANIZATION_ID}/roles/logging.viewer` for custom roles.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"availableResource": {
+"description": "The full resource name of a Google Cloud resource entity. The format definition is at https://cloud.google.com/apis/design/resource_names. Example value: `//cloudresourcemanager.googleapis.com/projects/my-project`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityStsV1Options": {
+"description": "An `Options` object configures features that the Security Token Service supports, but that are not supported by standard OAuth 2.0 token exchange endpoints, as defined in https://tools.ietf.org/html/rfc8693.",
+"id": "GoogleIdentityStsV1Options",
+"properties": {
+"accessBoundary": {
+"$ref": "GoogleIdentityStsV1AccessBoundary",
+"description": "An access boundary that defines the upper bound of permissions the credential may have. The value should be a JSON object of AccessBoundary. The access boundary can include up to 10 rules. The size of the parameter value should not exceed 2048 characters."
+},
+"userProject": {
+"description": "A Google project used for quota and billing purposes when the credential is used to access Google APIs. The provided project overrides the project bound to the credential. The value must be a project number or a project ID. Example: `my-sample-project-191923`. The maximum length is 32 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityStsV1betaAccessBoundary": {
+"description": "An access boundary defines the upper bound of what a principal may access. It includes a list of access boundary rules that each defines the resource that may be allowed as well as permissions that may be used on those resources.",
+"id": "GoogleIdentityStsV1betaAccessBoundary",
+"properties": {
+"accessBoundaryRules": {
+"description": "A list of access boundary rules which defines the upper bound of the permission a principal may carry. If multiple rules are specified, the effective access boundary is the union of all the access boundary rules attached. One access boundary can contain at most 10 rules.",
+"items": {
+"$ref": "GoogleIdentityStsV1betaAccessBoundaryRule"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleIdentityStsV1betaAccessBoundaryRule": {
+"description": "An access boundary rule defines an upper bound of IAM permissions on a single resource.",
+"id": "GoogleIdentityStsV1betaAccessBoundaryRule",
+"properties": {
+"availabilityCondition": {
+"$ref": "GoogleTypeExpr",
+"description": "The availability condition further constrains the access allowed by the access boundary rule. If the condition evaluates to `true`, then this access boundary rule will provide access to the specified resource, assuming the principal has the required permissions for the resource. If the condition does not evaluate to `true`, then access to the specified resource will not be available. Note that all access boundary rules in an access boundary are evaluated together as a union. As such, another access boundary rule may allow access to the resource, even if this access boundary rule does not allow access. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies). The maximum length of the `expression` field is 2048 characters."
+},
+"availablePermissions": {
+"description": "A list of permissions that may be allowed for use on the specified resource. The only supported values in the list are IAM roles, following the format of google.iam.v1.Binding.role. Example value: `inRole:roles/logging.viewer` for predefined roles and `inRole:organizations/{ORGANIZATION_ID}/roles/logging.viewer` for custom roles.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"availableResource": {
+"description": "The full resource name of a Google Cloud resource entity. The format definition is at https://cloud.google.com/apis/design/resource_names. Example value: `//cloudresourcemanager.googleapis.com/projects/my-project`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityStsV1betaExchangeTokenRequest": {
+"description": "Request message for ExchangeToken.",
+"id": "GoogleIdentityStsV1betaExchangeTokenRequest",
+"properties": {
+"audience": {
+"description": "The full resource name of the identity provider. For example, `//iam.googleapis.com/projects//locations/global/workloadIdentityPools//providers/`. Required when exchanging an external credential for a Google access token.",
+"type": "string"
+},
+"grantType": {
+"description": "Required. The grant type. Must be `urn:ietf:params:oauth:grant-type:token-exchange`, which indicates a token exchange.",
+"type": "string"
+},
+"options": {
+"description": "A set of features that Security Token Service supports, in addition to the standard OAuth 2.0 token exchange, formatted as a serialized JSON object of Options. The size of the parameter value must not exceed 4096 characters.",
+"type": "string"
+},
+"requestedTokenType": {
+"description": "Required. The type of security token. Must be `urn:ietf:params:oauth:token-type:access_token`, which indicates an OAuth 2.0 access token.",
+"type": "string"
+},
+"scope": {
+"description": "The OAuth 2.0 scopes to include on the resulting access token, formatted as a list of space-delimited, case-sensitive strings. Required when exchanging an external credential for a Google access token.",
+"type": "string"
+},
+"subjectToken": {
+"description": "Required. The input token. This token is either an external credential issued by a workload identity pool provider, or a short-lived access token issued by Google. If the token is an OIDC JWT, it must use the JWT format defined in [RFC 7523](https://tools.ietf.org/html/rfc7523), and the `subject_token_type` must be either `urn:ietf:params:oauth:token-type:jwt` or `urn:ietf:params:oauth:token-type:id_token`. The following headers are required: - `kid`: The identifier of the signing key securing the JWT. - `alg`: The cryptographic algorithm securing the JWT. Must be `RS256` or `ES256`. The following payload fields are required. For more information, see [RFC 7523, Section 3](https://tools.ietf.org/html/rfc7523#section-3): - `iss`: The issuer of the token. The issuer must provide a discovery document at the URL `/.well-known/openid-configuration`, where `` is the value of this field. The document must be formatted according to section 4.2 of the [OIDC 1.0 Discovery specification](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationResponse). - `iat`: The issue time, in seconds, since the Unix epoch. Must be in the past. - `exp`: The expiration time, in seconds, since the Unix epoch. Must be less than 48 hours after `iat`. Shorter expiration times are more secure. If possible, we recommend setting an expiration time less than 6 hours. - `sub`: The identity asserted in the JWT. - `aud`: For workload identity pools, this must be a value specified in the allowed audiences for the workload identity pool provider, or one of the audiences allowed by default if no audiences were specified. See https://cloud.google.com/iam/docs/reference/rest/v1/projects.locations.workloadIdentityPools.providers#oidc Example header: ``` { \"alg\": \"RS256\", \"kid\": \"us-east-11\" } ``` Example payload: ``` { \"iss\": \"https://accounts.google.com\", \"iat\": 1517963104, \"exp\": 1517966704, \"aud\": \"//iam.googleapis.com/projects/1234567890123/locations/global/workloadIdentityPools/my-pool/providers/my-provider\", \"sub\": \"113475438248934895348\", \"my_claims\": { \"additional_claim\": \"value\" } } ``` If `subject_token` is for AWS, it must be a serialized `GetCallerIdentity` token. This token contains the same information as a request to the AWS [`GetCallerIdentity()`](https://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity) method, as well as the AWS [signature](https://docs.aws.amazon.com/general/latest/gr/signing_aws_api_requests.html) for the request information. Use Signature Version 4. Format the request as URL-encoded JSON, and set the `subject_token_type` parameter to `urn:ietf:params:aws:token-type:aws4_request`. The following parameters are required: - `url`: The URL of the AWS STS endpoint for `GetCallerIdentity()`, such as `https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15`. Regional endpoints are also supported. - `method`: The HTTP request method: `POST`. - `headers`: The HTTP request headers, which must include: - `Authorization`: The request signature. - `x-amz-date`: The time you will send the request, formatted as an [ISO8601 Basic](https://docs.aws.amazon.com/general/latest/gr/sigv4_elements.html#sigv4_elements_date) string. This value is typically set to the current time and is used to help prevent replay attacks. - `host`: The hostname of the `url` field; for example, `sts.amazonaws.com`. - `x-goog-cloud-target-resource`: The full, canonical resource name of the workload identity pool provider, with or without an `https:` prefix. To help ensure data integrity, we recommend including this header in the `SignedHeaders` field of the signed request. For example: //iam.googleapis.com/projects//locations/global/workloadIdentityPools//providers/ https://iam.googleapis.com/projects//locations/global/workloadIdentityPools//providers/ If you are using temporary security credentials provided by AWS, you must also include the header `x-amz-security-token`, with the value set to the session token. The following example shows a `GetCallerIdentity` token: ``` { \"headers\": [ {\"key\": \"x-amz-date\", \"value\": \"20200815T015049Z\"}, {\"key\": \"Authorization\", \"value\": \"AWS4-HMAC-SHA256+Credential=$credential,+SignedHeaders=host;x-amz-date;x-goog-cloud-target-resource,+Signature=$signature\"}, {\"key\": \"x-goog-cloud-target-resource\", \"value\": \"//iam.googleapis.com/projects//locations/global/workloadIdentityPools//providers/\"}, {\"key\": \"host\", \"value\": \"sts.amazonaws.com\"} . ], \"method\": \"POST\", \"url\": \"https://sts.amazonaws.com?Action=GetCallerIdentity&Version=2011-06-15\" } ``` You can also use a Google-issued OAuth 2.0 access token with this field to obtain an access token with new security attributes applied, such as a Credential Access Boundary. In this case, set `subject_token_type` to `urn:ietf:params:oauth:token-type:access_token`. If an access token already contains security attributes, you cannot apply additional security attributes.",
+"type": "string"
+},
+"subjectTokenType": {
+"description": "Required. An identifier that indicates the type of the security token in the `subject_token` parameter. Supported values are `urn:ietf:params:oauth:token-type:jwt`, `urn:ietf:params:oauth:token-type:id_token`, `urn:ietf:params:aws:token-type:aws4_request`, and `urn:ietf:params:oauth:token-type:access_token`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityStsV1betaExchangeTokenResponse": {
+"description": "Response message for ExchangeToken.",
+"id": "GoogleIdentityStsV1betaExchangeTokenResponse",
+"properties": {
+"access_token": {
+"description": "An OAuth 2.0 security token, issued by Google, in response to the token exchange request. Tokens can vary in size, depending in part on the size of mapped claims, up to a maximum of 12288 bytes (12 KB). Google reserves the right to change the token size and the maximum length at any time.",
+"type": "string"
+},
+"expires_in": {
+"description": "The amount of time, in seconds, between the time when the access token was issued and the time when the access token will expire. This field is absent when the `subject_token` in the request is a Google-issued, short-lived access token. In this case, the access token has the same expiration time as the `subject_token`.",
+"format": "int32",
+"type": "integer"
+},
+"issued_token_type": {
+"description": "The token type. Always matches the value of `requested_token_type` from the request.",
+"type": "string"
+},
+"token_type": {
+"description": "The type of access token. Always has the value `Bearer`.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleIdentityStsV1betaOptions": {
+"description": "An `Options` object configures features that the Security Token Service supports, but that are not supported by standard OAuth 2.0 token exchange endpoints, as defined in https://tools.ietf.org/html/rfc8693.",
+"id": "GoogleIdentityStsV1betaOptions",
+"properties": {
+"accessBoundary": {
+"$ref": "GoogleIdentityStsV1betaAccessBoundary",
+"description": "An access boundary that defines the upper bound of permissions the credential may have. The value should be a JSON object of AccessBoundary. The access boundary can include up to 10 rules. The size of the parameter value should not exceed 2048 characters."
+},
+"userProject": {
+"description": "A Google project used for quota and billing purposes when the credential is used to access Google APIs. The provided project overrides the project bound to the credential. The value must be a project number or a project ID. Example: `my-sample-project-191923`. The maximum length is 32 characters.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleTypeExpr": {
+"description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() < 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' && document.type != 'internal'\" Example (Data Manipulation): title: \"Notification string\" description: \"Create a notification string with a timestamp.\" expression: \"'New message received at ' + string(document.create_time)\" The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information.",
+"id": "GoogleTypeExpr",
+"properties": {
+"description": {
+"description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+"type": "string"
+},
+"expression": {
+"description": "Textual representation of an expression in Common Expression Language syntax.",
+"type": "string"
+},
+"location": {
+"description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+"type": "string"
+},
+"title": {
+"description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Security Token Service API",
+"version": "v1beta",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tasks.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tasks.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..2b69a9146813146adc1dea7c45d9bdb322eac5cd
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tasks.v1.json
@@ -0,0 +1,836 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/tasks": {
+"description": "Create, edit, organize, and delete all your tasks"
+},
+"https://www.googleapis.com/auth/tasks.readonly": {
+"description": "View your tasks"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://tasks.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Tasks",
+"description": "The Google Tasks API lets you manage your tasks and task lists.",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/tasks/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "tasks:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://tasks.mtls.googleapis.com/",
+"name": "tasks",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"tasklists": {
+"methods": {
+"delete": {
+"description": "Deletes the authenticated user's specified task list. If the list contains assigned tasks, both the assigned tasks and the original tasks in the assignment surface (Docs, Chat Spaces) are deleted.",
+"flatPath": "tasks/v1/users/@me/lists/{tasklist}",
+"httpMethod": "DELETE",
+"id": "tasks.tasklists.delete",
+"parameterOrder": [
+"tasklist"
+],
+"parameters": {
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/users/@me/lists/{tasklist}",
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+},
+"get": {
+"description": "Returns the authenticated user's specified task list.",
+"flatPath": "tasks/v1/users/@me/lists/{tasklist}",
+"httpMethod": "GET",
+"id": "tasks.tasklists.get",
+"parameterOrder": [
+"tasklist"
+],
+"parameters": {
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/users/@me/lists/{tasklist}",
+"response": {
+"$ref": "TaskList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks",
+"https://www.googleapis.com/auth/tasks.readonly"
+]
+},
+"insert": {
+"description": "Creates a new task list and adds it to the authenticated user's task lists. A user can have up to 2000 lists at a time.",
+"flatPath": "tasks/v1/users/@me/lists",
+"httpMethod": "POST",
+"id": "tasks.tasklists.insert",
+"parameterOrder": [],
+"parameters": {},
+"path": "tasks/v1/users/@me/lists",
+"request": {
+"$ref": "TaskList"
+},
+"response": {
+"$ref": "TaskList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+},
+"list": {
+"description": "Returns all the authenticated user's task lists. A user can have up to 2000 lists at a time.",
+"flatPath": "tasks/v1/users/@me/lists",
+"httpMethod": "GET",
+"id": "tasks.tasklists.list",
+"parameterOrder": [],
+"parameters": {
+"maxResults": {
+"description": "Maximum number of task lists returned on one page. Optional. The default is 20 (max allowed: 100).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token specifying the result page to return. Optional.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "tasks/v1/users/@me/lists",
+"response": {
+"$ref": "TaskLists"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks",
+"https://www.googleapis.com/auth/tasks.readonly"
+]
+},
+"patch": {
+"description": "Updates the authenticated user's specified task list. This method supports patch semantics.",
+"flatPath": "tasks/v1/users/@me/lists/{tasklist}",
+"httpMethod": "PATCH",
+"id": "tasks.tasklists.patch",
+"parameterOrder": [
+"tasklist"
+],
+"parameters": {
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/users/@me/lists/{tasklist}",
+"request": {
+"$ref": "TaskList"
+},
+"response": {
+"$ref": "TaskList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+},
+"update": {
+"description": "Updates the authenticated user's specified task list.",
+"flatPath": "tasks/v1/users/@me/lists/{tasklist}",
+"httpMethod": "PUT",
+"id": "tasks.tasklists.update",
+"parameterOrder": [
+"tasklist"
+],
+"parameters": {
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/users/@me/lists/{tasklist}",
+"request": {
+"$ref": "TaskList"
+},
+"response": {
+"$ref": "TaskList"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+}
+}
+},
+"tasks": {
+"methods": {
+"clear": {
+"description": "Clears all completed tasks from the specified task list. The affected tasks will be marked as 'hidden' and no longer be returned by default when retrieving all tasks for a task list.",
+"flatPath": "tasks/v1/lists/{tasklist}/clear",
+"httpMethod": "POST",
+"id": "tasks.tasks.clear",
+"parameterOrder": [
+"tasklist"
+],
+"parameters": {
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/lists/{tasklist}/clear",
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+},
+"delete": {
+"description": "Deletes the specified task from the task list. If the task is assigned, both the assigned task and the original task (in Docs, Chat Spaces) are deleted. To delete the assigned task only, navigate to the assignment surface and unassign the task from there.",
+"flatPath": "tasks/v1/lists/{tasklist}/tasks/{task}",
+"httpMethod": "DELETE",
+"id": "tasks.tasks.delete",
+"parameterOrder": [
+"tasklist",
+"task"
+],
+"parameters": {
+"task": {
+"description": "Task identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/lists/{tasklist}/tasks/{task}",
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+},
+"get": {
+"description": "Returns the specified task.",
+"flatPath": "tasks/v1/lists/{tasklist}/tasks/{task}",
+"httpMethod": "GET",
+"id": "tasks.tasks.get",
+"parameterOrder": [
+"tasklist",
+"task"
+],
+"parameters": {
+"task": {
+"description": "Task identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/lists/{tasklist}/tasks/{task}",
+"response": {
+"$ref": "Task"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks",
+"https://www.googleapis.com/auth/tasks.readonly"
+]
+},
+"insert": {
+"description": "Creates a new task on the specified task list. Tasks assigned from Docs or Chat Spaces cannot be inserted from Tasks Public API; they can only be created by assigning them from Docs or Chat Spaces. A user can have up to 20,000 non-hidden tasks per list and up to 100,000 tasks in total at a time.",
+"flatPath": "tasks/v1/lists/{tasklist}/tasks",
+"httpMethod": "POST",
+"id": "tasks.tasks.insert",
+"parameterOrder": [
+"tasklist"
+],
+"parameters": {
+"parent": {
+"description": "Parent task identifier. If the task is created at the top level, this parameter is omitted. An assigned task cannot be a parent task, nor can it have a parent. Setting the parent to an assigned task results in failure of the request. Optional.",
+"location": "query",
+"type": "string"
+},
+"previous": {
+"description": "Previous sibling task identifier. If the task is created at the first position among its siblings, this parameter is omitted. Optional.",
+"location": "query",
+"type": "string"
+},
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/lists/{tasklist}/tasks",
+"request": {
+"$ref": "Task"
+},
+"response": {
+"$ref": "Task"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+},
+"list": {
+"description": "Returns all tasks in the specified task list. Does not return assigned tasks be default (from Docs, Chat Spaces). A user can have up to 20,000 non-hidden tasks per list and up to 100,000 tasks in total at a time.",
+"flatPath": "tasks/v1/lists/{tasklist}/tasks",
+"httpMethod": "GET",
+"id": "tasks.tasks.list",
+"parameterOrder": [
+"tasklist"
+],
+"parameters": {
+"completedMax": {
+"description": "Upper bound for a task's completion date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by completion date.",
+"location": "query",
+"type": "string"
+},
+"completedMin": {
+"description": "Lower bound for a task's completion date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by completion date.",
+"location": "query",
+"type": "string"
+},
+"dueMax": {
+"description": "Upper bound for a task's due date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by due date.",
+"location": "query",
+"type": "string"
+},
+"dueMin": {
+"description": "Lower bound for a task's due date (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by due date.",
+"location": "query",
+"type": "string"
+},
+"maxResults": {
+"description": "Maximum number of tasks returned on one page. Optional. The default is 20 (max allowed: 100).",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Token specifying the result page to return. Optional.",
+"location": "query",
+"type": "string"
+},
+"showAssigned": {
+"description": "Optional. Flag indicating whether tasks assigned to the current user are returned in the result. Optional. The default is False.",
+"location": "query",
+"type": "boolean"
+},
+"showCompleted": {
+"description": "Flag indicating whether completed tasks are returned in the result. Note that showHidden must also be True to show tasks completed in first party clients, such as the web UI and Google's mobile apps. Optional. The default is True.",
+"location": "query",
+"type": "boolean"
+},
+"showDeleted": {
+"description": "Flag indicating whether deleted tasks are returned in the result. Optional. The default is False.",
+"location": "query",
+"type": "boolean"
+},
+"showHidden": {
+"description": "Flag indicating whether hidden tasks are returned in the result. Optional. The default is False.",
+"location": "query",
+"type": "boolean"
+},
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"updatedMin": {
+"description": "Lower bound for a task's last modification time (as a RFC 3339 timestamp) to filter by. Optional. The default is not to filter by last modification time.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "tasks/v1/lists/{tasklist}/tasks",
+"response": {
+"$ref": "Tasks"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks",
+"https://www.googleapis.com/auth/tasks.readonly"
+]
+},
+"move": {
+"description": "Moves the specified task to another position in the destination task list. If the destination list is not specified, the task is moved within its current list. This can include putting it as a child task under a new parent and/or move it to a different position among its sibling tasks. A user can have up to 2,000 subtasks per task.",
+"flatPath": "tasks/v1/lists/{tasklist}/tasks/{task}/move",
+"httpMethod": "POST",
+"id": "tasks.tasks.move",
+"parameterOrder": [
+"tasklist",
+"task"
+],
+"parameters": {
+"destinationTasklist": {
+"description": "Optional. Destination task list identifier. If set, the task is moved from tasklist to the destinationTasklist list. Otherwise the task is moved within its current list. Recurrent tasks cannot currently be moved between lists. Optional.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "New parent task identifier. If the task is moved to the top level, this parameter is omitted. The task set as parent must exist in the task list and can not be hidden. Assigned tasks can not be set as parent task (have subtasks) or be moved under a parent task (become subtasks). Optional.",
+"location": "query",
+"type": "string"
+},
+"previous": {
+"description": "New previous sibling task identifier. If the task is moved to the first position among its siblings, this parameter is omitted. The task set as previous must exist in the task list and can not be hidden. Optional.",
+"location": "query",
+"type": "string"
+},
+"task": {
+"description": "Task identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/lists/{tasklist}/tasks/{task}/move",
+"response": {
+"$ref": "Task"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+},
+"patch": {
+"description": "Updates the specified task. This method supports patch semantics.",
+"flatPath": "tasks/v1/lists/{tasklist}/tasks/{task}",
+"httpMethod": "PATCH",
+"id": "tasks.tasks.patch",
+"parameterOrder": [
+"tasklist",
+"task"
+],
+"parameters": {
+"task": {
+"description": "Task identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/lists/{tasklist}/tasks/{task}",
+"request": {
+"$ref": "Task"
+},
+"response": {
+"$ref": "Task"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+},
+"update": {
+"description": "Updates the specified task.",
+"flatPath": "tasks/v1/lists/{tasklist}/tasks/{task}",
+"httpMethod": "PUT",
+"id": "tasks.tasks.update",
+"parameterOrder": [
+"tasklist",
+"task"
+],
+"parameters": {
+"task": {
+"description": "Task identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+},
+"tasklist": {
+"description": "Task list identifier.",
+"location": "path",
+"required": true,
+"type": "string"
+}
+},
+"path": "tasks/v1/lists/{tasklist}/tasks/{task}",
+"request": {
+"$ref": "Task"
+},
+"response": {
+"$ref": "Task"
+},
+"scopes": [
+"https://www.googleapis.com/auth/tasks"
+]
+}
+}
+}
+},
+"revision": "20250105",
+"rootUrl": "https://tasks.googleapis.com/",
+"schemas": {
+"AssignmentInfo": {
+"description": "Information about the source of the task assignment (Document, Chat Space).",
+"id": "AssignmentInfo",
+"properties": {
+"driveResourceInfo": {
+"$ref": "DriveResourceInfo",
+"description": "Output only. Information about the Drive file where this task originates from. Currently, the Drive file can only be a document. This field is read-only.",
+"readOnly": true
+},
+"linkToTask": {
+"description": "Output only. An absolute link to the original task in the surface of assignment (Docs, Chat spaces, etc.).",
+"readOnly": true,
+"type": "string"
+},
+"spaceInfo": {
+"$ref": "SpaceInfo",
+"description": "Output only. Information about the Chat Space where this task originates from. This field is read-only.",
+"readOnly": true
+},
+"surfaceType": {
+"description": "Output only. The type of surface this assigned task originates from. Currently limited to DOCUMENT or SPACE.",
+"enum": [
+"CONTEXT_TYPE_UNSPECIFIED",
+"GMAIL",
+"DOCUMENT",
+"SPACE"
+],
+"enumDescriptions": [
+"Unknown value for this task's context.",
+"The task is created from Gmail.",
+"The task is assigned from a document.",
+"The task is assigned from a Chat Space."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"DriveResourceInfo": {
+"description": "Information about the Drive resource where a task was assigned from (the document, sheet, etc.).",
+"id": "DriveResourceInfo",
+"properties": {
+"driveFileId": {
+"description": "Output only. Identifier of the file in the Drive API.",
+"readOnly": true,
+"type": "string"
+},
+"resourceKey": {
+"description": "Output only. Resource key required to access files shared via a shared link. Not required for all files. See also developers.google.com/drive/api/guides/resource-keys.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"SpaceInfo": {
+"description": "Information about the Chat Space where a task was assigned from.",
+"id": "SpaceInfo",
+"properties": {
+"space": {
+"description": "Output only. The Chat space where this task originates from. The format is \"spaces/{space}\".",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Task": {
+"id": "Task",
+"properties": {
+"assignmentInfo": {
+"$ref": "AssignmentInfo",
+"description": "Output only. Context information for assigned tasks. A task can be assigned to a user, currently possible from surfaces like Docs and Chat Spaces. This field is populated for tasks assigned to the current user and identifies where the task was assigned from. This field is read-only.",
+"readOnly": true
+},
+"completed": {
+"description": "Completion date of the task (as a RFC 3339 timestamp). This field is omitted if the task has not been completed.",
+"type": "string"
+},
+"deleted": {
+"description": "Flag indicating whether the task has been deleted. For assigned tasks this field is read-only. They can only be deleted by calling tasks.delete, in which case both the assigned task and the original task (in Docs or Chat Spaces) are deleted. To delete the assigned task only, navigate to the assignment surface and unassign the task from there. The default is False.",
+"type": "boolean"
+},
+"due": {
+"description": "Due date of the task (as a RFC 3339 timestamp). Optional. The due date only records date information; the time portion of the timestamp is discarded when setting the due date. It isn't possible to read or write the time that a task is due via the API.",
+"type": "string"
+},
+"etag": {
+"description": "ETag of the resource.",
+"type": "string"
+},
+"hidden": {
+"description": "Flag indicating whether the task is hidden. This is the case if the task had been marked completed when the task list was last cleared. The default is False. This field is read-only.",
+"type": "boolean"
+},
+"id": {
+"description": "Task identifier.",
+"type": "string"
+},
+"kind": {
+"description": "Output only. Type of the resource. This is always \"tasks#task\".",
+"readOnly": true,
+"type": "string"
+},
+"links": {
+"description": "Output only. Collection of links. This collection is read-only.",
+"items": {
+"properties": {
+"description": {
+"description": "The description. In HTML speak: Everything between and .",
+"type": "string"
+},
+"link": {
+"description": "The URL.",
+"type": "string"
+},
+"type": {
+"description": "Type of the link, e.g. \"email\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"readOnly": true,
+"type": "array"
+},
+"notes": {
+"description": "Notes describing the task. Tasks assigned from Google Docs cannot have notes. Optional. Maximum length allowed: 8192 characters.",
+"type": "string"
+},
+"parent": {
+"description": "Output only. Parent task identifier. This field is omitted if it is a top-level task. Use the \"move\" method to move the task under a different parent or to the top level. A parent task can never be an assigned task (from Chat Spaces, Docs). This field is read-only.",
+"readOnly": true,
+"type": "string"
+},
+"position": {
+"description": "Output only. String indicating the position of the task among its sibling tasks under the same parent task or at the top level. If this string is greater than another task's corresponding position string according to lexicographical ordering, the task is positioned after the other task under the same parent task (or at the top level). Use the \"move\" method to move the task to another position.",
+"readOnly": true,
+"type": "string"
+},
+"selfLink": {
+"description": "Output only. URL pointing to this task. Used to retrieve, update, or delete this task.",
+"readOnly": true,
+"type": "string"
+},
+"status": {
+"description": "Status of the task. This is either \"needsAction\" or \"completed\".",
+"type": "string"
+},
+"title": {
+"description": "Title of the task. Maximum length allowed: 1024 characters.",
+"type": "string"
+},
+"updated": {
+"description": "Output only. Last modification time of the task (as a RFC 3339 timestamp).",
+"readOnly": true,
+"type": "string"
+},
+"webViewLink": {
+"description": "Output only. An absolute link to the task in the Google Tasks Web UI.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"TaskList": {
+"id": "TaskList",
+"properties": {
+"etag": {
+"description": "ETag of the resource.",
+"type": "string"
+},
+"id": {
+"description": "Task list identifier.",
+"type": "string"
+},
+"kind": {
+"description": "Output only. Type of the resource. This is always \"tasks#taskList\".",
+"readOnly": true,
+"type": "string"
+},
+"selfLink": {
+"description": "Output only. URL pointing to this task list. Used to retrieve, update, or delete this task list.",
+"readOnly": true,
+"type": "string"
+},
+"title": {
+"description": "Title of the task list. Maximum length allowed: 1024 characters.",
+"type": "string"
+},
+"updated": {
+"description": "Output only. Last modification time of the task list (as a RFC 3339 timestamp).",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"TaskLists": {
+"id": "TaskLists",
+"properties": {
+"etag": {
+"description": "ETag of the resource.",
+"type": "string"
+},
+"items": {
+"description": "Collection of task lists.",
+"items": {
+"$ref": "TaskList"
+},
+"type": "array"
+},
+"kind": {
+"description": "Type of the resource. This is always \"tasks#taskLists\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Token that can be used to request the next page of this result.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Tasks": {
+"id": "Tasks",
+"properties": {
+"etag": {
+"description": "ETag of the resource.",
+"type": "string"
+},
+"items": {
+"description": "Collection of tasks.",
+"items": {
+"$ref": "Task"
+},
+"type": "array"
+},
+"kind": {
+"description": "Type of the resource. This is always \"tasks#tasks\".",
+"type": "string"
+},
+"nextPageToken": {
+"description": "Token used to access the next page of this result.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Google Tasks API",
+"version": "v1"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tpu.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tpu.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..ad7af5b7bf27ba62ec1ebceaff35cbe52c706039
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tpu.v1.json
@@ -0,0 +1,1213 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://tpu.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "TPU",
+"description": "TPU API provides customers with access to Google TPU technology.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/tpu/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "tpu:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://tpu.mtls.googleapis.com/",
+"name": "tpu",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"acceleratorTypes": {
+"methods": {
+"get": {
+"description": "Gets AcceleratorType.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/acceleratorTypes/{acceleratorTypesId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.acceleratorTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/acceleratorTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "AcceleratorType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists accelerator types supported by this API.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/acceleratorTypes",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.acceleratorTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/acceleratorTypes",
+"response": {
+"$ref": "ListAcceleratorTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"nodes": {
+"methods": {
+"create": {
+"description": "Creates a node.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/nodes",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.nodes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"nodeId": {
+"description": "The unqualified resource name.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/nodes",
+"request": {
+"$ref": "Node"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a node.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}",
+"httpMethod": "DELETE",
+"id": "tpu.projects.locations.nodes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the details of a node.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.nodes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Node"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists nodes.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/nodes",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.nodes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/nodes",
+"response": {
+"$ref": "ListNodesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"reimage": {
+"description": "Reimages a node's OS.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}:reimage",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.nodes.reimage",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:reimage",
+"request": {
+"$ref": "ReimageNodeRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"start": {
+"description": "Starts a node.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}:start",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.nodes.start",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:start",
+"request": {
+"$ref": "StartNodeRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"stop": {
+"description": "Stops a node, this operation is only available with single TPU nodes.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}:stop",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.nodes.stop",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:stop",
+"request": {
+"$ref": "StopNodeRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}:cancel",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "tpu.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"tensorflowVersions": {
+"methods": {
+"get": {
+"description": "Gets TensorFlow Version.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tensorflowVersions/{tensorflowVersionsId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.tensorflowVersions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/tensorflowVersions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+name}",
+"response": {
+"$ref": "TensorFlowVersion"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "List TensorFlow versions supported by this API.",
+"flatPath": "v1/projects/{projectsId}/locations/{locationsId}/tensorflowVersions",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.tensorflowVersions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1/{+parent}/tensorflowVersions",
+"response": {
+"$ref": "ListTensorFlowVersionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241126",
+"rootUrl": "https://tpu.googleapis.com/",
+"schemas": {
+"AcceleratorType": {
+"description": "A accelerator type that a Node can be configured with.",
+"id": "AcceleratorType",
+"properties": {
+"name": {
+"description": "The resource name.",
+"type": "string"
+},
+"type": {
+"description": "the accelerator type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"ListAcceleratorTypesResponse": {
+"description": "Response for ListAcceleratorTypes.",
+"id": "ListAcceleratorTypesResponse",
+"properties": {
+"acceleratorTypes": {
+"description": "The listed nodes.",
+"items": {
+"$ref": "AcceleratorType"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The next page token or empty if none.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListNodesResponse": {
+"description": "Response for ListNodes.",
+"id": "ListNodesResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next page token or empty if none.",
+"type": "string"
+},
+"nodes": {
+"description": "The listed nodes.",
+"items": {
+"$ref": "Node"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTensorFlowVersionsResponse": {
+"description": "Response for ListTensorFlowVersions.",
+"id": "ListTensorFlowVersionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next page token or empty if none.",
+"type": "string"
+},
+"tensorflowVersions": {
+"description": "The listed nodes.",
+"items": {
+"$ref": "TensorFlowVersion"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NetworkEndpoint": {
+"description": "A network endpoint over which a TPU worker can be reached.",
+"id": "NetworkEndpoint",
+"properties": {
+"ipAddress": {
+"description": "The IP address of this network endpoint.",
+"type": "string"
+},
+"port": {
+"description": "The port of this network endpoint.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Node": {
+"description": "A TPU instance.",
+"id": "Node",
+"properties": {
+"acceleratorType": {
+"description": "Required. The type of hardware accelerators associated with this node.",
+"type": "string"
+},
+"apiVersion": {
+"description": "Output only. The API version that created this Node.",
+"enum": [
+"API_VERSION_UNSPECIFIED",
+"V1_ALPHA1",
+"V1",
+"V2_ALPHA1"
+],
+"enumDescriptions": [
+"API version is unknown.",
+"TPU API V1Alpha1 version.",
+"TPU API V1 version.",
+"TPU API V2Alpha1 version."
+],
+"readOnly": true,
+"type": "string"
+},
+"cidrBlock": {
+"description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time when the node was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "The user-supplied description of the TPU. Maximum of 512 characters.",
+"type": "string"
+},
+"health": {
+"description": "The health status of the TPU node.",
+"enum": [
+"HEALTH_UNSPECIFIED",
+"HEALTHY",
+"DEPRECATED_UNHEALTHY",
+"TIMEOUT",
+"UNHEALTHY_TENSORFLOW",
+"UNHEALTHY_MAINTENANCE"
+],
+"enumDescriptions": [
+"Health status is unknown: not initialized or failed to retrieve.",
+"The resource is healthy.",
+"The resource is unhealthy.",
+"The resource is unresponsive.",
+"The in-guest ML stack is unhealthy.",
+"The node is under maintenance/priority boost caused rescheduling and will resume running once rescheduled."
+],
+"type": "string"
+},
+"healthDescription": {
+"description": "Output only. If this field is populated, it contains a description of why the TPU Node is unhealthy.",
+"readOnly": true,
+"type": "string"
+},
+"ipAddress": {
+"deprecated": true,
+"description": "Output only. DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as visible to Compute Engine instances.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Resource labels to represent user-provided metadata.",
+"type": "object"
+},
+"name": {
+"description": "Output only. Immutable. The name of the TPU",
+"readOnly": true,
+"type": "string"
+},
+"network": {
+"description": "The name of a network they wish to peer the TPU node to. It must be a preexisting Compute Engine network inside of the project on which this API has been activated. If none is provided, \"default\" will be used.",
+"type": "string"
+},
+"networkEndpoints": {
+"description": "Output only. The network endpoints where TPU workers can be accessed and sent work. It is recommended that Tensorflow clients of the node reach out to the 0th entry in this map first.",
+"items": {
+"$ref": "NetworkEndpoint"
+},
+"readOnly": true,
+"type": "array"
+},
+"port": {
+"deprecated": true,
+"description": "Output only. DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as visible to Compute Engine instances.",
+"type": "string"
+},
+"schedulingConfig": {
+"$ref": "SchedulingConfig",
+"description": "The scheduling options for this node."
+},
+"serviceAccount": {
+"description": "Output only. The service account used to run the tensor flow services within the node. To share resources, including Google Cloud Storage data, with the Tensorflow job running in the Node, this account must have permissions to that data.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The current state for the TPU Node.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"RESTARTING",
+"REIMAGING",
+"DELETING",
+"REPAIRING",
+"STOPPED",
+"STOPPING",
+"STARTING",
+"PREEMPTED",
+"TERMINATED",
+"HIDING",
+"HIDDEN",
+"UNHIDING",
+"UNKNOWN"
+],
+"enumDescriptions": [
+"TPU node state is not known/set.",
+"TPU node is being created.",
+"TPU node has been created.",
+"TPU node is restarting.",
+"TPU node is undergoing reimaging.",
+"TPU node is being deleted.",
+"TPU node is being repaired and may be unusable. Details can be found in the `help_description` field.",
+"TPU node is stopped.",
+"TPU node is currently stopping.",
+"TPU node is currently starting.",
+"TPU node has been preempted. Only applies to Preemptible TPU Nodes.",
+"TPU node has been terminated due to maintenance or has reached the end of its life cycle (for preemptible nodes).",
+"TPU node is currently hiding.",
+"TPU node has been hidden.",
+"TPU node is currently unhiding.",
+"TPU node has unknown state after a failed repair."
+],
+"readOnly": true,
+"type": "string"
+},
+"symptoms": {
+"description": "Output only. The Symptoms that have occurred to the TPU Node.",
+"items": {
+"$ref": "Symptom"
+},
+"readOnly": true,
+"type": "array"
+},
+"tensorflowVersion": {
+"description": "Required. The version of Tensorflow running in the Node.",
+"type": "string"
+},
+"useServiceNetworking": {
+"description": "Whether the VPC peering for the node is set up through Service Networking API. The VPC Peering should be set up before provisioning the node. If this field is set, cidr_block field should not be specified. If the network, that you want to peer the TPU Node to, is Shared VPC networks, the node must be created with this this field enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Metadata describing an Operation",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "API version.",
+"type": "string"
+},
+"cancelRequested": {
+"description": "Specifies if cancellation was requested for the operation.",
+"type": "boolean"
+},
+"createTime": {
+"description": "The time the operation was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"endTime": {
+"description": "The time the operation finished running.",
+"format": "google-datetime",
+"type": "string"
+},
+"statusDetail": {
+"description": "Human-readable status of the operation, if any.",
+"type": "string"
+},
+"target": {
+"description": "Target of the operation - for example projects/project-1/connectivityTests/test-1",
+"type": "string"
+},
+"verb": {
+"description": "Name of the verb executed by the operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ReimageNodeRequest": {
+"description": "Request for ReimageNode.",
+"id": "ReimageNodeRequest",
+"properties": {
+"tensorflowVersion": {
+"description": "The version for reimage to create.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SchedulingConfig": {
+"description": "Sets the scheduling options for this node.",
+"id": "SchedulingConfig",
+"properties": {
+"preemptible": {
+"description": "Defines whether the node is preemptible.",
+"type": "boolean"
+},
+"reserved": {
+"description": "Whether the node is created under a reservation.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"StartNodeRequest": {
+"description": "Request for StartNode.",
+"id": "StartNodeRequest",
+"properties": {},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StopNodeRequest": {
+"description": "Request for StopNode.",
+"id": "StopNodeRequest",
+"properties": {},
+"type": "object"
+},
+"Symptom": {
+"description": "A Symptom instance.",
+"id": "Symptom",
+"properties": {
+"createTime": {
+"description": "Timestamp when the Symptom is created.",
+"format": "google-datetime",
+"type": "string"
+},
+"details": {
+"description": "Detailed information of the current Symptom.",
+"type": "string"
+},
+"symptomType": {
+"description": "Type of the Symptom.",
+"enum": [
+"SYMPTOM_TYPE_UNSPECIFIED",
+"LOW_MEMORY",
+"OUT_OF_MEMORY",
+"EXECUTE_TIMED_OUT",
+"MESH_BUILD_FAIL",
+"HBM_OUT_OF_MEMORY",
+"PROJECT_ABUSE"
+],
+"enumDescriptions": [
+"Unspecified symptom.",
+"TPU VM memory is low.",
+"TPU runtime is out of memory.",
+"TPU runtime execution has timed out.",
+"TPU runtime fails to construct a mesh that recognizes each TPU device's neighbors.",
+"TPU HBM is out of memory.",
+"Abusive behaviors have been identified on the current project."
+],
+"type": "string"
+},
+"workerId": {
+"description": "A string used to uniquely distinguish a worker within a TPU node.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TensorFlowVersion": {
+"description": "A tensorflow version that a Node can be configured with.",
+"id": "TensorFlowVersion",
+"properties": {
+"name": {
+"description": "The resource name.",
+"type": "string"
+},
+"version": {
+"description": "the tensorflow version.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud TPU API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tpu.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tpu.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..4fa945974a1b84ef6cc74c23ad40dfc63f03411d
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/tpu.v2.json
@@ -0,0 +1,2055 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://tpu.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "TPU",
+"description": "TPU API provides customers with access to Google TPU technology.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/tpu/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "tpu:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://tpu.mtls.googleapis.com/",
+"name": "tpu",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"generateServiceIdentity": {
+"description": "Generates the Cloud TPU service identity for the project.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}:generateServiceIdentity",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.generateServiceIdentity",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}:generateServiceIdentity",
+"request": {
+"$ref": "GenerateServiceIdentityRequest"
+},
+"response": {
+"$ref": "GenerateServiceIdentityResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v2/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"acceleratorTypes": {
+"methods": {
+"get": {
+"description": "Gets AcceleratorType.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/acceleratorTypes/{acceleratorTypesId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.acceleratorTypes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/acceleratorTypes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "AcceleratorType"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists accelerator types supported by this API.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/acceleratorTypes",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.acceleratorTypes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/acceleratorTypes",
+"response": {
+"$ref": "ListAcceleratorTypesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"nodes": {
+"methods": {
+"create": {
+"description": "Creates a node.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nodes",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.nodes.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"nodeId": {
+"description": "The unqualified resource name.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/nodes",
+"request": {
+"$ref": "Node"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a node.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}",
+"httpMethod": "DELETE",
+"id": "tpu.projects.locations.nodes.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the details of a node.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.nodes.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Node"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"getGuestAttributes": {
+"description": "Retrieves the guest attributes for the node.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}:getGuestAttributes",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.nodes.getGuestAttributes",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:getGuestAttributes",
+"request": {
+"$ref": "GetGuestAttributesRequest"
+},
+"response": {
+"$ref": "GetGuestAttributesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists nodes.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nodes",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.nodes.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/nodes",
+"response": {
+"$ref": "ListNodesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the configurations of a node.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}",
+"httpMethod": "PATCH",
+"id": "tpu.projects.locations.nodes.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. Immutable. The name of the TPU.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+},
+"updateMask": {
+"description": "Required. Mask of fields from Node to update. Supported fields: [description, tags, labels, metadata, network_config.enable_external_ips].",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"request": {
+"$ref": "Node"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"start": {
+"description": "Starts a node.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}:start",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.nodes.start",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:start",
+"request": {
+"$ref": "StartNodeRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"stop": {
+"description": "Stops a node. This operation is only available with single TPU nodes.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/nodes/{nodesId}:stop",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.nodes.stop",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:stop",
+"request": {
+"$ref": "StopNodeRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:cancel",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "tpu.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"queuedResources": {
+"methods": {
+"create": {
+"description": "Creates a QueuedResource TPU instance.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queuedResources",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.queuedResources.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"queuedResourceId": {
+"description": "Optional. The unqualified resource name. Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format.",
+"location": "query",
+"type": "string"
+},
+"requestId": {
+"description": "Optional. Idempotent request UUID.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+parent}/queuedResources",
+"request": {
+"$ref": "QueuedResource"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a QueuedResource TPU instance.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queuedResources/{queuedResourcesId}",
+"httpMethod": "DELETE",
+"id": "tpu.projects.locations.queuedResources.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"force": {
+"description": "Optional. If set to true, all running nodes belonging to this queued resource will be deleted first and then the queued resource will be deleted. Otherwise (i.e. force=false), the queued resource will only be deleted if its nodes have already been deleted or the queued resource is in the ACCEPTED, FAILED, or SUSPENDED state.",
+"location": "query",
+"type": "boolean"
+},
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queuedResources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. Idempotent request UUID.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a queued resource.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queuedResources/{queuedResourcesId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.queuedResources.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queuedResources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "QueuedResource"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists queued resources.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queuedResources",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.queuedResources.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"pageSize": {
+"description": "Optional. The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/queuedResources",
+"response": {
+"$ref": "ListQueuedResourcesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"reset": {
+"description": "Resets a QueuedResource TPU instance",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/queuedResources/{queuedResourcesId}:reset",
+"httpMethod": "POST",
+"id": "tpu.projects.locations.queuedResources.reset",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the queued resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/queuedResources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}:reset",
+"request": {
+"$ref": "ResetQueuedResourceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"runtimeVersions": {
+"methods": {
+"get": {
+"description": "Gets a runtime version.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/runtimeVersions/{runtimeVersionsId}",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.runtimeVersions.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/runtimeVersions/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+name}",
+"response": {
+"$ref": "RuntimeVersion"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists runtime versions supported by this API.",
+"flatPath": "v2/projects/{projectsId}/locations/{locationsId}/runtimeVersions",
+"httpMethod": "GET",
+"id": "tpu.projects.locations.runtimeVersions.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "List filter.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Sort results.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of items to return.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The next_page_token value returned from a previous List request, if any.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v2/{+parent}/runtimeVersions",
+"response": {
+"$ref": "ListRuntimeVersionsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20250103",
+"rootUrl": "https://tpu.googleapis.com/",
+"schemas": {
+"AcceleratorConfig": {
+"description": "A TPU accelerator configuration.",
+"id": "AcceleratorConfig",
+"properties": {
+"topology": {
+"description": "Required. Topology of TPU in chips.",
+"type": "string"
+},
+"type": {
+"description": "Required. Type of TPU.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"V2",
+"V3",
+"V4",
+"V5LITE_POD",
+"V5P",
+"V6E"
+],
+"enumDescriptions": [
+"Unspecified version.",
+"TPU v2.",
+"TPU v3.",
+"TPU v4.",
+"TPU v5lite pod.",
+"TPU v5p",
+"TPU v6e"
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AcceleratorType": {
+"description": "A accelerator type that a Node can be configured with.",
+"id": "AcceleratorType",
+"properties": {
+"acceleratorConfigs": {
+"description": "The accelerator config.",
+"items": {
+"$ref": "AcceleratorConfig"
+},
+"type": "array"
+},
+"name": {
+"description": "The resource name.",
+"type": "string"
+},
+"type": {
+"description": "The accelerator type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AcceptedData": {
+"description": "Further data for the accepted state.",
+"id": "AcceptedData",
+"properties": {},
+"type": "object"
+},
+"AccessConfig": {
+"description": "An access config attached to the TPU worker.",
+"id": "AccessConfig",
+"properties": {
+"externalIp": {
+"description": "Output only. An external IP address associated with the TPU worker.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ActiveData": {
+"description": "Further data for the active state.",
+"id": "ActiveData",
+"properties": {},
+"type": "object"
+},
+"AttachedDisk": {
+"description": "A node-attached disk resource. Next ID: 8;",
+"id": "AttachedDisk",
+"properties": {
+"mode": {
+"description": "The mode in which to attach this disk. If not specified, the default is READ_WRITE mode. Only applicable to data_disks.",
+"enum": [
+"DISK_MODE_UNSPECIFIED",
+"READ_WRITE",
+"READ_ONLY"
+],
+"enumDescriptions": [
+"The disk mode is not known/set.",
+"Attaches the disk in read-write mode. Only one TPU node can attach a disk in read-write mode at a time.",
+"Attaches the disk in read-only mode. Multiple TPU nodes can attach a disk in read-only mode at a time."
+],
+"type": "string"
+},
+"sourceDisk": {
+"description": "Specifies the full path to an existing disk. For example: \"projects/my-project/zones/us-central1-c/disks/my-disk\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreatingData": {
+"description": "Further data for the creating state.",
+"id": "CreatingData",
+"properties": {},
+"type": "object"
+},
+"DeletingData": {
+"description": "Further data for the deleting state.",
+"id": "DeletingData",
+"properties": {},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"FailedData": {
+"description": "Further data for the failed state.",
+"id": "FailedData",
+"properties": {
+"error": {
+"$ref": "Status",
+"description": "Output only. The error that caused the queued resource to enter the FAILED state.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"GenerateServiceIdentityRequest": {
+"description": "Request for GenerateServiceIdentity.",
+"id": "GenerateServiceIdentityRequest",
+"properties": {},
+"type": "object"
+},
+"GenerateServiceIdentityResponse": {
+"description": "Response for GenerateServiceIdentity.",
+"id": "GenerateServiceIdentityResponse",
+"properties": {
+"identity": {
+"$ref": "ServiceIdentity",
+"description": "ServiceIdentity that was created or retrieved."
+}
+},
+"type": "object"
+},
+"GetGuestAttributesRequest": {
+"description": "Request for GetGuestAttributes.",
+"id": "GetGuestAttributesRequest",
+"properties": {
+"queryPath": {
+"description": "The guest attributes path to be queried.",
+"type": "string"
+},
+"workerIds": {
+"description": "The 0-based worker ID. If it is empty, all workers' GuestAttributes will be returned.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GetGuestAttributesResponse": {
+"description": "Response for GetGuestAttributes.",
+"id": "GetGuestAttributesResponse",
+"properties": {
+"guestAttributes": {
+"description": "The guest attributes for the TPU workers.",
+"items": {
+"$ref": "GuestAttributes"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Guaranteed": {
+"description": "Guaranteed tier definition.",
+"id": "Guaranteed",
+"properties": {
+"minDuration": {
+"description": "Optional. Defines the minimum duration of the guarantee. If specified, the requested resources will only be provisioned if they can be allocated for at least the given duration.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GuestAttributes": {
+"description": "A guest attributes.",
+"id": "GuestAttributes",
+"properties": {
+"queryPath": {
+"description": "The path to be queried. This can be the default namespace ('/') or a nested namespace ('/\\/') or a specified key ('/\\/\\')",
+"type": "string"
+},
+"queryValue": {
+"$ref": "GuestAttributesValue",
+"description": "The value of the requested queried path."
+}
+},
+"type": "object"
+},
+"GuestAttributesEntry": {
+"description": "A guest attributes namespace/key/value entry.",
+"id": "GuestAttributesEntry",
+"properties": {
+"key": {
+"description": "Key for the guest attribute entry.",
+"type": "string"
+},
+"namespace": {
+"description": "Namespace for the guest attribute entry.",
+"type": "string"
+},
+"value": {
+"description": "Value for the guest attribute entry.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GuestAttributesValue": {
+"description": "Array of guest attribute namespace/key/value tuples.",
+"id": "GuestAttributesValue",
+"properties": {
+"items": {
+"description": "The list of guest attributes entries.",
+"items": {
+"$ref": "GuestAttributesEntry"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Interval": {
+"description": "Represents a time interval, encoded as a Timestamp start (inclusive) and a Timestamp end (exclusive). The start must be less than or equal to the end. When the start equals the end, the interval is empty (matches no time). When both start and end are unspecified, the interval matches any time.",
+"id": "Interval",
+"properties": {
+"endTime": {
+"description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.",
+"format": "google-datetime",
+"type": "string"
+},
+"startTime": {
+"description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListAcceleratorTypesResponse": {
+"description": "Response for ListAcceleratorTypes.",
+"id": "ListAcceleratorTypesResponse",
+"properties": {
+"acceleratorTypes": {
+"description": "The listed nodes.",
+"items": {
+"$ref": "AcceleratorType"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The next page token or empty if none.",
+"type": "string"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListNodesResponse": {
+"description": "Response for ListNodes.",
+"id": "ListNodesResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next page token or empty if none.",
+"type": "string"
+},
+"nodes": {
+"description": "The listed nodes.",
+"items": {
+"$ref": "Node"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListQueuedResourcesResponse": {
+"description": "Response for ListQueuedResources.",
+"id": "ListQueuedResourcesResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next page token or empty if none.",
+"type": "string"
+},
+"queuedResources": {
+"description": "The listed queued resources.",
+"items": {
+"$ref": "QueuedResource"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListRuntimeVersionsResponse": {
+"description": "Response for ListRuntimeVersions.",
+"id": "ListRuntimeVersionsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The next page token or empty if none.",
+"type": "string"
+},
+"runtimeVersions": {
+"description": "The listed nodes.",
+"items": {
+"$ref": "RuntimeVersion"
+},
+"type": "array"
+},
+"unreachable": {
+"description": "Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MultisliceParams": {
+"description": "Parameters to specify for multislice QueuedResource requests. This message must be populated in case of multislice requests instead of node_id.",
+"id": "MultisliceParams",
+"properties": {
+"nodeCount": {
+"description": "Required. Number of nodes with this spec. The system will attempt to provison \"node_count\" nodes as part of the request. This needs to be > 1.",
+"format": "int32",
+"type": "integer"
+},
+"nodeIdPrefix": {
+"description": "Optional. Prefix of node_ids in case of multislice request. Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format. If node_count = 3 and node_id_prefix = \"np\", node ids of nodes created will be \"np-0\", \"np-1\", \"np-2\". If this field is not provided we use queued_resource_id as the node_id_prefix.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NetworkConfig": {
+"description": "Network related configurations.",
+"id": "NetworkConfig",
+"properties": {
+"canIpForward": {
+"description": "Allows the TPU node to send and receive packets with non-matching destination or source IPs. This is required if you plan to use the TPU workers to forward routes.",
+"type": "boolean"
+},
+"enableExternalIps": {
+"description": "Indicates that external IP addresses would be associated with the TPU workers. If set to false, the specified subnetwork or network should have Private Google Access enabled.",
+"type": "boolean"
+},
+"network": {
+"description": "The name of the network for the TPU node. It must be a preexisting Google Compute Engine network. If none is provided, \"default\" will be used.",
+"type": "string"
+},
+"queueCount": {
+"description": "Optional. Specifies networking queue count for TPU VM instance's network interface.",
+"format": "int32",
+"type": "integer"
+},
+"subnetwork": {
+"description": "The name of the subnetwork for the TPU node. It must be a preexisting Google Compute Engine subnetwork. If none is provided, \"default\" will be used.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NetworkEndpoint": {
+"description": "A network endpoint over which a TPU worker can be reached.",
+"id": "NetworkEndpoint",
+"properties": {
+"accessConfig": {
+"$ref": "AccessConfig",
+"description": "The access config for the TPU worker."
+},
+"ipAddress": {
+"description": "The internal IP address of this network endpoint.",
+"type": "string"
+},
+"port": {
+"description": "The port of this network endpoint.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"Node": {
+"description": "A TPU instance.",
+"id": "Node",
+"properties": {
+"acceleratorConfig": {
+"$ref": "AcceleratorConfig",
+"description": "The AccleratorConfig for the TPU Node."
+},
+"acceleratorType": {
+"description": "Optional. The type of hardware accelerators associated with this node.",
+"type": "string"
+},
+"apiVersion": {
+"description": "Output only. The API version that created this Node.",
+"enum": [
+"API_VERSION_UNSPECIFIED",
+"V1_ALPHA1",
+"V1",
+"V2_ALPHA1",
+"V2"
+],
+"enumDescriptions": [
+"API version is unknown.",
+"TPU API V1Alpha1 version.",
+"TPU API V1 version.",
+"TPU API V2Alpha1 version.",
+"TPU API V2 version."
+],
+"readOnly": true,
+"type": "string"
+},
+"cidrBlock": {
+"description": "The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided network, or the provided network is peered with another network that is using that CIDR block.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time when the node was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"dataDisks": {
+"description": "The additional data disks for the Node.",
+"items": {
+"$ref": "AttachedDisk"
+},
+"type": "array"
+},
+"description": {
+"description": "The user-supplied description of the TPU. Maximum of 512 characters.",
+"type": "string"
+},
+"health": {
+"description": "The health status of the TPU node.",
+"enum": [
+"HEALTH_UNSPECIFIED",
+"HEALTHY",
+"TIMEOUT",
+"UNHEALTHY_TENSORFLOW",
+"UNHEALTHY_MAINTENANCE"
+],
+"enumDescriptions": [
+"Health status is unknown: not initialized or failed to retrieve.",
+"The resource is healthy.",
+"The resource is unresponsive.",
+"The in-guest ML stack is unhealthy.",
+"The node is under maintenance/priority boost caused rescheduling and will resume running once rescheduled."
+],
+"type": "string"
+},
+"healthDescription": {
+"description": "Output only. If this field is populated, it contains a description of why the TPU Node is unhealthy.",
+"readOnly": true,
+"type": "string"
+},
+"id": {
+"description": "Output only. The unique identifier for the TPU Node.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Resource labels to represent user-provided metadata.",
+"type": "object"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Custom metadata to apply to the TPU Node. Can set startup-script and shutdown-script",
+"type": "object"
+},
+"multisliceNode": {
+"description": "Output only. Whether the Node belongs to a Multislice group.",
+"readOnly": true,
+"type": "boolean"
+},
+"name": {
+"description": "Output only. Immutable. The name of the TPU.",
+"readOnly": true,
+"type": "string"
+},
+"networkConfig": {
+"$ref": "NetworkConfig",
+"description": "Network configurations for the TPU node. network_config and network_configs are mutually exclusive, you can only specify one of them. If both are specified, an error will be returned."
+},
+"networkConfigs": {
+"description": "Optional. Repeated network configurations for the TPU node. This field is used to specify multiple networks configs for the TPU node. network_config and network_configs are mutually exclusive, you can only specify one of them. If both are specified, an error will be returned.",
+"items": {
+"$ref": "NetworkConfig"
+},
+"type": "array"
+},
+"networkEndpoints": {
+"description": "Output only. The network endpoints where TPU workers can be accessed and sent work. It is recommended that runtime clients of the node reach out to the 0th entry in this map first.",
+"items": {
+"$ref": "NetworkEndpoint"
+},
+"readOnly": true,
+"type": "array"
+},
+"queuedResource": {
+"description": "Output only. The qualified name of the QueuedResource that requested this Node.",
+"readOnly": true,
+"type": "string"
+},
+"runtimeVersion": {
+"description": "Required. The runtime version running in the Node.",
+"type": "string"
+},
+"schedulingConfig": {
+"$ref": "SchedulingConfig",
+"description": "The scheduling options for this node."
+},
+"serviceAccount": {
+"$ref": "ServiceAccount",
+"description": "The Google Cloud Platform Service Account to be used by the TPU node VMs. If None is specified, the default compute service account will be used."
+},
+"shieldedInstanceConfig": {
+"$ref": "ShieldedInstanceConfig",
+"description": "Shielded Instance options."
+},
+"state": {
+"description": "Output only. The current state for the TPU Node.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"READY",
+"RESTARTING",
+"REIMAGING",
+"DELETING",
+"REPAIRING",
+"STOPPED",
+"STOPPING",
+"STARTING",
+"PREEMPTED",
+"TERMINATED",
+"HIDING",
+"HIDDEN",
+"UNHIDING",
+"UNKNOWN"
+],
+"enumDescriptions": [
+"TPU node state is not known/set.",
+"TPU node is being created.",
+"TPU node has been created.",
+"TPU node is restarting.",
+"TPU node is undergoing reimaging.",
+"TPU node is being deleted.",
+"TPU node is being repaired and may be unusable. Details can be found in the 'help_description' field.",
+"TPU node is stopped.",
+"TPU node is currently stopping.",
+"TPU node is currently starting.",
+"TPU node has been preempted. Only applies to Preemptible TPU Nodes.",
+"TPU node has been terminated due to maintenance or has reached the end of its life cycle (for preemptible nodes).",
+"TPU node is currently hiding.",
+"TPU node has been hidden.",
+"TPU node is currently unhiding.",
+"TPU node has unknown state after a failed repair."
+],
+"readOnly": true,
+"type": "string"
+},
+"symptoms": {
+"description": "Output only. The Symptoms that have occurred to the TPU Node.",
+"items": {
+"$ref": "Symptom"
+},
+"readOnly": true,
+"type": "array"
+},
+"tags": {
+"description": "Tags to apply to the TPU Node. Tags are used to identify valid sources or targets for network firewalls.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"NodeSpec": {
+"description": "Details of the TPU node(s) being requested. Users can request either a single node or multiple nodes. NodeSpec provides the specification for node(s) to be created.",
+"id": "NodeSpec",
+"properties": {
+"multisliceParams": {
+"$ref": "MultisliceParams",
+"description": "Optional. Fields to specify in case of multislice request."
+},
+"node": {
+"$ref": "Node",
+"description": "Required. The node."
+},
+"nodeId": {
+"description": "Optional. The unqualified resource name. Should follow the `^[A-Za-z0-9_.~+%-]+$` regex format. This is only specified when requesting a single node. In case of multislice requests, multislice_params must be populated instead.",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent resource name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Metadata describing an Operation",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "API version.",
+"type": "string"
+},
+"cancelRequested": {
+"description": "Specifies if cancellation was requested for the operation.",
+"type": "boolean"
+},
+"createTime": {
+"description": "The time the operation was created.",
+"format": "google-datetime",
+"type": "string"
+},
+"endTime": {
+"description": "The time the operation finished running.",
+"format": "google-datetime",
+"type": "string"
+},
+"statusDetail": {
+"description": "Human-readable status of the operation, if any.",
+"type": "string"
+},
+"target": {
+"description": "Target of the operation - for example projects/project-1/connectivityTests/test-1",
+"type": "string"
+},
+"verb": {
+"description": "Name of the verb executed by the operation.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ProvisioningData": {
+"description": "Further data for the provisioning state.",
+"id": "ProvisioningData",
+"properties": {},
+"type": "object"
+},
+"QueuedResource": {
+"description": "A QueuedResource represents a request for resources that will be placed in a queue and fulfilled when the necessary resources are available.",
+"id": "QueuedResource",
+"properties": {
+"createTime": {
+"description": "Output only. The time when the QueuedResource was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"guaranteed": {
+"$ref": "Guaranteed",
+"description": "Optional. The Guaranteed tier"
+},
+"name": {
+"description": "Output only. Immutable. The name of the QueuedResource.",
+"readOnly": true,
+"type": "string"
+},
+"queueingPolicy": {
+"$ref": "QueueingPolicy",
+"description": "Optional. The queueing policy of the QueuedRequest."
+},
+"reservationName": {
+"description": "Optional. Name of the reservation in which the resource should be provisioned. Format: projects/{project}/locations/{zone}/reservations/{reservation}",
+"type": "string"
+},
+"spot": {
+"$ref": "Spot",
+"description": "Optional. The Spot tier."
+},
+"state": {
+"$ref": "QueuedResourceState",
+"description": "Output only. State of the QueuedResource request.",
+"readOnly": true
+},
+"tpu": {
+"$ref": "Tpu",
+"description": "Optional. Defines a TPU resource."
+}
+},
+"type": "object"
+},
+"QueuedResourceState": {
+"description": "QueuedResourceState defines the details of the QueuedResource request.",
+"id": "QueuedResourceState",
+"properties": {
+"acceptedData": {
+"$ref": "AcceptedData",
+"description": "Output only. Further data for the accepted state.",
+"readOnly": true
+},
+"activeData": {
+"$ref": "ActiveData",
+"description": "Output only. Further data for the active state.",
+"readOnly": true
+},
+"creatingData": {
+"$ref": "CreatingData",
+"description": "Output only. Further data for the creating state.",
+"readOnly": true
+},
+"deletingData": {
+"$ref": "DeletingData",
+"description": "Output only. Further data for the deleting state.",
+"readOnly": true
+},
+"failedData": {
+"$ref": "FailedData",
+"description": "Output only. Further data for the failed state.",
+"readOnly": true
+},
+"provisioningData": {
+"$ref": "ProvisioningData",
+"description": "Output only. Further data for the provisioning state.",
+"readOnly": true
+},
+"state": {
+"description": "Output only. State of the QueuedResource request.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"ACCEPTED",
+"PROVISIONING",
+"FAILED",
+"DELETING",
+"ACTIVE",
+"SUSPENDING",
+"SUSPENDED",
+"WAITING_FOR_RESOURCES"
+],
+"enumDescriptions": [
+"State of the QueuedResource request is not known/set.",
+"The QueuedResource request has been received. We're still working on determining if we will be able to honor this request.",
+"The QueuedResource request has passed initial validation/admission control and has been persisted in the queue.",
+"The QueuedResource request has been selected. The associated resources are currently being provisioned (or very soon will begin provisioning).",
+"The request could not be completed. This may be due to some late-discovered problem with the request itself, or due to unavailability of resources within the constraints of the request (e.g., the 'valid until' start timing constraint expired).",
+"The QueuedResource is being deleted.",
+"The resources specified in the QueuedResource request have been provisioned and are ready for use by the end-user/consumer.",
+"The resources specified in the QueuedResource request are being deleted. This may have been initiated by the user, or the Cloud TPU service. Inspect the state data for more details.",
+"The resources specified in the QueuedResource request have been deleted.",
+"The QueuedResource request has passed initial validation and has been persisted in the queue. It will remain in this state until there are sufficient free resources to begin provisioning your request. Wait times will vary significantly depending on demand levels. When demand is high, not all requests can be immediately provisioned. If you need more reliable obtainability of TPUs consider purchasing a reservation. To put a limit on how long you are willing to wait, use [timing constraints](https://cloud.google.com/tpu/docs/queued-resources#request_a_queued_resource_before_a_specified_time)."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateInitiator": {
+"description": "Output only. The initiator of the QueuedResources's current state. Used to indicate whether the SUSPENDING/SUSPENDED state was initiated by the user or the service.",
+"enum": [
+"STATE_INITIATOR_UNSPECIFIED",
+"USER",
+"SERVICE"
+],
+"enumDescriptions": [
+"The state initiator is unspecified.",
+"The current QueuedResource state was initiated by the user.",
+"The current QueuedResource state was initiated by the service."
+],
+"readOnly": true,
+"type": "string"
+},
+"suspendedData": {
+"$ref": "SuspendedData",
+"description": "Output only. Further data for the suspended state.",
+"readOnly": true
+},
+"suspendingData": {
+"$ref": "SuspendingData",
+"description": "Output only. Further data for the suspending state.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"QueueingPolicy": {
+"description": "Defines the policy of the QueuedRequest.",
+"id": "QueueingPolicy",
+"properties": {
+"validAfterDuration": {
+"description": "Optional. A relative time after which resources may be created.",
+"format": "google-duration",
+"type": "string"
+},
+"validAfterTime": {
+"description": "Optional. An absolute time after which resources may be created.",
+"format": "google-datetime",
+"type": "string"
+},
+"validInterval": {
+"$ref": "Interval",
+"description": "Optional. An absolute time interval within which resources may be created."
+},
+"validUntilDuration": {
+"description": "Optional. A relative time after which resources should not be created. If the request cannot be fulfilled by this time the request will be failed.",
+"format": "google-duration",
+"type": "string"
+},
+"validUntilTime": {
+"description": "Optional. An absolute time after which resources should not be created. If the request cannot be fulfilled by this time the request will be failed.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResetQueuedResourceRequest": {
+"description": "Request for ResetQueuedResource.",
+"id": "ResetQueuedResourceRequest",
+"properties": {},
+"type": "object"
+},
+"RuntimeVersion": {
+"description": "A runtime version that a Node can be configured with.",
+"id": "RuntimeVersion",
+"properties": {
+"name": {
+"description": "The resource name.",
+"type": "string"
+},
+"version": {
+"description": "The runtime version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"SchedulingConfig": {
+"description": "Sets the scheduling options for this node.",
+"id": "SchedulingConfig",
+"properties": {
+"preemptible": {
+"description": "Defines whether the node is preemptible.",
+"type": "boolean"
+},
+"reserved": {
+"description": "Whether the node is created under a reservation.",
+"type": "boolean"
+},
+"spot": {
+"description": "Optional. Defines whether the node is Spot VM.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"ServiceAccount": {
+"description": "A service account.",
+"id": "ServiceAccount",
+"properties": {
+"email": {
+"description": "Email address of the service account. If empty, default Compute service account will be used.",
+"type": "string"
+},
+"scope": {
+"description": "The list of scopes to be made available for this service account. If empty, access to all Cloud APIs will be allowed.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ServiceIdentity": {
+"description": "The per-product per-project service identity for Cloud TPU service.",
+"id": "ServiceIdentity",
+"properties": {
+"email": {
+"description": "The email address of the service identity.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ShieldedInstanceConfig": {
+"description": "A set of Shielded Instance options.",
+"id": "ShieldedInstanceConfig",
+"properties": {
+"enableSecureBoot": {
+"description": "Defines whether the instance has Secure Boot enabled.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"Spot": {
+"description": "Spot tier definition.",
+"id": "Spot",
+"properties": {},
+"type": "object"
+},
+"StartNodeRequest": {
+"description": "Request for StartNode.",
+"id": "StartNodeRequest",
+"properties": {},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StopNodeRequest": {
+"description": "Request for StopNode.",
+"id": "StopNodeRequest",
+"properties": {},
+"type": "object"
+},
+"SuspendedData": {
+"description": "Further data for the suspended state.",
+"id": "SuspendedData",
+"properties": {},
+"type": "object"
+},
+"SuspendingData": {
+"description": "Further data for the suspending state.",
+"id": "SuspendingData",
+"properties": {},
+"type": "object"
+},
+"Symptom": {
+"description": "A Symptom instance.",
+"id": "Symptom",
+"properties": {
+"createTime": {
+"description": "Timestamp when the Symptom is created.",
+"format": "google-datetime",
+"type": "string"
+},
+"details": {
+"description": "Detailed information of the current Symptom.",
+"type": "string"
+},
+"symptomType": {
+"description": "Type of the Symptom.",
+"enum": [
+"SYMPTOM_TYPE_UNSPECIFIED",
+"LOW_MEMORY",
+"OUT_OF_MEMORY",
+"EXECUTE_TIMED_OUT",
+"MESH_BUILD_FAIL",
+"HBM_OUT_OF_MEMORY",
+"PROJECT_ABUSE"
+],
+"enumDescriptions": [
+"Unspecified symptom.",
+"TPU VM memory is low.",
+"TPU runtime is out of memory.",
+"TPU runtime execution has timed out.",
+"TPU runtime fails to construct a mesh that recognizes each TPU device's neighbors.",
+"TPU HBM is out of memory.",
+"Abusive behaviors have been identified on the current project."
+],
+"type": "string"
+},
+"workerId": {
+"description": "A string used to uniquely distinguish a worker within a TPU node.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Tpu": {
+"description": "Details of the TPU resource(s) being requested.",
+"id": "Tpu",
+"properties": {
+"nodeSpec": {
+"description": "Optional. The TPU node(s) being requested.",
+"items": {
+"$ref": "NodeSpec"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud TPU API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/trafficdirector.v2.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/trafficdirector.v2.json
new file mode 100644
index 0000000000000000000000000000000000000000..69d763c6ab541d62ad1c836924490c26889ab0a3
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/trafficdirector.v2.json
@@ -0,0 +1,956 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://trafficdirector.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Traffic Director Service",
+"description": "",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/traffic-director",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "trafficdirector:v2",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://trafficdirector.mtls.googleapis.com/",
+"name": "trafficdirector",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"discovery": {
+"methods": {
+"client_status": {
+"description": "",
+"flatPath": "v2/discovery:client_status",
+"httpMethod": "POST",
+"id": "trafficdirector.discovery.client_status",
+"parameterOrder": [],
+"parameters": {},
+"path": "v2/discovery:client_status",
+"request": {
+"$ref": "ClientStatusRequest"
+},
+"response": {
+"$ref": "ClientStatusResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+},
+"revision": "20240625",
+"rootUrl": "https://trafficdirector.googleapis.com/",
+"schemas": {
+"Address": {
+"description": "Addresses specify either a logical or physical address and port, which are used to tell Envoy where to bind/listen, connect to upstream and find management servers.",
+"id": "Address",
+"properties": {
+"pipe": {
+"$ref": "Pipe"
+},
+"socketAddress": {
+"$ref": "SocketAddress"
+}
+},
+"type": "object"
+},
+"BuildVersion": {
+"description": "BuildVersion combines SemVer version of extension with free-form build information (i.e. 'alpha', 'private-build') as a set of strings.",
+"id": "BuildVersion",
+"properties": {
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Free-form build information. Envoy defines several well known keys in the source/common/version/version.h file",
+"type": "object"
+},
+"version": {
+"$ref": "SemanticVersion",
+"description": "SemVer version of extension."
+}
+},
+"type": "object"
+},
+"ClientConfig": {
+"description": "All xds configs for a particular client.",
+"id": "ClientConfig",
+"properties": {
+"node": {
+"$ref": "Node",
+"description": "Node for a particular client."
+},
+"xdsConfig": {
+"items": {
+"$ref": "PerXdsConfig"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ClientStatusRequest": {
+"description": "Request for client status of clients identified by a list of NodeMatchers.",
+"id": "ClientStatusRequest",
+"properties": {
+"nodeMatchers": {
+"description": "Management server can use these match criteria to identify clients. The match follows OR semantics.",
+"items": {
+"$ref": "NodeMatcher"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ClientStatusResponse": {
+"id": "ClientStatusResponse",
+"properties": {
+"config": {
+"description": "Client configs for the clients specified in the ClientStatusRequest.",
+"items": {
+"$ref": "ClientConfig"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ClustersConfigDump": {
+"description": "Envoy's cluster manager fills this message with all currently known clusters. Cluster configuration information can be used to recreate an Envoy configuration by populating all clusters as static clusters or by returning them in a CDS response.",
+"id": "ClustersConfigDump",
+"properties": {
+"dynamicActiveClusters": {
+"description": "The dynamically loaded active clusters. These are clusters that are available to service data plane traffic.",
+"items": {
+"$ref": "DynamicCluster"
+},
+"type": "array"
+},
+"dynamicWarmingClusters": {
+"description": "The dynamically loaded warming clusters. These are clusters that are currently undergoing warming in preparation to service data plane traffic. Note that if attempting to recreate an Envoy configuration from a configuration dump, the warming clusters should generally be discarded.",
+"items": {
+"$ref": "DynamicCluster"
+},
+"type": "array"
+},
+"staticClusters": {
+"description": "The statically loaded cluster configs.",
+"items": {
+"$ref": "StaticCluster"
+},
+"type": "array"
+},
+"versionInfo": {
+"description": "This is the :ref:`version_info ` in the last processed CDS discovery response. If there are only static bootstrap clusters, this field will be \"\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DoubleMatcher": {
+"description": "Specifies the way to match a double value.",
+"id": "DoubleMatcher",
+"properties": {
+"exact": {
+"description": "If specified, the input double value must be equal to the value specified here.",
+"format": "double",
+"type": "number"
+},
+"range": {
+"$ref": "DoubleRange",
+"description": "If specified, the input double value must be in the range specified here. Note: The range is using half-open interval semantics [start, end)."
+}
+},
+"type": "object"
+},
+"DoubleRange": {
+"description": "Specifies the double start and end of the range using half-open interval semantics [start, end).",
+"id": "DoubleRange",
+"properties": {
+"end": {
+"description": "end of the range (exclusive)",
+"format": "double",
+"type": "number"
+},
+"start": {
+"description": "start of the range (inclusive)",
+"format": "double",
+"type": "number"
+}
+},
+"type": "object"
+},
+"DynamicCluster": {
+"description": "Describes a dynamically loaded cluster via the CDS API.",
+"id": "DynamicCluster",
+"properties": {
+"cluster": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The cluster config.",
+"type": "object"
+},
+"lastUpdated": {
+"description": "The timestamp when the Cluster was last updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"versionInfo": {
+"description": "This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the cluster was loaded. In the future, discrete per-cluster versions may be supported by the API.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DynamicListener": {
+"description": "Describes a dynamically loaded listener via the LDS API. [#next-free-field: 6]",
+"id": "DynamicListener",
+"properties": {
+"activeState": {
+"$ref": "DynamicListenerState",
+"description": "The listener state for any active listener by this name. These are listeners that are available to service data plane traffic."
+},
+"drainingState": {
+"$ref": "DynamicListenerState",
+"description": "The listener state for any draining listener by this name. These are listeners that are currently undergoing draining in preparation to stop servicing data plane traffic. Note that if attempting to recreate an Envoy configuration from a configuration dump, the draining listeners should generally be discarded."
+},
+"errorState": {
+"$ref": "UpdateFailureState",
+"description": "Set if the last update failed, cleared after the next successful update."
+},
+"name": {
+"description": "The name or unique id of this listener, pulled from the DynamicListenerState config.",
+"type": "string"
+},
+"warmingState": {
+"$ref": "DynamicListenerState",
+"description": "The listener state for any warming listener by this name. These are listeners that are currently undergoing warming in preparation to service data plane traffic. Note that if attempting to recreate an Envoy configuration from a configuration dump, the warming listeners should generally be discarded."
+}
+},
+"type": "object"
+},
+"DynamicListenerState": {
+"id": "DynamicListenerState",
+"properties": {
+"lastUpdated": {
+"description": "The timestamp when the Listener was last successfully updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"listener": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The listener config.",
+"type": "object"
+},
+"versionInfo": {
+"description": "This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the listener was loaded. In the future, discrete per-listener versions may be supported by the API.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DynamicRouteConfig": {
+"id": "DynamicRouteConfig",
+"properties": {
+"lastUpdated": {
+"description": "The timestamp when the Route was last updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"routeConfig": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The route config.",
+"type": "object"
+},
+"versionInfo": {
+"description": "This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the route configuration was loaded.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DynamicScopedRouteConfigs": {
+"id": "DynamicScopedRouteConfigs",
+"properties": {
+"lastUpdated": {
+"description": "The timestamp when the scoped route config set was last updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"name": {
+"description": "The name assigned to the scoped route configurations.",
+"type": "string"
+},
+"scopedRouteConfigs": {
+"description": "The scoped route configurations.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"versionInfo": {
+"description": "This is the per-resource version information. This version is currently taken from the :ref:`version_info ` field at the time that the scoped routes configuration was loaded.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Extension": {
+"description": "Version and identification for an Envoy extension. [#next-free-field: 6]",
+"id": "Extension",
+"properties": {
+"category": {
+"description": "Category of the extension. Extension category names use reverse DNS notation. For instance \"envoy.filters.listener\" for Envoy's built-in listener filters or \"com.acme.filters.http\" for HTTP filters from acme.com vendor. [#comment:",
+"type": "string"
+},
+"disabled": {
+"description": "Indicates that the extension is present but was disabled via dynamic configuration.",
+"type": "boolean"
+},
+"name": {
+"description": "This is the name of the Envoy filter as specified in the Envoy configuration, e.g. envoy.filters.http.router, com.acme.widget.",
+"type": "string"
+},
+"typeDescriptor": {
+"description": "[#not-implemented-hide:] Type descriptor of extension configuration proto. [#comment:",
+"type": "string"
+},
+"version": {
+"$ref": "BuildVersion",
+"description": "The version is a property of the extension and maintained independently of other extensions and the Envoy API. This field is not set when extension did not provide version information."
+}
+},
+"type": "object"
+},
+"GoogleRE2": {
+"description": "Google's `RE2 `_ regex engine. The regex string must adhere to the documented `syntax `_. The engine is designed to complete execution in linear time as well as limit the amount of memory used. Envoy supports program size checking via runtime. The runtime keys ``re2.max_program_size.error_level`` and ``re2.max_program_size.warn_level`` can be set to integers as the maximum program size or complexity that a compiled regex can have before an exception is thrown or a warning is logged, respectively. ``re2.max_program_size.error_level`` defaults to 100, and ``re2.max_program_size.warn_level`` has no default if unset (will not check/log a warning). Envoy emits two stats for tracking the program size of regexes: the histogram `re2.program_size`, which records the program size, and the counter `re2.exceeded_warn_level`, which is incremented each time the program size exceeds the warn level threshold.",
+"id": "GoogleRE2",
+"properties": {
+"maxProgramSize": {
+"deprecated": true,
+"description": "This field controls the RE2 \"program size\" which is a rough estimate of how complex a compiled regex is to evaluate. A regex that has a program size greater than the configured value will fail to compile. In this case, the configured max program size can be increased or the regex can be simplified. If not specified, the default is 100. This field is deprecated; regexp validation should be performed on the management server instead of being done by each individual client.",
+"format": "uint32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"InlineScopedRouteConfigs": {
+"id": "InlineScopedRouteConfigs",
+"properties": {
+"lastUpdated": {
+"description": "The timestamp when the scoped route config set was last updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"name": {
+"description": "The name assigned to the scoped route configurations.",
+"type": "string"
+},
+"scopedRouteConfigs": {
+"description": "The scoped route configurations.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListMatcher": {
+"description": "Specifies the way to match a list value.",
+"id": "ListMatcher",
+"properties": {
+"oneOf": {
+"$ref": "ValueMatcher",
+"description": "If specified, at least one of the values in the list must match the value specified."
+}
+},
+"type": "object"
+},
+"ListenersConfigDump": {
+"description": "Envoy's listener manager fills this message with all currently known listeners. Listener configuration information can be used to recreate an Envoy configuration by populating all listeners as static listeners or by returning them in a LDS response.",
+"id": "ListenersConfigDump",
+"properties": {
+"dynamicListeners": {
+"description": "State for any warming, active, or draining listeners.",
+"items": {
+"$ref": "DynamicListener"
+},
+"type": "array"
+},
+"staticListeners": {
+"description": "The statically loaded listener configs.",
+"items": {
+"$ref": "StaticListener"
+},
+"type": "array"
+},
+"versionInfo": {
+"description": "This is the :ref:`version_info ` in the last processed LDS discovery response. If there are only static bootstrap listeners, this field will be \"\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Locality": {
+"description": "Identifies location of where either Envoy runs or where upstream hosts run.",
+"id": "Locality",
+"properties": {
+"region": {
+"description": "Region this :ref:`zone ` belongs to.",
+"type": "string"
+},
+"subZone": {
+"description": "When used for locality of upstream hosts, this field further splits zone into smaller chunks of sub-zones so they can be load balanced independently.",
+"type": "string"
+},
+"zone": {
+"description": "Defines the local service zone where Envoy is running. Though optional, it should be set if discovery service routing is used and the discovery service exposes :ref:`zone data `, either in this message or via :option:`--service-zone`. The meaning of zone is context dependent, e.g. `Availability Zone (AZ) `_ on AWS, `Zone `_ on GCP, etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Node": {
+"description": "Identifies a specific Envoy instance. The node identifier is presented to the management server, which may use this identifier to distinguish per Envoy configuration for serving. [#next-free-field: 12]",
+"id": "Node",
+"properties": {
+"buildVersion": {
+"deprecated": true,
+"description": "This is motivated by informing a management server during canary which version of Envoy is being tested in a heterogeneous fleet. This will be set by Envoy in management server RPCs. This field is deprecated in favor of the user_agent_name and user_agent_version values.",
+"type": "string"
+},
+"clientFeatures": {
+"description": "Client feature support list. These are well known features described in the Envoy API repository for a given major version of an API. Client features use reverse DNS naming scheme, for example `com.acme.feature`. See :ref:`the list of features ` that xDS client may support.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"cluster": {
+"description": "Defines the local service cluster name where Envoy is running. Though optional, it should be set if any of the following features are used: :ref:`statsd `, :ref:`health check cluster verification `, :ref:`runtime override directory `, :ref:`user agent addition `, :ref:`HTTP global rate limiting `, :ref:`CDS `, and :ref:`HTTP tracing `, either in this message or via :option:`--service-cluster`.",
+"type": "string"
+},
+"extensions": {
+"description": "List of extensions and their versions supported by the node.",
+"items": {
+"$ref": "Extension"
+},
+"type": "array"
+},
+"id": {
+"description": "An opaque node identifier for the Envoy node. This also provides the local service node name. It should be set if any of the following features are used: :ref:`statsd `, :ref:`CDS `, and :ref:`HTTP tracing `, either in this message or via :option:`--service-node`.",
+"type": "string"
+},
+"listeningAddresses": {
+"description": "Known listening ports on the node as a generic hint to the management server for filtering :ref:`listeners ` to be returned. For example, if there is a listener bound to port 80, the list can optionally contain the SocketAddress `(0.0.0.0,80)`. The field is optional and just a hint.",
+"items": {
+"$ref": "Address"
+},
+"type": "array"
+},
+"locality": {
+"$ref": "Locality",
+"description": "Locality specifying where the Envoy instance is running."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object.",
+"type": "any"
+},
+"description": "Opaque metadata extending the node identifier. Envoy will pass this directly to the management server.",
+"type": "object"
+},
+"userAgentBuildVersion": {
+"$ref": "BuildVersion",
+"description": "Structured version of the entity requesting config."
+},
+"userAgentName": {
+"description": "Free-form string that identifies the entity requesting config. E.g. \"envoy\" or \"grpc\"",
+"type": "string"
+},
+"userAgentVersion": {
+"description": "Free-form string that identifies the version of the entity requesting config. E.g. \"1.12.2\" or \"abcd1234\", or \"SpecialEnvoyBuild\"",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NodeMatcher": {
+"description": "Specifies the way to match a Node. The match follows AND semantics.",
+"id": "NodeMatcher",
+"properties": {
+"nodeId": {
+"$ref": "StringMatcher",
+"description": "Specifies match criteria on the node id."
+},
+"nodeMetadatas": {
+"description": "Specifies match criteria on the node metadata.",
+"items": {
+"$ref": "StructMatcher"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"NullMatch": {
+"description": "NullMatch is an empty message to specify a null value.",
+"id": "NullMatch",
+"properties": {},
+"type": "object"
+},
+"PathSegment": {
+"description": "Specifies the segment in a path to retrieve value from Struct.",
+"id": "PathSegment",
+"properties": {
+"key": {
+"description": "If specified, use the key to retrieve the value in a Struct.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"PerXdsConfig": {
+"description": "Detailed config (per xDS) with status. [#next-free-field: 6]",
+"id": "PerXdsConfig",
+"properties": {
+"clusterConfig": {
+"$ref": "ClustersConfigDump"
+},
+"listenerConfig": {
+"$ref": "ListenersConfigDump"
+},
+"routeConfig": {
+"$ref": "RoutesConfigDump"
+},
+"scopedRouteConfig": {
+"$ref": "ScopedRoutesConfigDump"
+},
+"status": {
+"enum": [
+"UNKNOWN",
+"SYNCED",
+"NOT_SENT",
+"STALE",
+"ERROR"
+],
+"enumDescriptions": [
+"Status info is not available/unknown.",
+"Management server has sent the config to client and received ACK.",
+"Config is not sent.",
+"Management server has sent the config to client but hasn\u2019t received ACK/NACK.",
+"Management server has sent the config to client but received NACK."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"Pipe": {
+"id": "Pipe",
+"properties": {
+"mode": {
+"description": "The mode for the Pipe. Not applicable for abstract sockets.",
+"format": "uint32",
+"type": "integer"
+},
+"path": {
+"description": "Unix Domain Socket path. On Linux, paths starting with '@' will use the abstract namespace. The starting '@' is replaced by a null byte by Envoy. Paths starting with '@' will result in an error in environments other than Linux.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RegexMatcher": {
+"description": "A regex matcher designed for safety when used with untrusted input.",
+"id": "RegexMatcher",
+"properties": {
+"googleRe2": {
+"$ref": "GoogleRE2",
+"description": "Google's RE2 regex engine."
+},
+"regex": {
+"description": "The regex match string. The string must be supported by the configured engine.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"RoutesConfigDump": {
+"description": "Envoy's RDS implementation fills this message with all currently loaded routes, as described by their RouteConfiguration objects. Static routes that are either defined in the bootstrap configuration or defined inline while configuring listeners are separated from those configured dynamically via RDS. Route configuration information can be used to recreate an Envoy configuration by populating all routes as static routes or by returning them in RDS responses.",
+"id": "RoutesConfigDump",
+"properties": {
+"dynamicRouteConfigs": {
+"description": "The dynamically loaded route configs.",
+"items": {
+"$ref": "DynamicRouteConfig"
+},
+"type": "array"
+},
+"staticRouteConfigs": {
+"description": "The statically loaded route configs.",
+"items": {
+"$ref": "StaticRouteConfig"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ScopedRoutesConfigDump": {
+"description": "Envoy's scoped RDS implementation fills this message with all currently loaded route configuration scopes (defined via ScopedRouteConfigurationsSet protos). This message lists both the scopes defined inline with the higher order object (i.e., the HttpConnectionManager) and the dynamically obtained scopes via the SRDS API.",
+"id": "ScopedRoutesConfigDump",
+"properties": {
+"dynamicScopedRouteConfigs": {
+"description": "The dynamically loaded scoped route configs.",
+"items": {
+"$ref": "DynamicScopedRouteConfigs"
+},
+"type": "array"
+},
+"inlineScopedRouteConfigs": {
+"description": "The statically loaded scoped route configs.",
+"items": {
+"$ref": "InlineScopedRouteConfigs"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"SemanticVersion": {
+"description": "Envoy uses SemVer (https://semver.org/). Major/minor versions indicate expected behaviors and APIs, the patch version field is used only for security fixes and can be generally ignored.",
+"id": "SemanticVersion",
+"properties": {
+"majorNumber": {
+"format": "uint32",
+"type": "integer"
+},
+"minorNumber": {
+"format": "uint32",
+"type": "integer"
+},
+"patch": {
+"format": "uint32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"SocketAddress": {
+"description": "[#next-free-field: 7]",
+"id": "SocketAddress",
+"properties": {
+"address": {
+"description": "The address for this socket. :ref:`Listeners ` will bind to the address. An empty address is not allowed. Specify ``0.0.0.0`` or ``::`` to bind to any address. [#comment:TODO(zuercher) reinstate when implemented: It is possible to distinguish a Listener address via the prefix/suffix matching in :ref:`FilterChainMatch `.] When used within an upstream :ref:`BindConfig `, the address controls the source address of outbound connections. For :ref:`clusters `, the cluster type determines whether the address must be an IP (*STATIC* or *EDS* clusters) or a hostname resolved by DNS (*STRICT_DNS* or *LOGICAL_DNS* clusters). Address resolution can be customized via :ref:`resolver_name `.",
+"type": "string"
+},
+"ipv4Compat": {
+"description": "When binding to an IPv6 address above, this enables `IPv4 compatibility `_. Binding to ``::`` will allow both IPv4 and IPv6 connections, with peer IPv4 addresses mapped into IPv6 space as ``::FFFF:``.",
+"type": "boolean"
+},
+"namedPort": {
+"description": "This is only valid if :ref:`resolver_name ` is specified below and the named resolver is capable of named port resolution.",
+"type": "string"
+},
+"portValue": {
+"format": "uint32",
+"type": "integer"
+},
+"protocol": {
+"enum": [
+"TCP",
+"UDP"
+],
+"enumDescriptions": [
+"",
+""
+],
+"type": "string"
+},
+"resolverName": {
+"description": "The name of the custom resolver. This must have been registered with Envoy. If this is empty, a context dependent default applies. If the address is a concrete IP address, no resolution will occur. If address is a hostname this should be set for resolution other than DNS. Specifying a custom resolver with *STRICT_DNS* or *LOGICAL_DNS* will generate an error at runtime.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StaticCluster": {
+"description": "Describes a statically loaded cluster.",
+"id": "StaticCluster",
+"properties": {
+"cluster": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The cluster config.",
+"type": "object"
+},
+"lastUpdated": {
+"description": "The timestamp when the Cluster was last updated.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StaticListener": {
+"description": "Describes a statically loaded listener.",
+"id": "StaticListener",
+"properties": {
+"lastUpdated": {
+"description": "The timestamp when the Listener was last successfully updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"listener": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The listener config.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"StaticRouteConfig": {
+"id": "StaticRouteConfig",
+"properties": {
+"lastUpdated": {
+"description": "The timestamp when the Route was last updated.",
+"format": "google-datetime",
+"type": "string"
+},
+"routeConfig": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The route config.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"StringMatcher": {
+"description": "Specifies the way to match a string. [#next-free-field: 7]",
+"id": "StringMatcher",
+"properties": {
+"exact": {
+"description": "The input string must match exactly the string specified here. Examples: * *abc* only matches the value *abc*.",
+"type": "string"
+},
+"ignoreCase": {
+"description": "If true, indicates the exact/prefix/suffix matching should be case insensitive. This has no effect for the safe_regex match. For example, the matcher *data* will match both input string *Data* and *data* if set to true.",
+"type": "boolean"
+},
+"prefix": {
+"description": "The input string must have the prefix specified here. Note: empty prefix is not allowed, please use regex instead. Examples: * *abc* matches the value *abc.xyz*",
+"type": "string"
+},
+"regex": {
+"deprecated": true,
+"description": "The input string must match the regular expression specified here. The regex grammar is defined `here `_. Examples: * The regex ``\\d{3}`` matches the value *123* * The regex ``\\d{3}`` does not match the value *1234* * The regex ``\\d{3}`` does not match the value *123.456* .. attention:: This field has been deprecated in favor of `safe_regex` as it is not safe for use with untrusted input in all cases.",
+"type": "string"
+},
+"safeRegex": {
+"$ref": "RegexMatcher",
+"description": "The input string must match the regular expression specified here."
+},
+"suffix": {
+"description": "The input string must have the suffix specified here. Note: empty prefix is not allowed, please use regex instead. Examples: * *abc* matches the value *xyz.abc*",
+"type": "string"
+}
+},
+"type": "object"
+},
+"StructMatcher": {
+"description": "StructMatcher provides a general interface to check if a given value is matched in google.protobuf.Struct. It uses `path` to retrieve the value from the struct and then check if it's matched to the specified value. For example, for the following Struct: .. code-block:: yaml fields: a: struct_value: fields: b: struct_value: fields: c: string_value: pro t: list_value: values: - string_value: m - string_value: n The following MetadataMatcher is matched as the path [a, b, c] will retrieve a string value \"pro\" from the Metadata which is matched to the specified prefix match. .. code-block:: yaml path: - key: a - key: b - key: c value: string_match: prefix: pr The following StructMatcher is matched as the code will match one of the string values in the list at the path [a, t]. .. code-block:: yaml path: - key: a - key: t value: list_match: one_of: string_match: exact: m An example use of StructMatcher is to match metadata in envoy.v*.core.Node.",
+"id": "StructMatcher",
+"properties": {
+"path": {
+"description": "The path to retrieve the Value from the Struct.",
+"items": {
+"$ref": "PathSegment"
+},
+"type": "array"
+},
+"value": {
+"$ref": "ValueMatcher",
+"description": "The StructMatcher is matched if the value retrieved by path is matched to this value."
+}
+},
+"type": "object"
+},
+"UpdateFailureState": {
+"id": "UpdateFailureState",
+"properties": {
+"details": {
+"description": "Details about the last failed update attempt.",
+"type": "string"
+},
+"failedConfiguration": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "What the component configuration would have been if the update had succeeded.",
+"type": "object"
+},
+"lastUpdateAttempt": {
+"description": "Time of the latest failed update attempt.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ValueMatcher": {
+"description": "Specifies the way to match a ProtobufWkt::Value. Primitive values and ListValue are supported. StructValue is not supported and is always not matched. [#next-free-field: 7]",
+"id": "ValueMatcher",
+"properties": {
+"boolMatch": {
+"description": "If specified, a match occurs if and only if the target value is a bool value and is equal to this field.",
+"type": "boolean"
+},
+"doubleMatch": {
+"$ref": "DoubleMatcher",
+"description": "If specified, a match occurs if and only if the target value is a double value and is matched to this field."
+},
+"listMatch": {
+"$ref": "ListMatcher",
+"description": "If specified, a match occurs if and only if the target value is a list value and is matched to this field."
+},
+"nullMatch": {
+"$ref": "NullMatch",
+"description": "If specified, a match occurs if and only if the target value is a NullValue."
+},
+"presentMatch": {
+"description": "If specified, value match will be performed based on whether the path is referring to a valid primitive value in the metadata. If the path is referring to a non-primitive value, the result is always not matched.",
+"type": "boolean"
+},
+"stringMatch": {
+"$ref": "StringMatcher",
+"description": "If specified, a match occurs if and only if the target value is a string value and is matched to this field."
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Traffic Director API",
+"version": "v2",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/verifiedaccess.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/verifiedaccess.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..ec92cd89a12b09701282412bb1bdc1a1ce1b5a79
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/verifiedaccess.v1.json
@@ -0,0 +1,238 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/verifiedaccess": {
+"description": "Verify your enterprise credentials"
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://verifiedaccess.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "verifiedaccess",
+"description": "API for Verified Access chrome extension to provide credential verification for chrome devices connecting to an enterprise network",
+"discoveryVersion": "v1",
+"documentationLink": "https://developers.google.com/chrome/verified-access",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "verifiedaccess:v1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://verifiedaccess.mtls.googleapis.com/",
+"name": "verifiedaccess",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"challenge": {
+"methods": {
+"create": {
+"description": "CreateChallenge API",
+"flatPath": "v1/challenge",
+"httpMethod": "POST",
+"id": "verifiedaccess.challenge.create",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1/challenge",
+"request": {
+"$ref": "Empty"
+},
+"response": {
+"$ref": "Challenge"
+},
+"scopes": [
+"https://www.googleapis.com/auth/verifiedaccess"
+]
+},
+"verify": {
+"description": "VerifyChallengeResponse API",
+"flatPath": "v1/challenge:verify",
+"httpMethod": "POST",
+"id": "verifiedaccess.challenge.verify",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1/challenge:verify",
+"request": {
+"$ref": "VerifyChallengeResponseRequest"
+},
+"response": {
+"$ref": "VerifyChallengeResponseResult"
+},
+"scopes": [
+"https://www.googleapis.com/auth/verifiedaccess"
+]
+}
+}
+}
+},
+"revision": "20240702",
+"rootUrl": "https://verifiedaccess.googleapis.com/",
+"schemas": {
+"Challenge": {
+"description": "Result message for VerifiedAccess.CreateChallenge.",
+"id": "Challenge",
+"properties": {
+"alternativeChallenge": {
+"$ref": "SignedData",
+"description": "Challenge generated with the old signing key (this will only be present during key rotation)"
+},
+"challenge": {
+"$ref": "SignedData",
+"description": "Generated challenge"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"SignedData": {
+"description": "The wrapper message of any data and its signature.",
+"id": "SignedData",
+"properties": {
+"data": {
+"description": "The data to be signed.",
+"format": "byte",
+"type": "string"
+},
+"signature": {
+"description": "The signature of the data field.",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VerifyChallengeResponseRequest": {
+"description": "signed ChallengeResponse",
+"id": "VerifyChallengeResponseRequest",
+"properties": {
+"challengeResponse": {
+"$ref": "SignedData",
+"description": "The generated response to the challenge"
+},
+"expectedIdentity": {
+"description": "Service can optionally provide identity information about the device or user associated with the key. For an EMK, this value is the enrolled domain. For an EUK, this value is the user's email address. If present, this value will be checked against contents of the response, and verification will fail if there is no match.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VerifyChallengeResponseResult": {
+"description": "Result message for VerifiedAccess.VerifyChallengeResponse.",
+"id": "VerifyChallengeResponseResult",
+"properties": {
+"attestedDeviceId": {
+"description": "Attested device id (ADID) of the device, read from the verified data.",
+"type": "string"
+},
+"deviceEnrollmentId": {
+"description": "Device enrollment id is returned in this field (for the machine response only).",
+"type": "string"
+},
+"devicePermanentId": {
+"description": "Device permanent id is returned in this field (for the machine response only).",
+"type": "string"
+},
+"signedPublicKeyAndChallenge": {
+"description": "Certificate Signing Request (in the SPKAC format, base64 encoded) is returned in this field. This field will be set only if device has included CSR in its challenge response. (the option to include CSR is now available for both user and machine responses)",
+"type": "string"
+},
+"verificationOutput": {
+"deprecated": true,
+"description": "For EMCert check, device permanent id is returned here. For EUCert check, signed_public_key_and_challenge [base64 encoded] is returned if present, otherwise empty string is returned. This field is deprecated, please use device_permanent_id or signed_public_key_and_challenge fields.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Chrome Verified Access API",
+"version": "v1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/videointelligence.v1p3beta1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/videointelligence.v1p3beta1.json
new file mode 100644
index 0000000000000000000000000000000000000000..0157b960197e3e30ff1b527b7d14227c6e678bbf
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/videointelligence.v1p3beta1.json
@@ -0,0 +1,4777 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://videointelligence.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "Cloud Video Intelligence",
+"description": "Detects objects, explicit content, and scene changes in videos. It also specifies the region for annotation and transcribes speech to text. Supports both asynchronous API and streaming API.",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/video-intelligence/docs/",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "videointelligence:v1p3beta1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://videointelligence.mtls.googleapis.com/",
+"name": "videointelligence",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"videos": {
+"methods": {
+"annotate": {
+"description": "Performs asynchronous video annotation. Progress and results can be retrieved through the `google.longrunning.Operations` interface. `Operation.metadata` contains `AnnotateVideoProgress` (progress). `Operation.response` contains `AnnotateVideoResponse` (results).",
+"flatPath": "v1p3beta1/videos:annotate",
+"httpMethod": "POST",
+"id": "videointelligence.videos.annotate",
+"parameterOrder": [],
+"parameters": {},
+"path": "v1p3beta1/videos:annotate",
+"request": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_AnnotateVideoRequest"
+},
+"response": {
+"$ref": "GoogleLongrunning_Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+},
+"revision": "20240704",
+"rootUrl": "https://videointelligence.googleapis.com/",
+"schemas": {
+"GoogleCloudVideointelligenceV1_AnnotateVideoProgress": {
+"description": "Video annotation progress. Included in the `metadata` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1_AnnotateVideoProgress",
+"properties": {
+"annotationProgress": {
+"description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_AnnotateVideoResponse": {
+"description": "Video annotation response. Included in the `response` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1_AnnotateVideoResponse",
+"properties": {
+"annotationResults": {
+"description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoAnnotationResults"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_DetectedAttribute": {
+"description": "A generic detected attribute represented by name in string format.",
+"id": "GoogleCloudVideointelligenceV1_DetectedAttribute",
+"properties": {
+"confidence": {
+"description": "Detected attribute confidence. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of the attribute, for example, glasses, dark_glasses, mouth_open. A full list of supported type names will be provided in the document.",
+"type": "string"
+},
+"value": {
+"description": "Text value of the detection result. For example, the value for \"HairColor\" can be \"black\", \"blonde\", etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_DetectedLandmark": {
+"description": "A generic detected landmark represented by name in string format and a 2D location.",
+"id": "GoogleCloudVideointelligenceV1_DetectedLandmark",
+"properties": {
+"confidence": {
+"description": "The confidence score of the detected landmark. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of this landmark, for example, left_hand, right_shoulder.",
+"type": "string"
+},
+"point": {
+"$ref": "GoogleCloudVideointelligenceV1_NormalizedVertex",
+"description": "The 2D point of the detected landmark using the normalized image coordindate system. The normalized coordinates have the range from 0 to 1."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_Entity": {
+"description": "Detected entity from video analysis.",
+"id": "GoogleCloudVideointelligenceV1_Entity",
+"properties": {
+"description": {
+"description": "Textual description, e.g., `Fixed-gear bicycle`.",
+"type": "string"
+},
+"entityId": {
+"description": "Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).",
+"type": "string"
+},
+"languageCode": {
+"description": "Language code for `description` in BCP-47 format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_ExplicitContentAnnotation": {
+"description": "Explicit content annotation (based on per-frame visual signals only). If no explicit content has been detected in a frame, no annotations are present for that frame.",
+"id": "GoogleCloudVideointelligenceV1_ExplicitContentAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where explicit content was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_ExplicitContentFrame"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_ExplicitContentFrame": {
+"description": "Video frame level annotation results for explicit content.",
+"id": "GoogleCloudVideointelligenceV1_ExplicitContentFrame",
+"properties": {
+"pornographyLikelihood": {
+"description": "Likelihood of the pornography content..",
+"enum": [
+"LIKELIHOOD_UNSPECIFIED",
+"VERY_UNLIKELY",
+"UNLIKELY",
+"POSSIBLE",
+"LIKELY",
+"VERY_LIKELY"
+],
+"enumDescriptions": [
+"Unspecified likelihood.",
+"Very unlikely.",
+"Unlikely.",
+"Possible.",
+"Likely.",
+"Very likely."
+],
+"type": "string"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_FaceAnnotation": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1_FaceAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_FaceFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_FaceSegment"
+},
+"type": "array"
+},
+"thumbnail": {
+"description": "Thumbnail of a representative face view (in JPEG format).",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_FaceDetectionAnnotation": {
+"description": "Face detection annotation.",
+"id": "GoogleCloudVideointelligenceV1_FaceDetectionAnnotation",
+"properties": {
+"thumbnail": {
+"description": "The thumbnail of a person's face.",
+"format": "byte",
+"type": "string"
+},
+"tracks": {
+"description": "The face tracks with attributes.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_FaceFrame": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1_FaceFrame",
+"properties": {
+"normalizedBoundingBoxes": {
+"description": "Normalized Bounding boxes in a frame. There can be more than one boxes if the same face is detected in multiple locations within the current frame.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_NormalizedBoundingBox"
+},
+"type": "array"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_FaceSegment": {
+"description": "Video segment level annotation results for face detection.",
+"id": "GoogleCloudVideointelligenceV1_FaceSegment",
+"properties": {
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
+"description": "Video segment where a face was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_LabelAnnotation": {
+"description": "Label annotation.",
+"id": "GoogleCloudVideointelligenceV1_LabelAnnotation",
+"properties": {
+"categoryEntities": {
+"description": "Common categories for the detected entity. For example, when the label is `Terrier`, the category is likely `dog`. And in some cases there might be more than one categories e.g., `Terrier` could also be a `pet`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_Entity"
+},
+"type": "array"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1_Entity",
+"description": "Detected entity."
+},
+"frames": {
+"description": "All video frames where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_LabelFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_LabelSegment"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_LabelFrame": {
+"description": "Video frame level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1_LabelFrame",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_LabelSegment": {
+"description": "Video segment level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1_LabelSegment",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
+"description": "Video segment where a label was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_LogoRecognitionAnnotation": {
+"description": "Annotation corresponding to one detected, tracked and recognized logo class.",
+"id": "GoogleCloudVideointelligenceV1_LogoRecognitionAnnotation",
+"properties": {
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1_Entity",
+"description": "Entity category information to specify the logo class that all the logo tracks within this LogoRecognitionAnnotation are recognized as."
+},
+"segments": {
+"description": "All video segments where the recognized logo appears. There might be multiple instances of the same logo class appearing in one VideoSegment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment"
+},
+"type": "array"
+},
+"tracks": {
+"description": "All logo tracks where the recognized logo appears. Each track corresponds to one logo instance appearing in consecutive frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_Track"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_NormalizedBoundingBox": {
+"description": "Normalized bounding box. The normalized vertex coordinates are relative to the original image. Range: [0, 1].",
+"id": "GoogleCloudVideointelligenceV1_NormalizedBoundingBox",
+"properties": {
+"bottom": {
+"description": "Bottom Y coordinate.",
+"format": "float",
+"type": "number"
+},
+"left": {
+"description": "Left X coordinate.",
+"format": "float",
+"type": "number"
+},
+"right": {
+"description": "Right X coordinate.",
+"format": "float",
+"type": "number"
+},
+"top": {
+"description": "Top Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_NormalizedBoundingPoly": {
+"description": "Normalized bounding polygon for text (that might not be aligned with axis). Contains list of the corner points in clockwise order starting from top-left corner. For example, for a rectangular bounding box: When the text is horizontal it might look like: 0----1 | | 3----2 When it's clockwise rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3). Note that values can be less than 0, or greater than 1 due to trignometric calculations for location of the box.",
+"id": "GoogleCloudVideointelligenceV1_NormalizedBoundingPoly",
+"properties": {
+"vertices": {
+"description": "Normalized vertices of the bounding polygon.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_NormalizedVertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_NormalizedVertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
+"id": "GoogleCloudVideointelligenceV1_NormalizedVertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "float",
+"type": "number"
+},
+"y": {
+"description": "Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_ObjectTrackingAnnotation": {
+"description": "Annotations corresponding to one tracked object.",
+"id": "GoogleCloudVideointelligenceV1_ObjectTrackingAnnotation",
+"properties": {
+"confidence": {
+"description": "Object category's labeling confidence of this track.",
+"format": "float",
+"type": "number"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1_Entity",
+"description": "Entity to specify the object category that this track is labeled as."
+},
+"frames": {
+"description": "Information corresponding to all frames where this object track appears. Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame messages in frames. Streaming mode: it can only be one ObjectTrackingFrame message in frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_ObjectTrackingFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
+"description": "Non-streaming batch mode ONLY. Each object track corresponds to one video segment where it appears."
+},
+"trackId": {
+"description": "Streaming mode ONLY. In streaming mode, we do not know the end time of a tracked object before it is completed. Hence, there is no VideoSegment info returned. Instead, we provide a unique identifiable integer track_id so that the customers can correlate the results of the ongoing ObjectTrackAnnotation of the same track_id over time.",
+"format": "int64",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_ObjectTrackingFrame": {
+"description": "Video frame level annotations for object detection and tracking. This field stores per frame location, time offset, and confidence.",
+"id": "GoogleCloudVideointelligenceV1_ObjectTrackingFrame",
+"properties": {
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1_NormalizedBoundingBox",
+"description": "The normalized bounding box location of this object track for the frame."
+},
+"timeOffset": {
+"description": "The timestamp of the frame in microseconds.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_PersonDetectionAnnotation": {
+"description": "Person detection annotation per video.",
+"id": "GoogleCloudVideointelligenceV1_PersonDetectionAnnotation",
+"properties": {
+"tracks": {
+"description": "The detected tracks of a person.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_SpeechRecognitionAlternative": {
+"description": "Alternative hypotheses (a.k.a. n-best list).",
+"id": "GoogleCloudVideointelligenceV1_SpeechRecognitionAlternative",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"transcript": {
+"description": "Transcript text representing the words that the user spoke.",
+"type": "string"
+},
+"words": {
+"description": "Output only. A list of word-specific information for each recognized word. Note: When `enable_speaker_diarization` is set to true, you will see all the words from the beginning of the audio.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_WordInfo"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_SpeechTranscription": {
+"description": "A speech recognition result corresponding to a portion of the audio.",
+"id": "GoogleCloudVideointelligenceV1_SpeechTranscription",
+"properties": {
+"alternatives": {
+"description": "May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`). These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most probable, as ranked by the recognizer.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_SpeechRecognitionAlternative"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the language in this result. This language code was detected to have the most likelihood of being spoken in the audio.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_TextAnnotation": {
+"description": "Annotations related to one detected OCR text snippet. This will contain the corresponding text, confidence value, and frame level information for each detection.",
+"id": "GoogleCloudVideointelligenceV1_TextAnnotation",
+"properties": {
+"segments": {
+"description": "All video segments where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_TextSegment"
+},
+"type": "array"
+},
+"text": {
+"description": "The detected text.",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_TextFrame": {
+"description": "Video frame level annotation results for text annotation (OCR). Contains information regarding timestamp and bounding box locations for the frames containing detected OCR text snippets.",
+"id": "GoogleCloudVideointelligenceV1_TextFrame",
+"properties": {
+"rotatedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1_NormalizedBoundingPoly",
+"description": "Bounding polygon of the detected text for this frame."
+},
+"timeOffset": {
+"description": "Timestamp of this frame.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_TextSegment": {
+"description": "Video segment level annotation results for text detection.",
+"id": "GoogleCloudVideointelligenceV1_TextSegment",
+"properties": {
+"confidence": {
+"description": "Confidence for the track of detected text. It is calculated as the highest over all frames where OCR detected text appears.",
+"format": "float",
+"type": "number"
+},
+"frames": {
+"description": "Information related to the frames where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_TextFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
+"description": "Video segment where a text snippet was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_TimestampedObject": {
+"description": "For tracking related features. An object at time_offset with attributes, and located with normalized_bounding_box.",
+"id": "GoogleCloudVideointelligenceV1_TimestampedObject",
+"properties": {
+"attributes": {
+"description": "Optional. The attributes of the object in the bounding box.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_DetectedAttribute"
+},
+"type": "array"
+},
+"landmarks": {
+"description": "Optional. The detected landmarks.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_DetectedLandmark"
+},
+"type": "array"
+},
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1_NormalizedBoundingBox",
+"description": "Normalized Bounding box in a frame, where the object is located."
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this object.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_Track": {
+"description": "A track of an object instance.",
+"id": "GoogleCloudVideointelligenceV1_Track",
+"properties": {
+"attributes": {
+"description": "Optional. Attributes in the track level.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_DetectedAttribute"
+},
+"type": "array"
+},
+"confidence": {
+"description": "Optional. The confidence score of the tracked object.",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
+"description": "Video segment of a track."
+},
+"timestampedObjects": {
+"description": "The object with timestamp and attributes per frame in the track.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_TimestampedObject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_VideoAnnotationProgress": {
+"description": "Annotation progress for a single video.",
+"id": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress",
+"properties": {
+"feature": {
+"description": "Specifies which feature is being tracked if the request contains more than one feature.",
+"enum": [
+"FEATURE_UNSPECIFIED",
+"LABEL_DETECTION",
+"SHOT_CHANGE_DETECTION",
+"EXPLICIT_CONTENT_DETECTION",
+"FACE_DETECTION",
+"SPEECH_TRANSCRIPTION",
+"TEXT_DETECTION",
+"OBJECT_TRACKING",
+"LOGO_RECOGNITION",
+"PERSON_DETECTION"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Label detection. Detect objects, such as dog or flower.",
+"Shot change detection.",
+"Explicit content detection.",
+"Human face detection.",
+"Speech transcription.",
+"OCR text detection and tracking.",
+"Object detection and tracking.",
+"Logo detection, tracking, and recognition.",
+"Person detection."
+],
+"type": "string"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"progressPercent": {
+"description": "Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.",
+"format": "int32",
+"type": "integer"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
+"description": "Specifies which segment is being tracked if the request contains more than one segment."
+},
+"startTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"updateTime": {
+"description": "Time of the most recent update.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_VideoAnnotationResults": {
+"description": "Annotation results for a single video.",
+"id": "GoogleCloudVideointelligenceV1_VideoAnnotationResults",
+"properties": {
+"error": {
+"$ref": "GoogleRpc_Status",
+"description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed and some may fail."
+},
+"explicitAnnotation": {
+"$ref": "GoogleCloudVideointelligenceV1_ExplicitContentAnnotation",
+"description": "Explicit content annotation."
+},
+"faceAnnotations": {
+"deprecated": true,
+"description": "Deprecated. Please use `face_detection_annotations` instead.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_FaceAnnotation"
+},
+"type": "array"
+},
+"faceDetectionAnnotations": {
+"description": "Face detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_FaceDetectionAnnotation"
+},
+"type": "array"
+},
+"frameLabelAnnotations": {
+"description": "Label annotations on frame level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_LabelAnnotation"
+},
+"type": "array"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"logoRecognitionAnnotations": {
+"description": "Annotations for list of logos detected, tracked and recognized in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_LogoRecognitionAnnotation"
+},
+"type": "array"
+},
+"objectAnnotations": {
+"description": "Annotations for list of objects detected and tracked in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_ObjectTrackingAnnotation"
+},
+"type": "array"
+},
+"personDetectionAnnotations": {
+"description": "Person detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_PersonDetectionAnnotation"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment",
+"description": "Video segment on which the annotation is run."
+},
+"segmentLabelAnnotations": {
+"description": "Topical label annotations on video level or user-specified segment level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_LabelAnnotation"
+},
+"type": "array"
+},
+"segmentPresenceLabelAnnotations": {
+"description": "Presence label annotations on video level or user-specified segment level. There is exactly one element for each unique label. Compared to the existing topical `segment_label_annotations`, this field presents more fine-grained, segment-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_LabelAnnotation"
+},
+"type": "array"
+},
+"shotAnnotations": {
+"description": "Shot annotations. Each shot is represented as a video segment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_VideoSegment"
+},
+"type": "array"
+},
+"shotLabelAnnotations": {
+"description": "Topical label annotations on shot level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_LabelAnnotation"
+},
+"type": "array"
+},
+"shotPresenceLabelAnnotations": {
+"description": "Presence label annotations on shot level. There is exactly one element for each unique label. Compared to the existing topical `shot_label_annotations`, this field presents more fine-grained, shot-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_LabelAnnotation"
+},
+"type": "array"
+},
+"speechTranscriptions": {
+"description": "Speech transcription.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_SpeechTranscription"
+},
+"type": "array"
+},
+"textAnnotations": {
+"description": "OCR text detection and tracking. Annotations for list of detected text snippets. Each will have list of frame information associated with it.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1_TextAnnotation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_VideoSegment": {
+"description": "Video segment.",
+"id": "GoogleCloudVideointelligenceV1_VideoSegment",
+"properties": {
+"endTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the end of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+},
+"startTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the start of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1_WordInfo": {
+"description": "Word-specific information for recognized words. Word information is only included in the response when certain request parameters are set, such as `enable_word_time_offsets`.",
+"id": "GoogleCloudVideointelligenceV1_WordInfo",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"endTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the end of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"speakerTag": {
+"description": "Output only. A distinct integer value is assigned for every speaker within the audio. This field specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to diarization_speaker_count, and is only set if speaker diarization is enabled.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"startTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the start of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"word": {
+"description": "The word corresponding to this set of information.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_AnnotateVideoProgress": {
+"description": "Video annotation progress. Included in the `metadata` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1beta2_AnnotateVideoProgress",
+"properties": {
+"annotationProgress": {
+"description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_AnnotateVideoResponse": {
+"description": "Video annotation response. Included in the `response` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1beta2_AnnotateVideoResponse",
+"properties": {
+"annotationResults": {
+"description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_DetectedAttribute": {
+"description": "A generic detected attribute represented by name in string format.",
+"id": "GoogleCloudVideointelligenceV1beta2_DetectedAttribute",
+"properties": {
+"confidence": {
+"description": "Detected attribute confidence. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of the attribute, for example, glasses, dark_glasses, mouth_open. A full list of supported type names will be provided in the document.",
+"type": "string"
+},
+"value": {
+"description": "Text value of the detection result. For example, the value for \"HairColor\" can be \"black\", \"blonde\", etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_DetectedLandmark": {
+"description": "A generic detected landmark represented by name in string format and a 2D location.",
+"id": "GoogleCloudVideointelligenceV1beta2_DetectedLandmark",
+"properties": {
+"confidence": {
+"description": "The confidence score of the detected landmark. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of this landmark, for example, left_hand, right_shoulder.",
+"type": "string"
+},
+"point": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_NormalizedVertex",
+"description": "The 2D point of the detected landmark using the normalized image coordindate system. The normalized coordinates have the range from 0 to 1."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_Entity": {
+"description": "Detected entity from video analysis.",
+"id": "GoogleCloudVideointelligenceV1beta2_Entity",
+"properties": {
+"description": {
+"description": "Textual description, e.g., `Fixed-gear bicycle`.",
+"type": "string"
+},
+"entityId": {
+"description": "Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).",
+"type": "string"
+},
+"languageCode": {
+"description": "Language code for `description` in BCP-47 format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation": {
+"description": "Explicit content annotation (based on per-frame visual signals only). If no explicit content has been detected in a frame, no annotations are present for that frame.",
+"id": "GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where explicit content was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame": {
+"description": "Video frame level annotation results for explicit content.",
+"id": "GoogleCloudVideointelligenceV1beta2_ExplicitContentFrame",
+"properties": {
+"pornographyLikelihood": {
+"description": "Likelihood of the pornography content..",
+"enum": [
+"LIKELIHOOD_UNSPECIFIED",
+"VERY_UNLIKELY",
+"UNLIKELY",
+"POSSIBLE",
+"LIKELY",
+"VERY_LIKELY"
+],
+"enumDescriptions": [
+"Unspecified likelihood.",
+"Very unlikely.",
+"Unlikely.",
+"Possible.",
+"Likely.",
+"Very likely."
+],
+"type": "string"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_FaceAnnotation": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1beta2_FaceAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_FaceFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_FaceSegment"
+},
+"type": "array"
+},
+"thumbnail": {
+"description": "Thumbnail of a representative face view (in JPEG format).",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_FaceDetectionAnnotation": {
+"description": "Face detection annotation.",
+"id": "GoogleCloudVideointelligenceV1beta2_FaceDetectionAnnotation",
+"properties": {
+"thumbnail": {
+"description": "The thumbnail of a person's face.",
+"format": "byte",
+"type": "string"
+},
+"tracks": {
+"description": "The face tracks with attributes.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_FaceFrame": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1beta2_FaceFrame",
+"properties": {
+"normalizedBoundingBoxes": {
+"description": "Normalized Bounding boxes in a frame. There can be more than one boxes if the same face is detected in multiple locations within the current frame.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_NormalizedBoundingBox"
+},
+"type": "array"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_FaceSegment": {
+"description": "Video segment level annotation results for face detection.",
+"id": "GoogleCloudVideointelligenceV1beta2_FaceSegment",
+"properties": {
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+"description": "Video segment where a face was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_LabelAnnotation": {
+"description": "Label annotation.",
+"id": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation",
+"properties": {
+"categoryEntities": {
+"description": "Common categories for the detected entity. For example, when the label is `Terrier`, the category is likely `dog`. And in some cases there might be more than one categories e.g., `Terrier` could also be a `pet`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_Entity"
+},
+"type": "array"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_Entity",
+"description": "Detected entity."
+},
+"frames": {
+"description": "All video frames where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_LabelFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_LabelSegment"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_LabelFrame": {
+"description": "Video frame level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1beta2_LabelFrame",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_LabelSegment": {
+"description": "Video segment level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1beta2_LabelSegment",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+"description": "Video segment where a label was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_LogoRecognitionAnnotation": {
+"description": "Annotation corresponding to one detected, tracked and recognized logo class.",
+"id": "GoogleCloudVideointelligenceV1beta2_LogoRecognitionAnnotation",
+"properties": {
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_Entity",
+"description": "Entity category information to specify the logo class that all the logo tracks within this LogoRecognitionAnnotation are recognized as."
+},
+"segments": {
+"description": "All video segments where the recognized logo appears. There might be multiple instances of the same logo class appearing in one VideoSegment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment"
+},
+"type": "array"
+},
+"tracks": {
+"description": "All logo tracks where the recognized logo appears. Each track corresponds to one logo instance appearing in consecutive frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_Track"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_NormalizedBoundingBox": {
+"description": "Normalized bounding box. The normalized vertex coordinates are relative to the original image. Range: [0, 1].",
+"id": "GoogleCloudVideointelligenceV1beta2_NormalizedBoundingBox",
+"properties": {
+"bottom": {
+"description": "Bottom Y coordinate.",
+"format": "float",
+"type": "number"
+},
+"left": {
+"description": "Left X coordinate.",
+"format": "float",
+"type": "number"
+},
+"right": {
+"description": "Right X coordinate.",
+"format": "float",
+"type": "number"
+},
+"top": {
+"description": "Top Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_NormalizedBoundingPoly": {
+"description": "Normalized bounding polygon for text (that might not be aligned with axis). Contains list of the corner points in clockwise order starting from top-left corner. For example, for a rectangular bounding box: When the text is horizontal it might look like: 0----1 | | 3----2 When it's clockwise rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3). Note that values can be less than 0, or greater than 1 due to trignometric calculations for location of the box.",
+"id": "GoogleCloudVideointelligenceV1beta2_NormalizedBoundingPoly",
+"properties": {
+"vertices": {
+"description": "Normalized vertices of the bounding polygon.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_NormalizedVertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_NormalizedVertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
+"id": "GoogleCloudVideointelligenceV1beta2_NormalizedVertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "float",
+"type": "number"
+},
+"y": {
+"description": "Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_ObjectTrackingAnnotation": {
+"description": "Annotations corresponding to one tracked object.",
+"id": "GoogleCloudVideointelligenceV1beta2_ObjectTrackingAnnotation",
+"properties": {
+"confidence": {
+"description": "Object category's labeling confidence of this track.",
+"format": "float",
+"type": "number"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_Entity",
+"description": "Entity to specify the object category that this track is labeled as."
+},
+"frames": {
+"description": "Information corresponding to all frames where this object track appears. Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame messages in frames. Streaming mode: it can only be one ObjectTrackingFrame message in frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_ObjectTrackingFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+"description": "Non-streaming batch mode ONLY. Each object track corresponds to one video segment where it appears."
+},
+"trackId": {
+"description": "Streaming mode ONLY. In streaming mode, we do not know the end time of a tracked object before it is completed. Hence, there is no VideoSegment info returned. Instead, we provide a unique identifiable integer track_id so that the customers can correlate the results of the ongoing ObjectTrackAnnotation of the same track_id over time.",
+"format": "int64",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_ObjectTrackingFrame": {
+"description": "Video frame level annotations for object detection and tracking. This field stores per frame location, time offset, and confidence.",
+"id": "GoogleCloudVideointelligenceV1beta2_ObjectTrackingFrame",
+"properties": {
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_NormalizedBoundingBox",
+"description": "The normalized bounding box location of this object track for the frame."
+},
+"timeOffset": {
+"description": "The timestamp of the frame in microseconds.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_PersonDetectionAnnotation": {
+"description": "Person detection annotation per video.",
+"id": "GoogleCloudVideointelligenceV1beta2_PersonDetectionAnnotation",
+"properties": {
+"tracks": {
+"description": "The detected tracks of a person.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_SpeechRecognitionAlternative": {
+"description": "Alternative hypotheses (a.k.a. n-best list).",
+"id": "GoogleCloudVideointelligenceV1beta2_SpeechRecognitionAlternative",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"transcript": {
+"description": "Transcript text representing the words that the user spoke.",
+"type": "string"
+},
+"words": {
+"description": "Output only. A list of word-specific information for each recognized word. Note: When `enable_speaker_diarization` is set to true, you will see all the words from the beginning of the audio.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_WordInfo"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_SpeechTranscription": {
+"description": "A speech recognition result corresponding to a portion of the audio.",
+"id": "GoogleCloudVideointelligenceV1beta2_SpeechTranscription",
+"properties": {
+"alternatives": {
+"description": "May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`). These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most probable, as ranked by the recognizer.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_SpeechRecognitionAlternative"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the language in this result. This language code was detected to have the most likelihood of being spoken in the audio.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_TextAnnotation": {
+"description": "Annotations related to one detected OCR text snippet. This will contain the corresponding text, confidence value, and frame level information for each detection.",
+"id": "GoogleCloudVideointelligenceV1beta2_TextAnnotation",
+"properties": {
+"segments": {
+"description": "All video segments where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_TextSegment"
+},
+"type": "array"
+},
+"text": {
+"description": "The detected text.",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_TextFrame": {
+"description": "Video frame level annotation results for text annotation (OCR). Contains information regarding timestamp and bounding box locations for the frames containing detected OCR text snippets.",
+"id": "GoogleCloudVideointelligenceV1beta2_TextFrame",
+"properties": {
+"rotatedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_NormalizedBoundingPoly",
+"description": "Bounding polygon of the detected text for this frame."
+},
+"timeOffset": {
+"description": "Timestamp of this frame.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_TextSegment": {
+"description": "Video segment level annotation results for text detection.",
+"id": "GoogleCloudVideointelligenceV1beta2_TextSegment",
+"properties": {
+"confidence": {
+"description": "Confidence for the track of detected text. It is calculated as the highest over all frames where OCR detected text appears.",
+"format": "float",
+"type": "number"
+},
+"frames": {
+"description": "Information related to the frames where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_TextFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+"description": "Video segment where a text snippet was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_TimestampedObject": {
+"description": "For tracking related features. An object at time_offset with attributes, and located with normalized_bounding_box.",
+"id": "GoogleCloudVideointelligenceV1beta2_TimestampedObject",
+"properties": {
+"attributes": {
+"description": "Optional. The attributes of the object in the bounding box.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_DetectedAttribute"
+},
+"type": "array"
+},
+"landmarks": {
+"description": "Optional. The detected landmarks.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_DetectedLandmark"
+},
+"type": "array"
+},
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_NormalizedBoundingBox",
+"description": "Normalized Bounding box in a frame, where the object is located."
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this object.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_Track": {
+"description": "A track of an object instance.",
+"id": "GoogleCloudVideointelligenceV1beta2_Track",
+"properties": {
+"attributes": {
+"description": "Optional. Attributes in the track level.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_DetectedAttribute"
+},
+"type": "array"
+},
+"confidence": {
+"description": "Optional. The confidence score of the tracked object.",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+"description": "Video segment of a track."
+},
+"timestampedObjects": {
+"description": "The object with timestamp and attributes per frame in the track.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_TimestampedObject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress": {
+"description": "Annotation progress for a single video.",
+"id": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationProgress",
+"properties": {
+"feature": {
+"description": "Specifies which feature is being tracked if the request contains more than one feature.",
+"enum": [
+"FEATURE_UNSPECIFIED",
+"LABEL_DETECTION",
+"SHOT_CHANGE_DETECTION",
+"EXPLICIT_CONTENT_DETECTION",
+"FACE_DETECTION",
+"SPEECH_TRANSCRIPTION",
+"TEXT_DETECTION",
+"OBJECT_TRACKING",
+"LOGO_RECOGNITION",
+"PERSON_DETECTION"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Label detection. Detect objects, such as dog or flower.",
+"Shot change detection.",
+"Explicit content detection.",
+"Human face detection.",
+"Speech transcription.",
+"OCR text detection and tracking.",
+"Object detection and tracking.",
+"Logo detection, tracking, and recognition.",
+"Person detection."
+],
+"type": "string"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"progressPercent": {
+"description": "Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.",
+"format": "int32",
+"type": "integer"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+"description": "Specifies which segment is being tracked if the request contains more than one segment."
+},
+"startTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"updateTime": {
+"description": "Time of the most recent update.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults": {
+"description": "Annotation results for a single video.",
+"id": "GoogleCloudVideointelligenceV1beta2_VideoAnnotationResults",
+"properties": {
+"error": {
+"$ref": "GoogleRpc_Status",
+"description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed and some may fail."
+},
+"explicitAnnotation": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_ExplicitContentAnnotation",
+"description": "Explicit content annotation."
+},
+"faceAnnotations": {
+"deprecated": true,
+"description": "Deprecated. Please use `face_detection_annotations` instead.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_FaceAnnotation"
+},
+"type": "array"
+},
+"faceDetectionAnnotations": {
+"description": "Face detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_FaceDetectionAnnotation"
+},
+"type": "array"
+},
+"frameLabelAnnotations": {
+"description": "Label annotations on frame level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
+},
+"type": "array"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"logoRecognitionAnnotations": {
+"description": "Annotations for list of logos detected, tracked and recognized in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_LogoRecognitionAnnotation"
+},
+"type": "array"
+},
+"objectAnnotations": {
+"description": "Annotations for list of objects detected and tracked in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_ObjectTrackingAnnotation"
+},
+"type": "array"
+},
+"personDetectionAnnotations": {
+"description": "Person detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_PersonDetectionAnnotation"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+"description": "Video segment on which the annotation is run."
+},
+"segmentLabelAnnotations": {
+"description": "Topical label annotations on video level or user-specified segment level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
+},
+"type": "array"
+},
+"segmentPresenceLabelAnnotations": {
+"description": "Presence label annotations on video level or user-specified segment level. There is exactly one element for each unique label. Compared to the existing topical `segment_label_annotations`, this field presents more fine-grained, segment-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
+},
+"type": "array"
+},
+"shotAnnotations": {
+"description": "Shot annotations. Each shot is represented as a video segment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_VideoSegment"
+},
+"type": "array"
+},
+"shotLabelAnnotations": {
+"description": "Topical label annotations on shot level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
+},
+"type": "array"
+},
+"shotPresenceLabelAnnotations": {
+"description": "Presence label annotations on shot level. There is exactly one element for each unique label. Compared to the existing topical `shot_label_annotations`, this field presents more fine-grained, shot-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_LabelAnnotation"
+},
+"type": "array"
+},
+"speechTranscriptions": {
+"description": "Speech transcription.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_SpeechTranscription"
+},
+"type": "array"
+},
+"textAnnotations": {
+"description": "OCR text detection and tracking. Annotations for list of detected text snippets. Each will have list of frame information associated with it.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1beta2_TextAnnotation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_VideoSegment": {
+"description": "Video segment.",
+"id": "GoogleCloudVideointelligenceV1beta2_VideoSegment",
+"properties": {
+"endTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the end of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+},
+"startTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the start of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1beta2_WordInfo": {
+"description": "Word-specific information for recognized words. Word information is only included in the response when certain request parameters are set, such as `enable_word_time_offsets`.",
+"id": "GoogleCloudVideointelligenceV1beta2_WordInfo",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"endTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the end of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"speakerTag": {
+"description": "Output only. A distinct integer value is assigned for every speaker within the audio. This field specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to diarization_speaker_count, and is only set if speaker diarization is enabled.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"startTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the start of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"word": {
+"description": "The word corresponding to this set of information.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_AnnotateVideoProgress": {
+"description": "Video annotation progress. Included in the `metadata` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_AnnotateVideoProgress",
+"properties": {
+"annotationProgress": {
+"description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoAnnotationProgress"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_AnnotateVideoResponse": {
+"description": "Video annotation response. Included in the `response` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_AnnotateVideoResponse",
+"properties": {
+"annotationResults": {
+"description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoAnnotationResults"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_DetectedAttribute": {
+"description": "A generic detected attribute represented by name in string format.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_DetectedAttribute",
+"properties": {
+"confidence": {
+"description": "Detected attribute confidence. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of the attribute, for example, glasses, dark_glasses, mouth_open. A full list of supported type names will be provided in the document.",
+"type": "string"
+},
+"value": {
+"description": "Text value of the detection result. For example, the value for \"HairColor\" can be \"black\", \"blonde\", etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_DetectedLandmark": {
+"description": "A generic detected landmark represented by name in string format and a 2D location.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_DetectedLandmark",
+"properties": {
+"confidence": {
+"description": "The confidence score of the detected landmark. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of this landmark, for example, left_hand, right_shoulder.",
+"type": "string"
+},
+"point": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_NormalizedVertex",
+"description": "The 2D point of the detected landmark using the normalized image coordindate system. The normalized coordinates have the range from 0 to 1."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_Entity": {
+"description": "Detected entity from video analysis.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_Entity",
+"properties": {
+"description": {
+"description": "Textual description, e.g., `Fixed-gear bicycle`.",
+"type": "string"
+},
+"entityId": {
+"description": "Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).",
+"type": "string"
+},
+"languageCode": {
+"description": "Language code for `description` in BCP-47 format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_ExplicitContentAnnotation": {
+"description": "Explicit content annotation (based on per-frame visual signals only). If no explicit content has been detected in a frame, no annotations are present for that frame.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_ExplicitContentAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where explicit content was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_ExplicitContentFrame"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_ExplicitContentFrame": {
+"description": "Video frame level annotation results for explicit content.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_ExplicitContentFrame",
+"properties": {
+"pornographyLikelihood": {
+"description": "Likelihood of the pornography content..",
+"enum": [
+"LIKELIHOOD_UNSPECIFIED",
+"VERY_UNLIKELY",
+"UNLIKELY",
+"POSSIBLE",
+"LIKELY",
+"VERY_LIKELY"
+],
+"enumDescriptions": [
+"Unspecified likelihood.",
+"Very unlikely.",
+"Unlikely.",
+"Possible.",
+"Likely.",
+"Very likely."
+],
+"type": "string"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_FaceAnnotation": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_FaceAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_FaceFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_FaceSegment"
+},
+"type": "array"
+},
+"thumbnail": {
+"description": "Thumbnail of a representative face view (in JPEG format).",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_FaceDetectionAnnotation": {
+"description": "Face detection annotation.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_FaceDetectionAnnotation",
+"properties": {
+"thumbnail": {
+"description": "The thumbnail of a person's face.",
+"format": "byte",
+"type": "string"
+},
+"tracks": {
+"description": "The face tracks with attributes.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_FaceFrame": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_FaceFrame",
+"properties": {
+"normalizedBoundingBoxes": {
+"description": "Normalized Bounding boxes in a frame. There can be more than one boxes if the same face is detected in multiple locations within the current frame.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_NormalizedBoundingBox"
+},
+"type": "array"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_FaceSegment": {
+"description": "Video segment level annotation results for face detection.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_FaceSegment",
+"properties": {
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment",
+"description": "Video segment where a face was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_LabelAnnotation": {
+"description": "Label annotation.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_LabelAnnotation",
+"properties": {
+"categoryEntities": {
+"description": "Common categories for the detected entity. For example, when the label is `Terrier`, the category is likely `dog`. And in some cases there might be more than one categories e.g., `Terrier` could also be a `pet`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_Entity"
+},
+"type": "array"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_Entity",
+"description": "Detected entity."
+},
+"frames": {
+"description": "All video frames where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_LabelFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_LabelSegment"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_LabelFrame": {
+"description": "Video frame level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_LabelFrame",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_LabelSegment": {
+"description": "Video segment level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_LabelSegment",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment",
+"description": "Video segment where a label was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_LogoRecognitionAnnotation": {
+"description": "Annotation corresponding to one detected, tracked and recognized logo class.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_LogoRecognitionAnnotation",
+"properties": {
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_Entity",
+"description": "Entity category information to specify the logo class that all the logo tracks within this LogoRecognitionAnnotation are recognized as."
+},
+"segments": {
+"description": "All video segments where the recognized logo appears. There might be multiple instances of the same logo class appearing in one VideoSegment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment"
+},
+"type": "array"
+},
+"tracks": {
+"description": "All logo tracks where the recognized logo appears. Each track corresponds to one logo instance appearing in consecutive frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_Track"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_NormalizedBoundingBox": {
+"description": "Normalized bounding box. The normalized vertex coordinates are relative to the original image. Range: [0, 1].",
+"id": "GoogleCloudVideointelligenceV1p1beta1_NormalizedBoundingBox",
+"properties": {
+"bottom": {
+"description": "Bottom Y coordinate.",
+"format": "float",
+"type": "number"
+},
+"left": {
+"description": "Left X coordinate.",
+"format": "float",
+"type": "number"
+},
+"right": {
+"description": "Right X coordinate.",
+"format": "float",
+"type": "number"
+},
+"top": {
+"description": "Top Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_NormalizedBoundingPoly": {
+"description": "Normalized bounding polygon for text (that might not be aligned with axis). Contains list of the corner points in clockwise order starting from top-left corner. For example, for a rectangular bounding box: When the text is horizontal it might look like: 0----1 | | 3----2 When it's clockwise rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3). Note that values can be less than 0, or greater than 1 due to trignometric calculations for location of the box.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_NormalizedBoundingPoly",
+"properties": {
+"vertices": {
+"description": "Normalized vertices of the bounding polygon.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_NormalizedVertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_NormalizedVertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_NormalizedVertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "float",
+"type": "number"
+},
+"y": {
+"description": "Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_ObjectTrackingAnnotation": {
+"description": "Annotations corresponding to one tracked object.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_ObjectTrackingAnnotation",
+"properties": {
+"confidence": {
+"description": "Object category's labeling confidence of this track.",
+"format": "float",
+"type": "number"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_Entity",
+"description": "Entity to specify the object category that this track is labeled as."
+},
+"frames": {
+"description": "Information corresponding to all frames where this object track appears. Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame messages in frames. Streaming mode: it can only be one ObjectTrackingFrame message in frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_ObjectTrackingFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment",
+"description": "Non-streaming batch mode ONLY. Each object track corresponds to one video segment where it appears."
+},
+"trackId": {
+"description": "Streaming mode ONLY. In streaming mode, we do not know the end time of a tracked object before it is completed. Hence, there is no VideoSegment info returned. Instead, we provide a unique identifiable integer track_id so that the customers can correlate the results of the ongoing ObjectTrackAnnotation of the same track_id over time.",
+"format": "int64",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_ObjectTrackingFrame": {
+"description": "Video frame level annotations for object detection and tracking. This field stores per frame location, time offset, and confidence.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_ObjectTrackingFrame",
+"properties": {
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_NormalizedBoundingBox",
+"description": "The normalized bounding box location of this object track for the frame."
+},
+"timeOffset": {
+"description": "The timestamp of the frame in microseconds.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_PersonDetectionAnnotation": {
+"description": "Person detection annotation per video.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_PersonDetectionAnnotation",
+"properties": {
+"tracks": {
+"description": "The detected tracks of a person.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_SpeechRecognitionAlternative": {
+"description": "Alternative hypotheses (a.k.a. n-best list).",
+"id": "GoogleCloudVideointelligenceV1p1beta1_SpeechRecognitionAlternative",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"transcript": {
+"description": "Transcript text representing the words that the user spoke.",
+"type": "string"
+},
+"words": {
+"description": "Output only. A list of word-specific information for each recognized word. Note: When `enable_speaker_diarization` is set to true, you will see all the words from the beginning of the audio.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_WordInfo"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_SpeechTranscription": {
+"description": "A speech recognition result corresponding to a portion of the audio.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_SpeechTranscription",
+"properties": {
+"alternatives": {
+"description": "May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`). These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most probable, as ranked by the recognizer.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_SpeechRecognitionAlternative"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the language in this result. This language code was detected to have the most likelihood of being spoken in the audio.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_TextAnnotation": {
+"description": "Annotations related to one detected OCR text snippet. This will contain the corresponding text, confidence value, and frame level information for each detection.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_TextAnnotation",
+"properties": {
+"segments": {
+"description": "All video segments where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_TextSegment"
+},
+"type": "array"
+},
+"text": {
+"description": "The detected text.",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_TextFrame": {
+"description": "Video frame level annotation results for text annotation (OCR). Contains information regarding timestamp and bounding box locations for the frames containing detected OCR text snippets.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_TextFrame",
+"properties": {
+"rotatedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_NormalizedBoundingPoly",
+"description": "Bounding polygon of the detected text for this frame."
+},
+"timeOffset": {
+"description": "Timestamp of this frame.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_TextSegment": {
+"description": "Video segment level annotation results for text detection.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_TextSegment",
+"properties": {
+"confidence": {
+"description": "Confidence for the track of detected text. It is calculated as the highest over all frames where OCR detected text appears.",
+"format": "float",
+"type": "number"
+},
+"frames": {
+"description": "Information related to the frames where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_TextFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment",
+"description": "Video segment where a text snippet was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_TimestampedObject": {
+"description": "For tracking related features. An object at time_offset with attributes, and located with normalized_bounding_box.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_TimestampedObject",
+"properties": {
+"attributes": {
+"description": "Optional. The attributes of the object in the bounding box.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_DetectedAttribute"
+},
+"type": "array"
+},
+"landmarks": {
+"description": "Optional. The detected landmarks.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_DetectedLandmark"
+},
+"type": "array"
+},
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_NormalizedBoundingBox",
+"description": "Normalized Bounding box in a frame, where the object is located."
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this object.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_Track": {
+"description": "A track of an object instance.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_Track",
+"properties": {
+"attributes": {
+"description": "Optional. Attributes in the track level.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_DetectedAttribute"
+},
+"type": "array"
+},
+"confidence": {
+"description": "Optional. The confidence score of the tracked object.",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment",
+"description": "Video segment of a track."
+},
+"timestampedObjects": {
+"description": "The object with timestamp and attributes per frame in the track.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_TimestampedObject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_VideoAnnotationProgress": {
+"description": "Annotation progress for a single video.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_VideoAnnotationProgress",
+"properties": {
+"feature": {
+"description": "Specifies which feature is being tracked if the request contains more than one feature.",
+"enum": [
+"FEATURE_UNSPECIFIED",
+"LABEL_DETECTION",
+"SHOT_CHANGE_DETECTION",
+"EXPLICIT_CONTENT_DETECTION",
+"FACE_DETECTION",
+"SPEECH_TRANSCRIPTION",
+"TEXT_DETECTION",
+"OBJECT_TRACKING",
+"LOGO_RECOGNITION",
+"PERSON_DETECTION"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Label detection. Detect objects, such as dog or flower.",
+"Shot change detection.",
+"Explicit content detection.",
+"Human face detection.",
+"Speech transcription.",
+"OCR text detection and tracking.",
+"Object detection and tracking.",
+"Logo detection, tracking, and recognition.",
+"Person detection."
+],
+"type": "string"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"progressPercent": {
+"description": "Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.",
+"format": "int32",
+"type": "integer"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment",
+"description": "Specifies which segment is being tracked if the request contains more than one segment."
+},
+"startTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"updateTime": {
+"description": "Time of the most recent update.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_VideoAnnotationResults": {
+"description": "Annotation results for a single video.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_VideoAnnotationResults",
+"properties": {
+"error": {
+"$ref": "GoogleRpc_Status",
+"description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed and some may fail."
+},
+"explicitAnnotation": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_ExplicitContentAnnotation",
+"description": "Explicit content annotation."
+},
+"faceAnnotations": {
+"deprecated": true,
+"description": "Deprecated. Please use `face_detection_annotations` instead.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_FaceAnnotation"
+},
+"type": "array"
+},
+"faceDetectionAnnotations": {
+"description": "Face detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_FaceDetectionAnnotation"
+},
+"type": "array"
+},
+"frameLabelAnnotations": {
+"description": "Label annotations on frame level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"logoRecognitionAnnotations": {
+"description": "Annotations for list of logos detected, tracked and recognized in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_LogoRecognitionAnnotation"
+},
+"type": "array"
+},
+"objectAnnotations": {
+"description": "Annotations for list of objects detected and tracked in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_ObjectTrackingAnnotation"
+},
+"type": "array"
+},
+"personDetectionAnnotations": {
+"description": "Person detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_PersonDetectionAnnotation"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment",
+"description": "Video segment on which the annotation is run."
+},
+"segmentLabelAnnotations": {
+"description": "Topical label annotations on video level or user-specified segment level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"segmentPresenceLabelAnnotations": {
+"description": "Presence label annotations on video level or user-specified segment level. There is exactly one element for each unique label. Compared to the existing topical `segment_label_annotations`, this field presents more fine-grained, segment-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"shotAnnotations": {
+"description": "Shot annotations. Each shot is represented as a video segment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment"
+},
+"type": "array"
+},
+"shotLabelAnnotations": {
+"description": "Topical label annotations on shot level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"shotPresenceLabelAnnotations": {
+"description": "Presence label annotations on shot level. There is exactly one element for each unique label. Compared to the existing topical `shot_label_annotations`, this field presents more fine-grained, shot-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"speechTranscriptions": {
+"description": "Speech transcription.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_SpeechTranscription"
+},
+"type": "array"
+},
+"textAnnotations": {
+"description": "OCR text detection and tracking. Annotations for list of detected text snippets. Each will have list of frame information associated with it.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p1beta1_TextAnnotation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_VideoSegment": {
+"description": "Video segment.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_VideoSegment",
+"properties": {
+"endTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the end of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+},
+"startTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the start of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p1beta1_WordInfo": {
+"description": "Word-specific information for recognized words. Word information is only included in the response when certain request parameters are set, such as `enable_word_time_offsets`.",
+"id": "GoogleCloudVideointelligenceV1p1beta1_WordInfo",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"endTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the end of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"speakerTag": {
+"description": "Output only. A distinct integer value is assigned for every speaker within the audio. This field specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to diarization_speaker_count, and is only set if speaker diarization is enabled.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"startTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the start of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"word": {
+"description": "The word corresponding to this set of information.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_AnnotateVideoProgress": {
+"description": "Video annotation progress. Included in the `metadata` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_AnnotateVideoProgress",
+"properties": {
+"annotationProgress": {
+"description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoAnnotationProgress"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_AnnotateVideoResponse": {
+"description": "Video annotation response. Included in the `response` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_AnnotateVideoResponse",
+"properties": {
+"annotationResults": {
+"description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoAnnotationResults"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_DetectedAttribute": {
+"description": "A generic detected attribute represented by name in string format.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_DetectedAttribute",
+"properties": {
+"confidence": {
+"description": "Detected attribute confidence. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of the attribute, for example, glasses, dark_glasses, mouth_open. A full list of supported type names will be provided in the document.",
+"type": "string"
+},
+"value": {
+"description": "Text value of the detection result. For example, the value for \"HairColor\" can be \"black\", \"blonde\", etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_DetectedLandmark": {
+"description": "A generic detected landmark represented by name in string format and a 2D location.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_DetectedLandmark",
+"properties": {
+"confidence": {
+"description": "The confidence score of the detected landmark. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of this landmark, for example, left_hand, right_shoulder.",
+"type": "string"
+},
+"point": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_NormalizedVertex",
+"description": "The 2D point of the detected landmark using the normalized image coordindate system. The normalized coordinates have the range from 0 to 1."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_Entity": {
+"description": "Detected entity from video analysis.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_Entity",
+"properties": {
+"description": {
+"description": "Textual description, e.g., `Fixed-gear bicycle`.",
+"type": "string"
+},
+"entityId": {
+"description": "Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).",
+"type": "string"
+},
+"languageCode": {
+"description": "Language code for `description` in BCP-47 format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_ExplicitContentAnnotation": {
+"description": "Explicit content annotation (based on per-frame visual signals only). If no explicit content has been detected in a frame, no annotations are present for that frame.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_ExplicitContentAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where explicit content was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_ExplicitContentFrame"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_ExplicitContentFrame": {
+"description": "Video frame level annotation results for explicit content.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_ExplicitContentFrame",
+"properties": {
+"pornographyLikelihood": {
+"description": "Likelihood of the pornography content..",
+"enum": [
+"LIKELIHOOD_UNSPECIFIED",
+"VERY_UNLIKELY",
+"UNLIKELY",
+"POSSIBLE",
+"LIKELY",
+"VERY_LIKELY"
+],
+"enumDescriptions": [
+"Unspecified likelihood.",
+"Very unlikely.",
+"Unlikely.",
+"Possible.",
+"Likely.",
+"Very likely."
+],
+"type": "string"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_FaceAnnotation": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_FaceAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_FaceFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_FaceSegment"
+},
+"type": "array"
+},
+"thumbnail": {
+"description": "Thumbnail of a representative face view (in JPEG format).",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_FaceDetectionAnnotation": {
+"description": "Face detection annotation.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_FaceDetectionAnnotation",
+"properties": {
+"thumbnail": {
+"description": "The thumbnail of a person's face.",
+"format": "byte",
+"type": "string"
+},
+"tracks": {
+"description": "The face tracks with attributes.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_FaceFrame": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_FaceFrame",
+"properties": {
+"normalizedBoundingBoxes": {
+"description": "Normalized Bounding boxes in a frame. There can be more than one boxes if the same face is detected in multiple locations within the current frame.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_NormalizedBoundingBox"
+},
+"type": "array"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_FaceSegment": {
+"description": "Video segment level annotation results for face detection.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_FaceSegment",
+"properties": {
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment",
+"description": "Video segment where a face was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_LabelAnnotation": {
+"description": "Label annotation.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_LabelAnnotation",
+"properties": {
+"categoryEntities": {
+"description": "Common categories for the detected entity. For example, when the label is `Terrier`, the category is likely `dog`. And in some cases there might be more than one categories e.g., `Terrier` could also be a `pet`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_Entity"
+},
+"type": "array"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_Entity",
+"description": "Detected entity."
+},
+"frames": {
+"description": "All video frames where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_LabelFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_LabelSegment"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_LabelFrame": {
+"description": "Video frame level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_LabelFrame",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_LabelSegment": {
+"description": "Video segment level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_LabelSegment",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment",
+"description": "Video segment where a label was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_LogoRecognitionAnnotation": {
+"description": "Annotation corresponding to one detected, tracked and recognized logo class.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_LogoRecognitionAnnotation",
+"properties": {
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_Entity",
+"description": "Entity category information to specify the logo class that all the logo tracks within this LogoRecognitionAnnotation are recognized as."
+},
+"segments": {
+"description": "All video segments where the recognized logo appears. There might be multiple instances of the same logo class appearing in one VideoSegment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment"
+},
+"type": "array"
+},
+"tracks": {
+"description": "All logo tracks where the recognized logo appears. Each track corresponds to one logo instance appearing in consecutive frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_Track"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_NormalizedBoundingBox": {
+"description": "Normalized bounding box. The normalized vertex coordinates are relative to the original image. Range: [0, 1].",
+"id": "GoogleCloudVideointelligenceV1p2beta1_NormalizedBoundingBox",
+"properties": {
+"bottom": {
+"description": "Bottom Y coordinate.",
+"format": "float",
+"type": "number"
+},
+"left": {
+"description": "Left X coordinate.",
+"format": "float",
+"type": "number"
+},
+"right": {
+"description": "Right X coordinate.",
+"format": "float",
+"type": "number"
+},
+"top": {
+"description": "Top Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_NormalizedBoundingPoly": {
+"description": "Normalized bounding polygon for text (that might not be aligned with axis). Contains list of the corner points in clockwise order starting from top-left corner. For example, for a rectangular bounding box: When the text is horizontal it might look like: 0----1 | | 3----2 When it's clockwise rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3). Note that values can be less than 0, or greater than 1 due to trignometric calculations for location of the box.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_NormalizedBoundingPoly",
+"properties": {
+"vertices": {
+"description": "Normalized vertices of the bounding polygon.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_NormalizedVertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_NormalizedVertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_NormalizedVertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "float",
+"type": "number"
+},
+"y": {
+"description": "Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_ObjectTrackingAnnotation": {
+"description": "Annotations corresponding to one tracked object.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_ObjectTrackingAnnotation",
+"properties": {
+"confidence": {
+"description": "Object category's labeling confidence of this track.",
+"format": "float",
+"type": "number"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_Entity",
+"description": "Entity to specify the object category that this track is labeled as."
+},
+"frames": {
+"description": "Information corresponding to all frames where this object track appears. Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame messages in frames. Streaming mode: it can only be one ObjectTrackingFrame message in frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_ObjectTrackingFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment",
+"description": "Non-streaming batch mode ONLY. Each object track corresponds to one video segment where it appears."
+},
+"trackId": {
+"description": "Streaming mode ONLY. In streaming mode, we do not know the end time of a tracked object before it is completed. Hence, there is no VideoSegment info returned. Instead, we provide a unique identifiable integer track_id so that the customers can correlate the results of the ongoing ObjectTrackAnnotation of the same track_id over time.",
+"format": "int64",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_ObjectTrackingFrame": {
+"description": "Video frame level annotations for object detection and tracking. This field stores per frame location, time offset, and confidence.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_ObjectTrackingFrame",
+"properties": {
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_NormalizedBoundingBox",
+"description": "The normalized bounding box location of this object track for the frame."
+},
+"timeOffset": {
+"description": "The timestamp of the frame in microseconds.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_PersonDetectionAnnotation": {
+"description": "Person detection annotation per video.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_PersonDetectionAnnotation",
+"properties": {
+"tracks": {
+"description": "The detected tracks of a person.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_SpeechRecognitionAlternative": {
+"description": "Alternative hypotheses (a.k.a. n-best list).",
+"id": "GoogleCloudVideointelligenceV1p2beta1_SpeechRecognitionAlternative",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"transcript": {
+"description": "Transcript text representing the words that the user spoke.",
+"type": "string"
+},
+"words": {
+"description": "Output only. A list of word-specific information for each recognized word. Note: When `enable_speaker_diarization` is set to true, you will see all the words from the beginning of the audio.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_WordInfo"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_SpeechTranscription": {
+"description": "A speech recognition result corresponding to a portion of the audio.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_SpeechTranscription",
+"properties": {
+"alternatives": {
+"description": "May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`). These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most probable, as ranked by the recognizer.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_SpeechRecognitionAlternative"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the language in this result. This language code was detected to have the most likelihood of being spoken in the audio.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_TextAnnotation": {
+"description": "Annotations related to one detected OCR text snippet. This will contain the corresponding text, confidence value, and frame level information for each detection.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_TextAnnotation",
+"properties": {
+"segments": {
+"description": "All video segments where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_TextSegment"
+},
+"type": "array"
+},
+"text": {
+"description": "The detected text.",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_TextFrame": {
+"description": "Video frame level annotation results for text annotation (OCR). Contains information regarding timestamp and bounding box locations for the frames containing detected OCR text snippets.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_TextFrame",
+"properties": {
+"rotatedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_NormalizedBoundingPoly",
+"description": "Bounding polygon of the detected text for this frame."
+},
+"timeOffset": {
+"description": "Timestamp of this frame.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_TextSegment": {
+"description": "Video segment level annotation results for text detection.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_TextSegment",
+"properties": {
+"confidence": {
+"description": "Confidence for the track of detected text. It is calculated as the highest over all frames where OCR detected text appears.",
+"format": "float",
+"type": "number"
+},
+"frames": {
+"description": "Information related to the frames where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_TextFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment",
+"description": "Video segment where a text snippet was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_TimestampedObject": {
+"description": "For tracking related features. An object at time_offset with attributes, and located with normalized_bounding_box.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_TimestampedObject",
+"properties": {
+"attributes": {
+"description": "Optional. The attributes of the object in the bounding box.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_DetectedAttribute"
+},
+"type": "array"
+},
+"landmarks": {
+"description": "Optional. The detected landmarks.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_DetectedLandmark"
+},
+"type": "array"
+},
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_NormalizedBoundingBox",
+"description": "Normalized Bounding box in a frame, where the object is located."
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this object.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_Track": {
+"description": "A track of an object instance.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_Track",
+"properties": {
+"attributes": {
+"description": "Optional. Attributes in the track level.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_DetectedAttribute"
+},
+"type": "array"
+},
+"confidence": {
+"description": "Optional. The confidence score of the tracked object.",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment",
+"description": "Video segment of a track."
+},
+"timestampedObjects": {
+"description": "The object with timestamp and attributes per frame in the track.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_TimestampedObject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_VideoAnnotationProgress": {
+"description": "Annotation progress for a single video.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_VideoAnnotationProgress",
+"properties": {
+"feature": {
+"description": "Specifies which feature is being tracked if the request contains more than one feature.",
+"enum": [
+"FEATURE_UNSPECIFIED",
+"LABEL_DETECTION",
+"SHOT_CHANGE_DETECTION",
+"EXPLICIT_CONTENT_DETECTION",
+"FACE_DETECTION",
+"SPEECH_TRANSCRIPTION",
+"TEXT_DETECTION",
+"OBJECT_TRACKING",
+"LOGO_RECOGNITION",
+"PERSON_DETECTION"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Label detection. Detect objects, such as dog or flower.",
+"Shot change detection.",
+"Explicit content detection.",
+"Human face detection.",
+"Speech transcription.",
+"OCR text detection and tracking.",
+"Object detection and tracking.",
+"Logo detection, tracking, and recognition.",
+"Person detection."
+],
+"type": "string"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"progressPercent": {
+"description": "Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.",
+"format": "int32",
+"type": "integer"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment",
+"description": "Specifies which segment is being tracked if the request contains more than one segment."
+},
+"startTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"updateTime": {
+"description": "Time of the most recent update.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_VideoAnnotationResults": {
+"description": "Annotation results for a single video.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_VideoAnnotationResults",
+"properties": {
+"error": {
+"$ref": "GoogleRpc_Status",
+"description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed and some may fail."
+},
+"explicitAnnotation": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_ExplicitContentAnnotation",
+"description": "Explicit content annotation."
+},
+"faceAnnotations": {
+"deprecated": true,
+"description": "Deprecated. Please use `face_detection_annotations` instead.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_FaceAnnotation"
+},
+"type": "array"
+},
+"faceDetectionAnnotations": {
+"description": "Face detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_FaceDetectionAnnotation"
+},
+"type": "array"
+},
+"frameLabelAnnotations": {
+"description": "Label annotations on frame level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"logoRecognitionAnnotations": {
+"description": "Annotations for list of logos detected, tracked and recognized in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_LogoRecognitionAnnotation"
+},
+"type": "array"
+},
+"objectAnnotations": {
+"description": "Annotations for list of objects detected and tracked in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_ObjectTrackingAnnotation"
+},
+"type": "array"
+},
+"personDetectionAnnotations": {
+"description": "Person detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_PersonDetectionAnnotation"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment",
+"description": "Video segment on which the annotation is run."
+},
+"segmentLabelAnnotations": {
+"description": "Topical label annotations on video level or user-specified segment level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"segmentPresenceLabelAnnotations": {
+"description": "Presence label annotations on video level or user-specified segment level. There is exactly one element for each unique label. Compared to the existing topical `segment_label_annotations`, this field presents more fine-grained, segment-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"shotAnnotations": {
+"description": "Shot annotations. Each shot is represented as a video segment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment"
+},
+"type": "array"
+},
+"shotLabelAnnotations": {
+"description": "Topical label annotations on shot level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"shotPresenceLabelAnnotations": {
+"description": "Presence label annotations on shot level. There is exactly one element for each unique label. Compared to the existing topical `shot_label_annotations`, this field presents more fine-grained, shot-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"speechTranscriptions": {
+"description": "Speech transcription.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_SpeechTranscription"
+},
+"type": "array"
+},
+"textAnnotations": {
+"description": "OCR text detection and tracking. Annotations for list of detected text snippets. Each will have list of frame information associated with it.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p2beta1_TextAnnotation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_VideoSegment": {
+"description": "Video segment.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_VideoSegment",
+"properties": {
+"endTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the end of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+},
+"startTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the start of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p2beta1_WordInfo": {
+"description": "Word-specific information for recognized words. Word information is only included in the response when certain request parameters are set, such as `enable_word_time_offsets`.",
+"id": "GoogleCloudVideointelligenceV1p2beta1_WordInfo",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"endTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the end of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"speakerTag": {
+"description": "Output only. A distinct integer value is assigned for every speaker within the audio. This field specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to diarization_speaker_count, and is only set if speaker diarization is enabled.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"startTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the start of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"word": {
+"description": "The word corresponding to this set of information.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_AnnotateVideoProgress": {
+"description": "Video annotation progress. Included in the `metadata` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_AnnotateVideoProgress",
+"properties": {
+"annotationProgress": {
+"description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoAnnotationProgress"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_AnnotateVideoRequest": {
+"description": "Video annotation request.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_AnnotateVideoRequest",
+"properties": {
+"features": {
+"description": "Required. Requested video annotation features.",
+"items": {
+"enum": [
+"FEATURE_UNSPECIFIED",
+"LABEL_DETECTION",
+"SHOT_CHANGE_DETECTION",
+"EXPLICIT_CONTENT_DETECTION",
+"FACE_DETECTION",
+"SPEECH_TRANSCRIPTION",
+"TEXT_DETECTION",
+"OBJECT_TRACKING",
+"LOGO_RECOGNITION",
+"CELEBRITY_RECOGNITION",
+"PERSON_DETECTION"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Label detection. Detect objects, such as dog or flower.",
+"Shot change detection.",
+"Explicit content detection.",
+"Human face detection.",
+"Speech transcription.",
+"OCR text detection and tracking.",
+"Object detection and tracking.",
+"Logo detection, tracking, and recognition.",
+"Celebrity recognition.",
+"Person detection."
+],
+"type": "string"
+},
+"type": "array"
+},
+"inputContent": {
+"description": "The video data bytes. If unset, the input video(s) should be specified via the `input_uri`. If set, `input_uri` must be unset.",
+"format": "byte",
+"type": "string"
+},
+"inputUri": {
+"description": "Input video location. Currently, only [Cloud Storage](https://cloud.google.com/storage/) URIs are supported. URIs must be specified in the following format: `gs://bucket-id/object-id` (other URI formats return google.rpc.Code.INVALID_ARGUMENT). For more information, see [Request URIs](https://cloud.google.com/storage/docs/request-endpoints). To identify multiple videos, a video URI may include wildcards in the `object-id`. Supported wildcards: '*' to match 0 or more characters; '?' to match 1 character. If unset, the input video should be embedded in the request as `input_content`. If set, `input_content` must be unset.",
+"type": "string"
+},
+"locationId": {
+"description": "Optional. Cloud region where annotation should take place. Supported cloud regions are: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region is specified, the region will be determined based on video file location.",
+"type": "string"
+},
+"outputUri": {
+"description": "Optional. Location where the output (in JSON format) should be stored. Currently, only [Cloud Storage](https://cloud.google.com/storage/) URIs are supported. These must be specified in the following format: `gs://bucket-id/object-id` (other URI formats return google.rpc.Code.INVALID_ARGUMENT). For more information, see [Request URIs](https://cloud.google.com/storage/docs/request-endpoints).",
+"type": "string"
+},
+"videoContext": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoContext",
+"description": "Additional video context and/or feature-specific parameters."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_AnnotateVideoResponse": {
+"description": "Video annotation response. Included in the `response` field of the `Operation` returned by the `GetOperation` call of the `google::longrunning::Operations` service.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_AnnotateVideoResponse",
+"properties": {
+"annotationResults": {
+"description": "Annotation results for all videos specified in `AnnotateVideoRequest`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoAnnotationResults"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_Celebrity": {
+"description": "Celebrity definition.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_Celebrity",
+"properties": {
+"description": {
+"description": "Textual description of additional information about the celebrity, if applicable.",
+"type": "string"
+},
+"displayName": {
+"description": "The celebrity name.",
+"type": "string"
+},
+"name": {
+"description": "The resource name of the celebrity. Have the format `video-intelligence/kg-mid` indicates a celebrity from preloaded gallery. kg-mid is the id in Google knowledge graph, which is unique for the celebrity.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_CelebrityRecognitionAnnotation": {
+"description": "Celebrity recognition annotation per video.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_CelebrityRecognitionAnnotation",
+"properties": {
+"celebrityTracks": {
+"description": "The tracks detected from the input video, including recognized celebrities and other detected faces in the video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_CelebrityTrack"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_CelebrityTrack": {
+"description": "The annotation result of a celebrity face track. RecognizedCelebrity field could be empty if the face track does not have any matched celebrities.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_CelebrityTrack",
+"properties": {
+"celebrities": {
+"description": "Top N match of the celebrities for the face in this track.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_RecognizedCelebrity"
+},
+"type": "array"
+},
+"faceTrack": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Track",
+"description": "A track of a person's face."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_DetectedAttribute": {
+"description": "A generic detected attribute represented by name in string format.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_DetectedAttribute",
+"properties": {
+"confidence": {
+"description": "Detected attribute confidence. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of the attribute, for example, glasses, dark_glasses, mouth_open. A full list of supported type names will be provided in the document.",
+"type": "string"
+},
+"value": {
+"description": "Text value of the detection result. For example, the value for \"HairColor\" can be \"black\", \"blonde\", etc.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_DetectedLandmark": {
+"description": "A generic detected landmark represented by name in string format and a 2D location.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_DetectedLandmark",
+"properties": {
+"confidence": {
+"description": "The confidence score of the detected landmark. Range [0, 1].",
+"format": "float",
+"type": "number"
+},
+"name": {
+"description": "The name of this landmark, for example, left_hand, right_shoulder.",
+"type": "string"
+},
+"point": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_NormalizedVertex",
+"description": "The 2D point of the detected landmark using the normalized image coordindate system. The normalized coordinates have the range from 0 to 1."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_Entity": {
+"description": "Detected entity from video analysis.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_Entity",
+"properties": {
+"description": {
+"description": "Textual description, e.g., `Fixed-gear bicycle`.",
+"type": "string"
+},
+"entityId": {
+"description": "Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).",
+"type": "string"
+},
+"languageCode": {
+"description": "Language code for `description` in BCP-47 format.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_ExplicitContentAnnotation": {
+"description": "Explicit content annotation (based on per-frame visual signals only). If no explicit content has been detected in a frame, no annotations are present for that frame.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_ExplicitContentAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where explicit content was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ExplicitContentFrame"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_ExplicitContentDetectionConfig": {
+"description": "Config for EXPLICIT_CONTENT_DETECTION.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_ExplicitContentDetectionConfig",
+"properties": {
+"model": {
+"description": "Model to use for explicit content detection. Supported values: \"builtin/stable\" (the default if unset) and \"builtin/latest\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_ExplicitContentFrame": {
+"description": "Video frame level annotation results for explicit content.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_ExplicitContentFrame",
+"properties": {
+"pornographyLikelihood": {
+"description": "Likelihood of the pornography content..",
+"enum": [
+"LIKELIHOOD_UNSPECIFIED",
+"VERY_UNLIKELY",
+"UNLIKELY",
+"POSSIBLE",
+"LIKELY",
+"VERY_LIKELY"
+],
+"enumDescriptions": [
+"Unspecified likelihood.",
+"Very unlikely.",
+"Unlikely.",
+"Possible.",
+"Likely.",
+"Very likely."
+],
+"type": "string"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_FaceAnnotation": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_FaceAnnotation",
+"properties": {
+"frames": {
+"description": "All video frames where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_FaceFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a face was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_FaceSegment"
+},
+"type": "array"
+},
+"thumbnail": {
+"description": "Thumbnail of a representative face view (in JPEG format).",
+"format": "byte",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_FaceDetectionAnnotation": {
+"description": "Face detection annotation.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_FaceDetectionAnnotation",
+"properties": {
+"thumbnail": {
+"description": "The thumbnail of a person's face.",
+"format": "byte",
+"type": "string"
+},
+"tracks": {
+"description": "The face tracks with attributes.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_FaceDetectionConfig": {
+"description": "Config for FACE_DETECTION.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_FaceDetectionConfig",
+"properties": {
+"includeAttributes": {
+"description": "Whether to enable face attributes detection, such as glasses, dark_glasses, mouth_open etc. Ignored if 'include_bounding_boxes' is set to false.",
+"type": "boolean"
+},
+"includeBoundingBoxes": {
+"description": "Whether bounding boxes are included in the face annotation output.",
+"type": "boolean"
+},
+"model": {
+"description": "Model to use for face detection. Supported values: \"builtin/stable\" (the default if unset) and \"builtin/latest\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_FaceFrame": {
+"deprecated": true,
+"description": "Deprecated. No effect.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_FaceFrame",
+"properties": {
+"normalizedBoundingBoxes": {
+"description": "Normalized Bounding boxes in a frame. There can be more than one boxes if the same face is detected in multiple locations within the current frame.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_NormalizedBoundingBox"
+},
+"type": "array"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_FaceSegment": {
+"description": "Video segment level annotation results for face detection.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_FaceSegment",
+"properties": {
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment",
+"description": "Video segment where a face was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_LabelAnnotation": {
+"description": "Label annotation.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_LabelAnnotation",
+"properties": {
+"categoryEntities": {
+"description": "Common categories for the detected entity. For example, when the label is `Terrier`, the category is likely `dog`. And in some cases there might be more than one categories e.g., `Terrier` could also be a `pet`.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Entity"
+},
+"type": "array"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Entity",
+"description": "Detected entity."
+},
+"frames": {
+"description": "All video frames where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelFrame"
+},
+"type": "array"
+},
+"segments": {
+"description": "All video segments where a label was detected.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelSegment"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_LabelDetectionConfig": {
+"description": "Config for LABEL_DETECTION.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_LabelDetectionConfig",
+"properties": {
+"frameConfidenceThreshold": {
+"description": "The confidence threshold we perform filtering on the labels from frame-level detection. If not set, it is set to 0.4 by default. The valid range for this threshold is [0.1, 0.9]. Any value set outside of this range will be clipped. Note: For best results, follow the default threshold. We will update the default threshold everytime when we release a new model.",
+"format": "float",
+"type": "number"
+},
+"labelDetectionMode": {
+"description": "What labels should be detected with LABEL_DETECTION, in addition to video-level labels or segment-level labels. If unspecified, defaults to `SHOT_MODE`.",
+"enum": [
+"LABEL_DETECTION_MODE_UNSPECIFIED",
+"SHOT_MODE",
+"FRAME_MODE",
+"SHOT_AND_FRAME_MODE"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Detect shot-level labels.",
+"Detect frame-level labels.",
+"Detect both shot-level and frame-level labels."
+],
+"type": "string"
+},
+"model": {
+"description": "Model to use for label detection. Supported values: \"builtin/stable\" (the default if unset) and \"builtin/latest\".",
+"type": "string"
+},
+"stationaryCamera": {
+"description": "Whether the video has been shot from a stationary (i.e., non-moving) camera. When set to true, might improve detection accuracy for moving objects. Should be used with `SHOT_AND_FRAME_MODE` enabled.",
+"type": "boolean"
+},
+"videoConfidenceThreshold": {
+"description": "The confidence threshold we perform filtering on the labels from video-level and shot-level detections. If not set, it's set to 0.3 by default. The valid range for this threshold is [0.1, 0.9]. Any value set outside of this range will be clipped. Note: For best results, follow the default threshold. We will update the default threshold everytime when we release a new model.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_LabelFrame": {
+"description": "Video frame level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_LabelFrame",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this location.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_LabelSegment": {
+"description": "Video segment level annotation results for label detection.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_LabelSegment",
+"properties": {
+"confidence": {
+"description": "Confidence that the label is accurate. Range: [0, 1].",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment",
+"description": "Video segment where a label was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_LogoRecognitionAnnotation": {
+"description": "Annotation corresponding to one detected, tracked and recognized logo class.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_LogoRecognitionAnnotation",
+"properties": {
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Entity",
+"description": "Entity category information to specify the logo class that all the logo tracks within this LogoRecognitionAnnotation are recognized as."
+},
+"segments": {
+"description": "All video segments where the recognized logo appears. There might be multiple instances of the same logo class appearing in one VideoSegment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment"
+},
+"type": "array"
+},
+"tracks": {
+"description": "All logo tracks where the recognized logo appears. Each track corresponds to one logo instance appearing in consecutive frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Track"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_NormalizedBoundingBox": {
+"description": "Normalized bounding box. The normalized vertex coordinates are relative to the original image. Range: [0, 1].",
+"id": "GoogleCloudVideointelligenceV1p3beta1_NormalizedBoundingBox",
+"properties": {
+"bottom": {
+"description": "Bottom Y coordinate.",
+"format": "float",
+"type": "number"
+},
+"left": {
+"description": "Left X coordinate.",
+"format": "float",
+"type": "number"
+},
+"right": {
+"description": "Right X coordinate.",
+"format": "float",
+"type": "number"
+},
+"top": {
+"description": "Top Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_NormalizedBoundingPoly": {
+"description": "Normalized bounding polygon for text (that might not be aligned with axis). Contains list of the corner points in clockwise order starting from top-left corner. For example, for a rectangular bounding box: When the text is horizontal it might look like: 0----1 | | 3----2 When it's clockwise rotated 180 degrees around the top-left corner it becomes: 2----3 | | 1----0 and the vertex order will still be (0, 1, 2, 3). Note that values can be less than 0, or greater than 1 due to trignometric calculations for location of the box.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_NormalizedBoundingPoly",
+"properties": {
+"vertices": {
+"description": "Normalized vertices of the bounding polygon.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_NormalizedVertex"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_NormalizedVertex": {
+"description": "A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to the original image and range from 0 to 1.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_NormalizedVertex",
+"properties": {
+"x": {
+"description": "X coordinate.",
+"format": "float",
+"type": "number"
+},
+"y": {
+"description": "Y coordinate.",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingAnnotation": {
+"description": "Annotations corresponding to one tracked object.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingAnnotation",
+"properties": {
+"confidence": {
+"description": "Object category's labeling confidence of this track.",
+"format": "float",
+"type": "number"
+},
+"entity": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Entity",
+"description": "Entity to specify the object category that this track is labeled as."
+},
+"frames": {
+"description": "Information corresponding to all frames where this object track appears. Non-streaming batch mode: it may be one or multiple ObjectTrackingFrame messages in frames. Streaming mode: it can only be one ObjectTrackingFrame message in frames.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment",
+"description": "Non-streaming batch mode ONLY. Each object track corresponds to one video segment where it appears."
+},
+"trackId": {
+"description": "Streaming mode ONLY. In streaming mode, we do not know the end time of a tracked object before it is completed. Hence, there is no VideoSegment info returned. Instead, we provide a unique identifiable integer track_id so that the customers can correlate the results of the ongoing ObjectTrackAnnotation of the same track_id over time.",
+"format": "int64",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingConfig": {
+"description": "Config for OBJECT_TRACKING.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingConfig",
+"properties": {
+"model": {
+"description": "Model to use for object tracking. Supported values: \"builtin/stable\" (the default if unset) and \"builtin/latest\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingFrame": {
+"description": "Video frame level annotations for object detection and tracking. This field stores per frame location, time offset, and confidence.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingFrame",
+"properties": {
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_NormalizedBoundingBox",
+"description": "The normalized bounding box location of this object track for the frame."
+},
+"timeOffset": {
+"description": "The timestamp of the frame in microseconds.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_PersonDetectionAnnotation": {
+"description": "Person detection annotation per video.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_PersonDetectionAnnotation",
+"properties": {
+"tracks": {
+"description": "The detected tracks of a person.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Track"
+},
+"type": "array"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_PersonDetectionConfig": {
+"description": "Config for PERSON_DETECTION.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_PersonDetectionConfig",
+"properties": {
+"includeAttributes": {
+"description": "Whether to enable person attributes detection, such as cloth color (black, blue, etc), type (coat, dress, etc), pattern (plain, floral, etc), hair, etc. Ignored if 'include_bounding_boxes' is set to false.",
+"type": "boolean"
+},
+"includeBoundingBoxes": {
+"description": "Whether bounding boxes are included in the person detection annotation output.",
+"type": "boolean"
+},
+"includePoseLandmarks": {
+"description": "Whether to enable pose landmarks detection. Ignored if 'include_bounding_boxes' is set to false.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_RecognizedCelebrity": {
+"description": "The recognized celebrity with confidence score.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_RecognizedCelebrity",
+"properties": {
+"celebrity": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_Celebrity",
+"description": "The recognized celebrity."
+},
+"confidence": {
+"description": "Recognition confidence. Range [0, 1].",
+"format": "float",
+"type": "number"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_ShotChangeDetectionConfig": {
+"description": "Config for SHOT_CHANGE_DETECTION.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_ShotChangeDetectionConfig",
+"properties": {
+"model": {
+"description": "Model to use for shot change detection. Supported values: \"builtin/stable\" (the default if unset), \"builtin/latest\", and \"builtin/legacy\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_SpeechContext": {
+"description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases in the results.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_SpeechContext",
+"properties": {
+"phrases": {
+"description": "Optional. A list of strings containing words and phrases \"hints\" so that the speech recognition is more likely to recognize them. This can be used to improve the accuracy for specific words and phrases, for example, if specific commands are typically spoken by the user. This can also be used to add additional words to the vocabulary of the recognizer. See [usage limits](https://cloud.google.com/speech/limits#content).",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_SpeechRecognitionAlternative": {
+"description": "Alternative hypotheses (a.k.a. n-best list).",
+"id": "GoogleCloudVideointelligenceV1p3beta1_SpeechRecognitionAlternative",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"transcript": {
+"description": "Transcript text representing the words that the user spoke.",
+"type": "string"
+},
+"words": {
+"description": "Output only. A list of word-specific information for each recognized word. Note: When `enable_speaker_diarization` is set to true, you will see all the words from the beginning of the audio.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_WordInfo"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_SpeechTranscription": {
+"description": "A speech recognition result corresponding to a portion of the audio.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_SpeechTranscription",
+"properties": {
+"alternatives": {
+"description": "May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`). These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most probable, as ranked by the recognizer.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_SpeechRecognitionAlternative"
+},
+"type": "array"
+},
+"languageCode": {
+"description": "Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the language in this result. This language code was detected to have the most likelihood of being spoken in the audio.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_SpeechTranscriptionConfig": {
+"description": "Config for SPEECH_TRANSCRIPTION.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_SpeechTranscriptionConfig",
+"properties": {
+"audioTracks": {
+"description": "Optional. For file formats, such as MXF or MKV, supporting multiple audio tracks, specify up to two tracks. Default: track 0.",
+"items": {
+"format": "int32",
+"type": "integer"
+},
+"type": "array"
+},
+"diarizationSpeakerCount": {
+"description": "Optional. If set, specifies the estimated number of speakers in the conversation. If not set, defaults to '2'. Ignored unless enable_speaker_diarization is set to true.",
+"format": "int32",
+"type": "integer"
+},
+"enableAutomaticPunctuation": {
+"description": "Optional. If 'true', adds punctuation to recognition result hypotheses. This feature is only available in select languages. Setting this for requests in other languages has no effect at all. The default 'false' value does not add punctuation to result hypotheses. NOTE: \"This is currently offered as an experimental service, complimentary to all users. In the future this may be exclusively available as a premium feature.\"",
+"type": "boolean"
+},
+"enableSpeakerDiarization": {
+"description": "Optional. If 'true', enables speaker detection for each recognized word in the top alternative of the recognition result using a speaker_tag provided in the WordInfo. Note: When this is true, we send all the words from the beginning of the audio for the top alternative in every consecutive response. This is done in order to improve our speaker tags as our models learn to identify the speakers in the conversation over time.",
+"type": "boolean"
+},
+"enableWordConfidence": {
+"description": "Optional. If `true`, the top result includes a list of words and the confidence for those words. If `false`, no word-level confidence information is returned. The default is `false`.",
+"type": "boolean"
+},
+"filterProfanity": {
+"description": "Optional. If set to `true`, the server will attempt to filter out profanities, replacing all but the initial character in each filtered word with asterisks, e.g. \"f***\". If set to `false` or omitted, profanities won't be filtered out.",
+"type": "boolean"
+},
+"languageCode": {
+"description": "Required. *Required* The language of the supplied audio as a [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. Example: \"en-US\". See [Language Support](https://cloud.google.com/speech/docs/languages) for a list of the currently supported language codes.",
+"type": "string"
+},
+"maxAlternatives": {
+"description": "Optional. Maximum number of recognition hypotheses to be returned. Specifically, the maximum number of `SpeechRecognitionAlternative` messages within each `SpeechTranscription`. The server may return fewer than `max_alternatives`. Valid values are `0`-`30`. A value of `0` or `1` will return a maximum of one. If omitted, will return a maximum of one.",
+"format": "int32",
+"type": "integer"
+},
+"speechContexts": {
+"description": "Optional. A means to provide context to assist the speech recognition.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_SpeechContext"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_StreamingAnnotateVideoResponse": {
+"description": "`StreamingAnnotateVideoResponse` is the only message returned to the client by `StreamingAnnotateVideo`. A series of zero or more `StreamingAnnotateVideoResponse` messages are streamed back to the client.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_StreamingAnnotateVideoResponse",
+"properties": {
+"annotationResults": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_StreamingVideoAnnotationResults",
+"description": "Streaming annotation results."
+},
+"annotationResultsUri": {
+"description": "Google Cloud Storage URI that stores annotation results of one streaming session in JSON format. It is the annotation_result_storage_directory from the request followed by '/cloud_project_number-session_id'.",
+"type": "string"
+},
+"error": {
+"$ref": "GoogleRpc_Status",
+"description": "If set, returns a google.rpc.Status message that specifies the error for the operation."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_StreamingVideoAnnotationResults": {
+"description": "Streaming annotation results corresponding to a portion of the video that is currently being processed. Only ONE type of annotation will be specified in the response.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_StreamingVideoAnnotationResults",
+"properties": {
+"explicitAnnotation": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ExplicitContentAnnotation",
+"description": "Explicit content annotation results."
+},
+"frameTimestamp": {
+"description": "Timestamp of the processed frame in microseconds.",
+"format": "google-duration",
+"type": "string"
+},
+"labelAnnotations": {
+"description": "Label annotation results.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"objectAnnotations": {
+"description": "Object tracking results.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingAnnotation"
+},
+"type": "array"
+},
+"shotAnnotations": {
+"description": "Shot annotation results. Each shot is represented as a video segment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_TextAnnotation": {
+"description": "Annotations related to one detected OCR text snippet. This will contain the corresponding text, confidence value, and frame level information for each detection.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_TextAnnotation",
+"properties": {
+"segments": {
+"description": "All video segments where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_TextSegment"
+},
+"type": "array"
+},
+"text": {
+"description": "The detected text.",
+"type": "string"
+},
+"version": {
+"description": "Feature version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_TextDetectionConfig": {
+"description": "Config for TEXT_DETECTION.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_TextDetectionConfig",
+"properties": {
+"languageHints": {
+"description": "Language hint can be specified if the language to be detected is known a priori. It can increase the accuracy of the detection. Language hint must be language code in BCP-47 format. Automatic language detection is performed if no hint is provided.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"model": {
+"description": "Model to use for text detection. Supported values: \"builtin/stable\" (the default if unset) and \"builtin/latest\".",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_TextFrame": {
+"description": "Video frame level annotation results for text annotation (OCR). Contains information regarding timestamp and bounding box locations for the frames containing detected OCR text snippets.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_TextFrame",
+"properties": {
+"rotatedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_NormalizedBoundingPoly",
+"description": "Bounding polygon of the detected text for this frame."
+},
+"timeOffset": {
+"description": "Timestamp of this frame.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_TextSegment": {
+"description": "Video segment level annotation results for text detection.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_TextSegment",
+"properties": {
+"confidence": {
+"description": "Confidence for the track of detected text. It is calculated as the highest over all frames where OCR detected text appears.",
+"format": "float",
+"type": "number"
+},
+"frames": {
+"description": "Information related to the frames where OCR detected text appears.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_TextFrame"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment",
+"description": "Video segment where a text snippet was detected."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_TimestampedObject": {
+"description": "For tracking related features. An object at time_offset with attributes, and located with normalized_bounding_box.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_TimestampedObject",
+"properties": {
+"attributes": {
+"description": "Optional. The attributes of the object in the bounding box.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_DetectedAttribute"
+},
+"type": "array"
+},
+"landmarks": {
+"description": "Optional. The detected landmarks.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_DetectedLandmark"
+},
+"type": "array"
+},
+"normalizedBoundingBox": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_NormalizedBoundingBox",
+"description": "Normalized Bounding box in a frame, where the object is located."
+},
+"timeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the video frame for this object.",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_Track": {
+"description": "A track of an object instance.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_Track",
+"properties": {
+"attributes": {
+"description": "Optional. Attributes in the track level.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_DetectedAttribute"
+},
+"type": "array"
+},
+"confidence": {
+"description": "Optional. The confidence score of the tracked object.",
+"format": "float",
+"type": "number"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment",
+"description": "Video segment of a track."
+},
+"timestampedObjects": {
+"description": "The object with timestamp and attributes per frame in the track.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_TimestampedObject"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_VideoAnnotationProgress": {
+"description": "Annotation progress for a single video.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_VideoAnnotationProgress",
+"properties": {
+"feature": {
+"description": "Specifies which feature is being tracked if the request contains more than one feature.",
+"enum": [
+"FEATURE_UNSPECIFIED",
+"LABEL_DETECTION",
+"SHOT_CHANGE_DETECTION",
+"EXPLICIT_CONTENT_DETECTION",
+"FACE_DETECTION",
+"SPEECH_TRANSCRIPTION",
+"TEXT_DETECTION",
+"OBJECT_TRACKING",
+"LOGO_RECOGNITION",
+"CELEBRITY_RECOGNITION",
+"PERSON_DETECTION"
+],
+"enumDescriptions": [
+"Unspecified.",
+"Label detection. Detect objects, such as dog or flower.",
+"Shot change detection.",
+"Explicit content detection.",
+"Human face detection.",
+"Speech transcription.",
+"OCR text detection and tracking.",
+"Object detection and tracking.",
+"Logo detection, tracking, and recognition.",
+"Celebrity recognition.",
+"Person detection."
+],
+"type": "string"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"progressPercent": {
+"description": "Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.",
+"format": "int32",
+"type": "integer"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment",
+"description": "Specifies which segment is being tracked if the request contains more than one segment."
+},
+"startTime": {
+"description": "Time when the request was received.",
+"format": "google-datetime",
+"type": "string"
+},
+"updateTime": {
+"description": "Time of the most recent update.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_VideoAnnotationResults": {
+"description": "Annotation results for a single video.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_VideoAnnotationResults",
+"properties": {
+"celebrityRecognitionAnnotations": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_CelebrityRecognitionAnnotation",
+"description": "Celebrity recognition annotations."
+},
+"error": {
+"$ref": "GoogleRpc_Status",
+"description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed and some may fail."
+},
+"explicitAnnotation": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ExplicitContentAnnotation",
+"description": "Explicit content annotation."
+},
+"faceAnnotations": {
+"deprecated": true,
+"description": "Deprecated. Please use `face_detection_annotations` instead.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_FaceAnnotation"
+},
+"type": "array"
+},
+"faceDetectionAnnotations": {
+"description": "Face detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_FaceDetectionAnnotation"
+},
+"type": "array"
+},
+"frameLabelAnnotations": {
+"description": "Label annotations on frame level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"inputUri": {
+"description": "Video file location in [Cloud Storage](https://cloud.google.com/storage/).",
+"type": "string"
+},
+"logoRecognitionAnnotations": {
+"description": "Annotations for list of logos detected, tracked and recognized in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LogoRecognitionAnnotation"
+},
+"type": "array"
+},
+"objectAnnotations": {
+"description": "Annotations for list of objects detected and tracked in video.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingAnnotation"
+},
+"type": "array"
+},
+"personDetectionAnnotations": {
+"description": "Person detection annotations.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_PersonDetectionAnnotation"
+},
+"type": "array"
+},
+"segment": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment",
+"description": "Video segment on which the annotation is run."
+},
+"segmentLabelAnnotations": {
+"description": "Topical label annotations on video level or user-specified segment level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"segmentPresenceLabelAnnotations": {
+"description": "Presence label annotations on video level or user-specified segment level. There is exactly one element for each unique label. Compared to the existing topical `segment_label_annotations`, this field presents more fine-grained, segment-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"shotAnnotations": {
+"description": "Shot annotations. Each shot is represented as a video segment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment"
+},
+"type": "array"
+},
+"shotLabelAnnotations": {
+"description": "Topical label annotations on shot level. There is exactly one element for each unique label.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"shotPresenceLabelAnnotations": {
+"description": "Presence label annotations on shot level. There is exactly one element for each unique label. Compared to the existing topical `shot_label_annotations`, this field presents more fine-grained, shot-level labels detected in video content and is made available only when the client sets `LabelDetectionConfig.model` to \"builtin/latest\" in the request.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelAnnotation"
+},
+"type": "array"
+},
+"speechTranscriptions": {
+"description": "Speech transcription.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_SpeechTranscription"
+},
+"type": "array"
+},
+"textAnnotations": {
+"description": "OCR text detection and tracking. Annotations for list of detected text snippets. Each will have list of frame information associated with it.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_TextAnnotation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_VideoContext": {
+"description": "Video context and/or feature-specific parameters.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_VideoContext",
+"properties": {
+"explicitContentDetectionConfig": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ExplicitContentDetectionConfig",
+"description": "Config for EXPLICIT_CONTENT_DETECTION."
+},
+"faceDetectionConfig": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_FaceDetectionConfig",
+"description": "Config for FACE_DETECTION."
+},
+"labelDetectionConfig": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_LabelDetectionConfig",
+"description": "Config for LABEL_DETECTION."
+},
+"objectTrackingConfig": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ObjectTrackingConfig",
+"description": "Config for OBJECT_TRACKING."
+},
+"personDetectionConfig": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_PersonDetectionConfig",
+"description": "Config for PERSON_DETECTION."
+},
+"segments": {
+"description": "Video segments to annotate. The segments may overlap and are not required to be contiguous or span the whole video. If unspecified, each video is treated as a single segment.",
+"items": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment"
+},
+"type": "array"
+},
+"shotChangeDetectionConfig": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_ShotChangeDetectionConfig",
+"description": "Config for SHOT_CHANGE_DETECTION."
+},
+"speechTranscriptionConfig": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_SpeechTranscriptionConfig",
+"description": "Config for SPEECH_TRANSCRIPTION."
+},
+"textDetectionConfig": {
+"$ref": "GoogleCloudVideointelligenceV1p3beta1_TextDetectionConfig",
+"description": "Config for TEXT_DETECTION."
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_VideoSegment": {
+"description": "Video segment.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_VideoSegment",
+"properties": {
+"endTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the end of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+},
+"startTimeOffset": {
+"description": "Time-offset, relative to the beginning of the video, corresponding to the start of the segment (inclusive).",
+"format": "google-duration",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleCloudVideointelligenceV1p3beta1_WordInfo": {
+"description": "Word-specific information for recognized words. Word information is only included in the response when certain request parameters are set, such as `enable_word_time_offsets`.",
+"id": "GoogleCloudVideointelligenceV1p3beta1_WordInfo",
+"properties": {
+"confidence": {
+"description": "Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.",
+"format": "float",
+"readOnly": true,
+"type": "number"
+},
+"endTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the end of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"speakerTag": {
+"description": "Output only. A distinct integer value is assigned for every speaker within the audio. This field specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to diarization_speaker_count, and is only set if speaker diarization is enabled.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"startTime": {
+"description": "Time offset relative to the beginning of the audio, and corresponding to the start of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.",
+"format": "google-duration",
+"type": "string"
+},
+"word": {
+"description": "The word corresponding to this set of information.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"GoogleLongrunning_Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "GoogleLongrunning_Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "GoogleRpc_Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"GoogleRpc_Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "GoogleRpc_Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "Cloud Video Intelligence API",
+"version": "v1p3beta1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/vmmigration.v1alpha1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/vmmigration.v1alpha1.json
new file mode 100644
index 0000000000000000000000000000000000000000..058035e48f8047e42f9001fcdb2c3481823e6fe4
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/vmmigration.v1alpha1.json
@@ -0,0 +1,6374 @@
+{
+"auth": {
+"oauth2": {
+"scopes": {
+"https://www.googleapis.com/auth/cloud-platform": {
+"description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account."
+}
+}
+}
+},
+"basePath": "",
+"baseUrl": "https://vmmigration.googleapis.com/",
+"batchPath": "batch",
+"canonicalName": "VM Migration Service",
+"description": "Use the Migrate to Virtual Machines API to programmatically migrate workloads. ",
+"discoveryVersion": "v1",
+"documentationLink": "https://cloud.google.com/migrate/virtual-machines",
+"fullyEncodeReservedExpansion": true,
+"icons": {
+"x16": "http://www.google.com/images/icons/product/search-16.gif",
+"x32": "http://www.google.com/images/icons/product/search-32.gif"
+},
+"id": "vmmigration:v1alpha1",
+"kind": "discovery#restDescription",
+"mtlsRootUrl": "https://vmmigration.mtls.googleapis.com/",
+"name": "vmmigration",
+"ownerDomain": "google.com",
+"ownerName": "Google",
+"parameters": {
+"$.xgafv": {
+"description": "V1 error format.",
+"enum": [
+"1",
+"2"
+],
+"enumDescriptions": [
+"v1 error format",
+"v2 error format"
+],
+"location": "query",
+"type": "string"
+},
+"access_token": {
+"description": "OAuth access token.",
+"location": "query",
+"type": "string"
+},
+"alt": {
+"default": "json",
+"description": "Data format for response.",
+"enum": [
+"json",
+"media",
+"proto"
+],
+"enumDescriptions": [
+"Responses with Content-Type of application/json",
+"Media download with context-dependent Content-Type",
+"Responses with Content-Type of application/x-protobuf"
+],
+"location": "query",
+"type": "string"
+},
+"callback": {
+"description": "JSONP",
+"location": "query",
+"type": "string"
+},
+"fields": {
+"description": "Selector specifying which fields to include in a partial response.",
+"location": "query",
+"type": "string"
+},
+"key": {
+"description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+"location": "query",
+"type": "string"
+},
+"oauth_token": {
+"description": "OAuth 2.0 token for the current user.",
+"location": "query",
+"type": "string"
+},
+"prettyPrint": {
+"default": "true",
+"description": "Returns response with indentations and line breaks.",
+"location": "query",
+"type": "boolean"
+},
+"quotaUser": {
+"description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.",
+"location": "query",
+"type": "string"
+},
+"uploadType": {
+"description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").",
+"location": "query",
+"type": "string"
+},
+"upload_protocol": {
+"description": "Upload protocol for media (e.g. \"raw\", \"multipart\").",
+"location": "query",
+"type": "string"
+}
+},
+"protocol": "rest",
+"resources": {
+"projects": {
+"resources": {
+"locations": {
+"methods": {
+"get": {
+"description": "Gets information about a location.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Resource name for the location.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Location"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists information about the supported locations for this service.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "A filter to narrow down results to a preferred subset. The filtering language accepts strings like `\"displayName=tokyo\"`, and is documented in more detail in [AIP-160](https://google.aip.dev/160).",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The resource that owns the locations collection, if applicable.",
+"location": "path",
+"pattern": "^projects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The maximum number of results to return. If not set, the service selects a default.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token received from the `next_page_token` field in the response. Send that page token to receive the subsequent page.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}/locations",
+"response": {
+"$ref": "ListLocationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"groups": {
+"methods": {
+"addGroupMigration": {
+"description": "Adds a MigratingVm to a Group.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}:addGroupMigration",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.groups.addGroupMigration",
+"parameterOrder": [
+"group"
+],
+"parameters": {
+"group": {
+"description": "Required. The full path name of the Group to add to.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+group}:addGroupMigration",
+"request": {
+"$ref": "AddGroupMigrationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Creates a new Group in a given project and location.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.groups.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"groupId": {
+"description": "Required. The group identifier.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Group's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/groups",
+"request": {
+"$ref": "Group"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Group.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}",
+"httpMethod": "DELETE",
+"id": "vmmigration.projects.locations.groups.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The Group name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Group.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.groups.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The group name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Group"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Groups in a given project and location.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.groups.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of groups to return. The service may return fewer than this value. If unspecified, at most 500 groups will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListGroups` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListGroups` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of groups.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/groups",
+"response": {
+"$ref": "ListGroupsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Group.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}",
+"httpMethod": "PATCH",
+"id": "vmmigration.projects.locations.groups.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The Group name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask is used to specify the fields to be overwritten in the Group resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"request": {
+"$ref": "Group"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"removeGroupMigration": {
+"description": "Removes a MigratingVm from a Group.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/groups/{groupsId}:removeGroupMigration",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.groups.removeGroupMigration",
+"parameterOrder": [
+"group"
+],
+"parameters": {
+"group": {
+"description": "Required. The name of the Group.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/groups/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+group}:removeGroupMigration",
+"request": {
+"$ref": "RemoveGroupMigrationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"imageImports": {
+"methods": {
+"create": {
+"description": "Creates a new ImageImport in a given project.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.imageImports.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"imageImportId": {
+"description": "Required. The image import identifier. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The ImageImport's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/imageImports",
+"request": {
+"$ref": "ImageImport"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single ImageImport.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}",
+"httpMethod": "DELETE",
+"id": "vmmigration.projects.locations.imageImports.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The ImageImport name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single ImageImport.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.imageImports.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The ImageImport name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "ImageImport"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists ImageImports in a given project.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.imageImports.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request (according to AIP-160).",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. The order by fields for the result (according to AIP-132). Currently ordering is only possible by \"name\" field.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of targets to return. The service may return fewer than this value. If unspecified, at most 500 targets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListImageImports` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListImageImports` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of targets.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/imageImports",
+"response": {
+"$ref": "ListImageImportsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"imageImportJobs": {
+"methods": {
+"cancel": {
+"description": "Initiates the cancellation of a running clone job.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}/imageImportJobs/{imageImportJobsId}:cancel",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.imageImports.imageImportJobs.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The image import job id.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+/imageImportJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}:cancel",
+"request": {
+"$ref": "CancelImageImportJobRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single ImageImportJob.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}/imageImportJobs/{imageImportJobsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.imageImports.imageImportJobs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The ImageImportJob name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+/imageImportJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "ImageImportJob"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists ImageImportJobs in a given project.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/imageImports/{imageImportsId}/imageImportJobs",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.imageImports.imageImportJobs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request (according to AIP-160).",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. The order by fields for the result (according to AIP-132). Currently ordering is only possible by \"name\" field.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of targets to return. The service may return fewer than this value. If unspecified, at most 500 targets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Optional. A page token, received from a previous `ListImageImportJobs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListImageImportJobs` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of targets.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/imageImports/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/imageImportJobs",
+"response": {
+"$ref": "ListImageImportJobsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"operations": {
+"methods": {
+"cancel": {
+"description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of `1`, corresponding to `Code.CANCELLED`.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.operations.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be cancelled.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}:cancel",
+"request": {
+"$ref": "CancelOperationRequest"
+},
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns `google.rpc.Code.UNIMPLEMENTED`.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "DELETE",
+"id": "vmmigration.projects.locations.operations.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource to be deleted.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Empty"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.operations.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "The name of the operation resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/operations",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.operations.list",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"filter": {
+"description": "The standard list filter.",
+"location": "query",
+"type": "string"
+},
+"name": {
+"description": "The name of the operation's parent resource.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"pageSize": {
+"description": "The standard list page size.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "The standard list page token.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}/operations",
+"response": {
+"$ref": "ListOperationsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"sources": {
+"methods": {
+"create": {
+"description": "Creates a new Source in a given project and location.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The Source's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"sourceId": {
+"description": "Required. The source identifier.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/sources",
+"request": {
+"$ref": "Source"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Source.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}",
+"httpMethod": "DELETE",
+"id": "vmmigration.projects.locations.sources.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The Source name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"fetchInventory": {
+"description": "List remote source's inventory of VMs. The remote source is the onprem vCenter (remote in the sense it's not in Compute Engine). The inventory describes the list of existing VMs in that source. Note that this operation lists the VMs on the remote source, as opposed to listing the MigratingVms resources in the vmmigration service.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}:fetchInventory",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.fetchInventory",
+"parameterOrder": [
+"source"
+],
+"parameters": {
+"forceRefresh": {
+"description": "If this flag is set to true, the source will be queried instead of using cached results. Using this flag will make the call slower.",
+"location": "query",
+"type": "boolean"
+},
+"pageSize": {
+"description": "The maximum number of VMs to return. The service may return fewer than this value. For AWS source: If unspecified, at most 500 VMs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000. For VMWare source: If unspecified, all VMs will be returned. There is no limit for maximum value.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "A page token, received from a previous `FetchInventory` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `FetchInventory` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"source": {
+"description": "Required. The name of the Source.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+source}:fetchInventory",
+"response": {
+"$ref": "FetchInventoryResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single Source.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The Source name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Source"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Sources in a given project and location.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of sources to return. The service may return fewer than this value. If unspecified, at most 500 sources will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListSources` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSources` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of sources.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/sources",
+"response": {
+"$ref": "ListSourcesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single Source.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}",
+"httpMethod": "PATCH",
+"id": "vmmigration.projects.locations.sources.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The Source name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask is used to specify the fields to be overwritten in the Source resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"request": {
+"$ref": "Source"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"datacenterConnectors": {
+"methods": {
+"create": {
+"description": "Creates a new DatacenterConnector in a given Source.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.datacenterConnectors.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"datacenterConnectorId": {
+"description": "Required. The datacenterConnector identifier.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The DatacenterConnector's parent. Required. The Source in where the new DatacenterConnector will be created. For example: `projects/my-project/locations/us-central1/sources/my-source`",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/datacenterConnectors",
+"request": {
+"$ref": "DatacenterConnector"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single DatacenterConnector.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors/{datacenterConnectorsId}",
+"httpMethod": "DELETE",
+"id": "vmmigration.projects.locations.sources.datacenterConnectors.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The DatacenterConnector name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/datacenterConnectors/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single DatacenterConnector.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors/{datacenterConnectorsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.datacenterConnectors.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the DatacenterConnector.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/datacenterConnectors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "DatacenterConnector"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists DatacenterConnectors in a given Source.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.datacenterConnectors.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of connectors to return. The service may return fewer than this value. If unspecified, at most 500 sources will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListDatacenterConnectors` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDatacenterConnectors` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of connectors.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/datacenterConnectors",
+"response": {
+"$ref": "ListDatacenterConnectorsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"upgradeAppliance": {
+"description": "Upgrades the appliance relate to this DatacenterConnector to the in-place updateable version.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/datacenterConnectors/{datacenterConnectorsId}:upgradeAppliance",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.datacenterConnectors.upgradeAppliance",
+"parameterOrder": [
+"datacenterConnector"
+],
+"parameters": {
+"datacenterConnector": {
+"description": "Required. The DatacenterConnector name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/datacenterConnectors/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+datacenterConnector}:upgradeAppliance",
+"request": {
+"$ref": "UpgradeApplianceRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"migratingVms": {
+"methods": {
+"create": {
+"description": "Creates a new MigratingVm in a given Source.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"migratingVmId": {
+"description": "Required. The migratingVm identifier.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The MigratingVm's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/migratingVms",
+"request": {
+"$ref": "MigratingVm"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single MigratingVm.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}",
+"httpMethod": "DELETE",
+"id": "vmmigration.projects.locations.sources.migratingVms.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the MigratingVm.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"finalizeMigration": {
+"description": "Marks a migration as completed, deleting migration resources that are no longer being used. Only applicable after cutover is done.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:finalizeMigration",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.finalizeMigration",
+"parameterOrder": [
+"migratingVm"
+],
+"parameters": {
+"migratingVm": {
+"description": "Required. The name of the MigratingVm.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+migratingVm}:finalizeMigration",
+"request": {
+"$ref": "FinalizeMigrationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single MigratingVm.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.migratingVms.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the MigratingVm.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Optional. The level of details of the migrating VM.",
+"enum": [
+"MIGRATING_VM_VIEW_UNSPECIFIED",
+"MIGRATING_VM_VIEW_BASIC",
+"MIGRATING_VM_VIEW_FULL"
+],
+"enumDescriptions": [
+"View is unspecified. The API will fallback to the default value.",
+"Get the migrating VM basic details. The basic details do not include the recent clone jobs and recent cutover jobs lists.",
+"Include everything."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "MigratingVm"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists MigratingVms in a given Source.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.migratingVms.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of migrating VMs to return. The service may return fewer than this value. If unspecified, at most 500 migrating VMs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListMigratingVms` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListMigratingVms` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of MigratingVms.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Optional. The level of details of each migrating VM.",
+"enum": [
+"MIGRATING_VM_VIEW_UNSPECIFIED",
+"MIGRATING_VM_VIEW_BASIC",
+"MIGRATING_VM_VIEW_FULL"
+],
+"enumDescriptions": [
+"View is unspecified. The API will fallback to the default value.",
+"Get the migrating VM basic details. The basic details do not include the recent clone jobs and recent cutover jobs lists.",
+"Include everything."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/migratingVms",
+"response": {
+"$ref": "ListMigratingVmsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single MigratingVm.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}",
+"httpMethod": "PATCH",
+"id": "vmmigration.projects.locations.sources.migratingVms.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The identifier of the MigratingVm.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask is used to specify the fields to be overwritten in the MigratingVm resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"request": {
+"$ref": "MigratingVm"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"pauseMigration": {
+"description": "Pauses a migration for a VM. If cycle tasks are running they will be cancelled, preserving source task data. Further replication cycles will not be triggered while the VM is paused.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:pauseMigration",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.pauseMigration",
+"parameterOrder": [
+"migratingVm"
+],
+"parameters": {
+"migratingVm": {
+"description": "Required. The name of the MigratingVm.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+migratingVm}:pauseMigration",
+"request": {
+"$ref": "PauseMigrationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"resumeMigration": {
+"description": "Resumes a migration for a VM. When called on a paused migration, will start the process of uploading data and creating snapshots; when called on a completed cut-over migration, will update the migration to active state and start the process of uploading data and creating snapshots.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:resumeMigration",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.resumeMigration",
+"parameterOrder": [
+"migratingVm"
+],
+"parameters": {
+"migratingVm": {
+"description": "Required. The name of the MigratingVm.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+migratingVm}:resumeMigration",
+"request": {
+"$ref": "ResumeMigrationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"startMigration": {
+"description": "Starts migration for a VM. Starts the process of uploading data and creating snapshots, in replication cycles scheduled by the policy.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}:startMigration",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.startMigration",
+"parameterOrder": [
+"migratingVm"
+],
+"parameters": {
+"migratingVm": {
+"description": "Required. The name of the MigratingVm.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+migratingVm}:startMigration",
+"request": {
+"$ref": "StartMigrationRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+},
+"resources": {
+"cloneJobs": {
+"methods": {
+"cancel": {
+"description": "Initiates the cancellation of a running clone job.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cloneJobs/{cloneJobsId}:cancel",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.cloneJobs.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The clone job id",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/cloneJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}:cancel",
+"request": {
+"$ref": "CancelCloneJobRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Initiates a Clone of a specific migrating VM.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cloneJobs",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.cloneJobs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"cloneJobId": {
+"description": "Required. The clone job identifier.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Clone's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/cloneJobs",
+"request": {
+"$ref": "CloneJob"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single CloneJob.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cloneJobs/{cloneJobsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.migratingVms.cloneJobs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the CloneJob.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/cloneJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "CloneJob"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the CloneJobs of a migrating VM. Only 25 most recent CloneJobs are listed.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cloneJobs",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.migratingVms.cloneJobs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of clone jobs to return. The service may return fewer than this value. If unspecified, at most 500 clone jobs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListCloneJobs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListCloneJobs` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of source VMs.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/cloneJobs",
+"response": {
+"$ref": "ListCloneJobsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"cutoverJobs": {
+"methods": {
+"cancel": {
+"description": "Initiates the cancellation of a running cutover job.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cutoverJobs/{cutoverJobsId}:cancel",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.cutoverJobs.cancel",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The cutover job id",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/cutoverJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}:cancel",
+"request": {
+"$ref": "CancelCutoverJobRequest"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"create": {
+"description": "Initiates a Cutover of a specific migrating VM. The returned LRO is completed when the cutover job resource is created and the job is initiated.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cutoverJobs",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.migratingVms.cutoverJobs.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"cutoverJobId": {
+"description": "Required. The cutover job identifier.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Cutover's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/cutoverJobs",
+"request": {
+"$ref": "CutoverJob"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single CutoverJob.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cutoverJobs/{cutoverJobsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.migratingVms.cutoverJobs.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the CutoverJob.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/cutoverJobs/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "CutoverJob"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists the CutoverJobs of a migrating VM. Only 25 most recent CutoverJobs are listed.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/cutoverJobs",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.migratingVms.cutoverJobs.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of cutover jobs to return. The service may return fewer than this value. If unspecified, at most 500 cutover jobs will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListCutoverJobs` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListCutoverJobs` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of migrating VMs.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/cutoverJobs",
+"response": {
+"$ref": "ListCutoverJobsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+},
+"replicationCycles": {
+"methods": {
+"get": {
+"description": "Gets details of a single ReplicationCycle.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/replicationCycles/{replicationCyclesId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.migratingVms.replicationCycles.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The name of the ReplicationCycle.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+/replicationCycles/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "ReplicationCycle"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists ReplicationCycles in a given MigratingVM.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/migratingVms/{migratingVmsId}/replicationCycles",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.migratingVms.replicationCycles.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of replication cycles to return. The service may return fewer than this value. If unspecified, at most 100 migrating VMs will be returned. The maximum value is 100; values above 100 will be coerced to 100.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListReplicationCycles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListReplicationCycles` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of ReplicationCycles.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/migratingVms/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/replicationCycles",
+"response": {
+"$ref": "ListReplicationCyclesResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"utilizationReports": {
+"methods": {
+"create": {
+"description": "Creates a new UtilizationReport.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/utilizationReports",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.sources.utilizationReports.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The Utilization Report's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"utilizationReportId": {
+"description": "Required. The ID to use for the report, which will become the final component of the reports's resource name. This value maximum length is 63 characters, and valid characters are /a-z-/. It must start with an english letter and must not end with a hyphen.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/utilizationReports",
+"request": {
+"$ref": "UtilizationReport"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single Utilization Report.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/utilizationReports/{utilizationReportsId}",
+"httpMethod": "DELETE",
+"id": "vmmigration.projects.locations.sources.utilizationReports.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The Utilization Report name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/utilizationReports/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets a single Utilization Report.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/utilizationReports/{utilizationReportsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.utilizationReports.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The Utilization Report name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+/utilizationReports/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Optional. The level of details of the report. Defaults to FULL",
+"enum": [
+"UTILIZATION_REPORT_VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"The default / unset value. The API will default to FULL on single report request and BASIC for multiple reports request.",
+"Get the report metadata, without the list of VMs and their utilization info.",
+"Include everything."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "UtilizationReport"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists Utilization Reports of the given Source.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/sources/{sourcesId}/utilizationReports",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.sources.utilizationReports.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of reports to return. The service may return fewer than this value. If unspecified, at most 500 reports will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListUtilizationReports` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListUtilizationReports` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The Utilization Reports parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/sources/[^/]+$",
+"required": true,
+"type": "string"
+},
+"view": {
+"description": "Optional. The level of details of each report. Defaults to BASIC.",
+"enum": [
+"UTILIZATION_REPORT_VIEW_UNSPECIFIED",
+"BASIC",
+"FULL"
+],
+"enumDescriptions": [
+"The default / unset value. The API will default to FULL on single report request and BASIC for multiple reports request.",
+"Get the report metadata, without the list of VMs and their utilization info.",
+"Include everything."
+],
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/utilizationReports",
+"response": {
+"$ref": "ListUtilizationReportsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+},
+"targetProjects": {
+"methods": {
+"create": {
+"description": "Creates a new TargetProject in a given project. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects",
+"httpMethod": "POST",
+"id": "vmmigration.projects.locations.targetProjects.create",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"parent": {
+"description": "Required. The TargetProject's parent.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"targetProjectId": {
+"description": "Required. The target_project identifier.",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/targetProjects",
+"request": {
+"$ref": "TargetProject"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"delete": {
+"description": "Deletes a single TargetProject. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects/{targetProjectsId}",
+"httpMethod": "DELETE",
+"id": "vmmigration.projects.locations.targetProjects.delete",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The TargetProject name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/targetProjects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "Optional. A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"get": {
+"description": "Gets details of a single TargetProject. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects/{targetProjectsId}",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.targetProjects.get",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Required. The TargetProject name.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/targetProjects/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"response": {
+"$ref": "TargetProject"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"list": {
+"description": "Lists TargetProjects in a given project. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects",
+"httpMethod": "GET",
+"id": "vmmigration.projects.locations.targetProjects.list",
+"parameterOrder": [
+"parent"
+],
+"parameters": {
+"filter": {
+"description": "Optional. The filter request.",
+"location": "query",
+"type": "string"
+},
+"orderBy": {
+"description": "Optional. the order by fields for the result.",
+"location": "query",
+"type": "string"
+},
+"pageSize": {
+"description": "Optional. The maximum number of targets to return. The service may return fewer than this value. If unspecified, at most 500 targets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.",
+"format": "int32",
+"location": "query",
+"type": "integer"
+},
+"pageToken": {
+"description": "Required. A page token, received from a previous `ListTargets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListTargets` must match the call that provided the page token.",
+"location": "query",
+"type": "string"
+},
+"parent": {
+"description": "Required. The parent, which owns this collection of targets.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+$",
+"required": true,
+"type": "string"
+}
+},
+"path": "v1alpha1/{+parent}/targetProjects",
+"response": {
+"$ref": "ListTargetProjectsResponse"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+},
+"patch": {
+"description": "Updates the parameters of a single TargetProject. NOTE: TargetProject is a global resource; hence the only supported value for location is `global`.",
+"flatPath": "v1alpha1/projects/{projectsId}/locations/{locationsId}/targetProjects/{targetProjectsId}",
+"httpMethod": "PATCH",
+"id": "vmmigration.projects.locations.targetProjects.patch",
+"parameterOrder": [
+"name"
+],
+"parameters": {
+"name": {
+"description": "Output only. The name of the target project.",
+"location": "path",
+"pattern": "^projects/[^/]+/locations/[^/]+/targetProjects/[^/]+$",
+"required": true,
+"type": "string"
+},
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"location": "query",
+"type": "string"
+},
+"updateMask": {
+"description": "Field mask is used to specify the fields to be overwritten in the TargetProject resource by the update. The fields specified in the update_mask are relative to the resource, not the full request. A field will be overwritten if it is in the mask. If the user does not provide a mask then all fields will be overwritten.",
+"format": "google-fieldmask",
+"location": "query",
+"type": "string"
+}
+},
+"path": "v1alpha1/{+name}",
+"request": {
+"$ref": "TargetProject"
+},
+"response": {
+"$ref": "Operation"
+},
+"scopes": [
+"https://www.googleapis.com/auth/cloud-platform"
+]
+}
+}
+}
+}
+}
+}
+}
+},
+"revision": "20241114",
+"rootUrl": "https://vmmigration.googleapis.com/",
+"schemas": {
+"AccessKeyCredentials": {
+"description": "Message describing AWS Credentials using access key id and secret.",
+"id": "AccessKeyCredentials",
+"properties": {
+"accessKeyId": {
+"description": "AWS access key ID.",
+"type": "string"
+},
+"secretAccessKey": {
+"description": "Input only. AWS secret access key.",
+"type": "string"
+},
+"sessionToken": {
+"description": "Input only. AWS session token. Used only when AWS security token service (STS) is responsible for creating the temporary credentials.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AdaptingOSStep": {
+"description": "AdaptingOSStep contains specific step details.",
+"id": "AdaptingOSStep",
+"properties": {},
+"type": "object"
+},
+"AddGroupMigrationRequest": {
+"description": "Request message for 'AddGroupMigration' request.",
+"id": "AddGroupMigrationRequest",
+"properties": {
+"migratingVm": {
+"description": "The full path name of the MigratingVm to add.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ApplianceVersion": {
+"description": "Describes an appliance version.",
+"id": "ApplianceVersion",
+"properties": {
+"critical": {
+"description": "Determine whether it's critical to upgrade the appliance to this version.",
+"type": "boolean"
+},
+"releaseNotesUri": {
+"description": "Link to a page that contains the version release notes.",
+"type": "string"
+},
+"uri": {
+"description": "A link for downloading the version.",
+"type": "string"
+},
+"version": {
+"description": "The appliance version.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AppliedLicense": {
+"description": "AppliedLicense holds the license data returned by adaptation module report.",
+"id": "AppliedLicense",
+"properties": {
+"osLicense": {
+"description": "The OS license returned from the adaptation module's report.",
+"type": "string"
+},
+"type": {
+"description": "The license type that was used in OS adaptation.",
+"enum": [
+"TYPE_UNSPECIFIED",
+"NONE",
+"PAYG",
+"BYOL"
+],
+"enumDescriptions": [
+"Unspecified license for the OS.",
+"No license available for the OS.",
+"The license type is Pay As You Go license type.",
+"The license type is Bring Your Own License type."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"AvailableUpdates": {
+"description": "Holds informatiom about the available versions for upgrade.",
+"id": "AvailableUpdates",
+"properties": {
+"inPlaceUpdate": {
+"$ref": "ApplianceVersion",
+"description": "The latest version for in place update. The current appliance can be updated to this version using the API or m4c CLI."
+},
+"newDeployableAppliance": {
+"$ref": "ApplianceVersion",
+"description": "The newest deployable version of the appliance. The current appliance can't be updated into this version, and the owner must manually deploy this OVA to a new appliance."
+}
+},
+"type": "object"
+},
+"AwsDiskDetails": {
+"description": "The details of an AWS instance disk.",
+"id": "AwsDiskDetails",
+"properties": {
+"diskNumber": {
+"description": "Output only. The ordinal number of the disk.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"sizeGb": {
+"description": "Output only. Size in GB.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"volumeId": {
+"description": "Output only. AWS volume ID.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"AwsSecurityGroup": {
+"description": "AwsSecurityGroup describes a security group of an AWS VM.",
+"id": "AwsSecurityGroup",
+"properties": {
+"id": {
+"description": "The AWS security group id.",
+"type": "string"
+},
+"name": {
+"description": "The AWS security group name.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AwsSourceDetails": {
+"description": "AwsSourceDetails message describes a specific source details for the AWS source type.",
+"id": "AwsSourceDetails",
+"properties": {
+"accessKeyCreds": {
+"$ref": "AccessKeyCredentials",
+"description": "AWS Credentials using access key id and secret."
+},
+"awsRegion": {
+"description": "Immutable. The AWS region that the source VMs will be migrated from.",
+"type": "string"
+},
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details on the state of the Source in case of an error.",
+"readOnly": true
+},
+"inventorySecurityGroupNames": {
+"description": "AWS security group names to limit the scope of the source inventory.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"inventoryTagList": {
+"description": "AWS resource tags to limit the scope of the source inventory.",
+"items": {
+"$ref": "Tag"
+},
+"type": "array"
+},
+"migrationResourcesUserTags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "User specified tags to add to every M2VM generated resource in AWS. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m2vm`.",
+"type": "object"
+},
+"publicIp": {
+"description": "Output only. The source's public IP. All communication initiated by this source will originate from this IP.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the source as determined by the health check.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"FAILED",
+"ACTIVE"
+],
+"enumDescriptions": [
+"The state is unknown. This is used for API compatibility only and is not used by the system.",
+"The state was not sampled by the health checks yet.",
+"The source is available but might not be usable yet due to invalid credentials or another reason. The error message will contain further details.",
+"The source exists and its credentials were verified."
+],
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"AwsSourceVmDetails": {
+"description": "Represent the source AWS VM details.",
+"id": "AwsSourceVmDetails",
+"properties": {
+"architecture": {
+"description": "Output only. The VM architecture.",
+"enum": [
+"VM_ARCHITECTURE_UNSPECIFIED",
+"VM_ARCHITECTURE_X86_FAMILY",
+"VM_ARCHITECTURE_ARM64"
+],
+"enumDescriptions": [
+"The architecture is unknown.",
+"The architecture is one of the x86 architectures.",
+"The architecture is ARM64."
+],
+"readOnly": true,
+"type": "string"
+},
+"committedStorageBytes": {
+"description": "Output only. The total size of the disks being migrated in bytes.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"disks": {
+"description": "Output only. The disks attached to the source VM.",
+"items": {
+"$ref": "AwsDiskDetails"
+},
+"readOnly": true,
+"type": "array"
+},
+"firmware": {
+"description": "Output only. The firmware type of the source VM.",
+"enum": [
+"FIRMWARE_UNSPECIFIED",
+"EFI",
+"BIOS"
+],
+"enumDescriptions": [
+"The firmware is unknown.",
+"The firmware is EFI.",
+"The firmware is BIOS."
+],
+"readOnly": true,
+"type": "string"
+},
+"vmCapabilitiesInfo": {
+"$ref": "VmCapabilities",
+"description": "Output only. Information about VM capabilities needed for some Compute Engine features.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"AwsVmDetails": {
+"description": "AwsVmDetails describes a VM in AWS.",
+"id": "AwsVmDetails",
+"properties": {
+"architecture": {
+"description": "The CPU architecture.",
+"enum": [
+"VM_ARCHITECTURE_UNSPECIFIED",
+"I386",
+"X86_64",
+"ARM64",
+"X86_64_MAC"
+],
+"enumDescriptions": [
+"The architecture is unknown.",
+"The architecture is I386.",
+"The architecture is X86_64.",
+"The architecture is ARM64.",
+"The architecture is X86_64_MAC."
+],
+"type": "string"
+},
+"bootOption": {
+"description": "The VM Boot Option.",
+"enum": [
+"BOOT_OPTION_UNSPECIFIED",
+"EFI",
+"BIOS"
+],
+"enumDescriptions": [
+"The boot option is unknown.",
+"The boot option is UEFI.",
+"The boot option is LEGACY-BIOS."
+],
+"type": "string"
+},
+"committedStorageMb": {
+"description": "The total size of the storage allocated to the VM in MB.",
+"format": "int64",
+"type": "string"
+},
+"cpuCount": {
+"description": "The number of cpus the VM has.",
+"format": "int32",
+"type": "integer"
+},
+"diskCount": {
+"description": "The number of disks the VM has.",
+"format": "int32",
+"type": "integer"
+},
+"displayName": {
+"description": "The display name of the VM. Note that this value is not necessarily unique.",
+"type": "string"
+},
+"instanceType": {
+"description": "The instance type of the VM.",
+"type": "string"
+},
+"memoryMb": {
+"description": "The memory size of the VM in MB.",
+"format": "int32",
+"type": "integer"
+},
+"osDescription": {
+"description": "The VM's OS.",
+"type": "string"
+},
+"powerState": {
+"description": "Output only. The power state of the VM at the moment list was taken.",
+"enum": [
+"POWER_STATE_UNSPECIFIED",
+"ON",
+"OFF",
+"SUSPENDED",
+"PENDING"
+],
+"enumDescriptions": [
+"Power state is not specified.",
+"The VM is turned on.",
+"The VM is turned off.",
+"The VM is suspended. This is similar to hibernation or sleep mode.",
+"The VM is starting."
+],
+"readOnly": true,
+"type": "string"
+},
+"securityGroups": {
+"description": "The security groups the VM belongs to.",
+"items": {
+"$ref": "AwsSecurityGroup"
+},
+"type": "array"
+},
+"sourceDescription": {
+"description": "The descriptive name of the AWS's source this VM is connected to.",
+"type": "string"
+},
+"sourceId": {
+"description": "The id of the AWS's source this VM is connected to.",
+"type": "string"
+},
+"tags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The tags of the VM.",
+"type": "object"
+},
+"virtualizationType": {
+"description": "The virtualization type.",
+"enum": [
+"VM_VIRTUALIZATION_TYPE_UNSPECIFIED",
+"HVM",
+"PARAVIRTUAL"
+],
+"enumDescriptions": [
+"The virtualization type is unknown.",
+"The virtualziation type is HVM.",
+"The virtualziation type is PARAVIRTUAL."
+],
+"type": "string"
+},
+"vmId": {
+"description": "The VM ID in AWS.",
+"type": "string"
+},
+"vpcId": {
+"description": "The VPC ID the VM belongs to.",
+"type": "string"
+},
+"zone": {
+"description": "The AWS zone of the VM.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AwsVmsDetails": {
+"description": "AWSVmsDetails describes VMs in AWS.",
+"id": "AwsVmsDetails",
+"properties": {
+"details": {
+"description": "The details of the AWS VMs.",
+"items": {
+"$ref": "AwsVmDetails"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"AzureDiskDetails": {
+"description": "The details of an Azure VM disk.",
+"id": "AzureDiskDetails",
+"properties": {
+"diskId": {
+"description": "Output only. Azure disk ID.",
+"readOnly": true,
+"type": "string"
+},
+"diskNumber": {
+"description": "Output only. The ordinal number of the disk.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"sizeGb": {
+"description": "Output only. Size in GB.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"AzureSourceDetails": {
+"description": "AzureSourceDetails message describes a specific source details for the Azure source type.",
+"id": "AzureSourceDetails",
+"properties": {
+"azureLocation": {
+"description": "Immutable. The Azure location (region) that the source VMs will be migrated from.",
+"type": "string"
+},
+"clientSecretCreds": {
+"$ref": "ClientSecretCredentials",
+"description": "Azure Credentials using tenant ID, client ID and secret."
+},
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details on the state of the Source in case of an error.",
+"readOnly": true
+},
+"migrationResourcesUserTags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "User specified tags to add to every M2VM generated resource in Azure. These tags will be set in addition to the default tags that are set as part of the migration process. The tags must not begin with the reserved prefix `m4ce` or `m2vm`.",
+"type": "object"
+},
+"resourceGroupId": {
+"description": "Output only. The ID of the Azure resource group that contains all resources related to the migration process of this source.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the source as determined by the health check.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"FAILED",
+"ACTIVE"
+],
+"enumDescriptions": [
+"The state is unknown. This is used for API compatibility only and is not used by the system.",
+"The state was not sampled by the health checks yet.",
+"The source is available but might not be usable yet due to invalid credentials or another reason. The error message will contain further details.",
+"The source exists and its credentials were verified."
+],
+"readOnly": true,
+"type": "string"
+},
+"subscriptionId": {
+"description": "Immutable. Azure subscription ID.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AzureSourceVmDetails": {
+"description": "Represent the source Azure VM details.",
+"id": "AzureSourceVmDetails",
+"properties": {
+"architecture": {
+"description": "Output only. The VM architecture.",
+"enum": [
+"VM_ARCHITECTURE_UNSPECIFIED",
+"VM_ARCHITECTURE_X86_FAMILY",
+"VM_ARCHITECTURE_ARM64"
+],
+"enumDescriptions": [
+"The architecture is unknown.",
+"The architecture is one of the x86 architectures.",
+"The architecture is ARM64."
+],
+"readOnly": true,
+"type": "string"
+},
+"committedStorageBytes": {
+"description": "Output only. The total size of the disks being migrated in bytes.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"disks": {
+"description": "Output only. The disks attached to the source VM.",
+"items": {
+"$ref": "AzureDiskDetails"
+},
+"readOnly": true,
+"type": "array"
+},
+"firmware": {
+"description": "Output only. The firmware type of the source VM.",
+"enum": [
+"FIRMWARE_UNSPECIFIED",
+"EFI",
+"BIOS"
+],
+"enumDescriptions": [
+"The firmware is unknown.",
+"The firmware is EFI.",
+"The firmware is BIOS."
+],
+"readOnly": true,
+"type": "string"
+},
+"vmCapabilitiesInfo": {
+"$ref": "VmCapabilities",
+"description": "Output only. Information about VM capabilities needed for some Compute Engine features.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"AzureVmDetails": {
+"description": "AzureVmDetails describes a VM in Azure.",
+"id": "AzureVmDetails",
+"properties": {
+"architecture": {
+"description": "The CPU architecture.",
+"enum": [
+"VM_ARCHITECTURE_UNSPECIFIED",
+"VM_ARCHITECTURE_X86_FAMILY",
+"VM_ARCHITECTURE_ARM64"
+],
+"enumDescriptions": [
+"The architecture is unknown.",
+"The architecture is one of the x86 architectures.",
+"The architecture is ARM64."
+],
+"type": "string"
+},
+"bootOption": {
+"description": "The VM Boot Option.",
+"enum": [
+"BOOT_OPTION_UNSPECIFIED",
+"EFI",
+"BIOS"
+],
+"enumDescriptions": [
+"The boot option is unknown.",
+"The boot option is UEFI.",
+"The boot option is BIOS."
+],
+"type": "string"
+},
+"committedStorageMb": {
+"description": "The total size of the storage allocated to the VM in MB.",
+"format": "int64",
+"type": "string"
+},
+"computerName": {
+"description": "The VM's ComputerName.",
+"type": "string"
+},
+"cpuCount": {
+"description": "The number of cpus the VM has.",
+"format": "int32",
+"type": "integer"
+},
+"diskCount": {
+"description": "The number of disks the VM has, including OS disk.",
+"format": "int32",
+"type": "integer"
+},
+"disks": {
+"description": "Description of the data disks.",
+"items": {
+"$ref": "Disk"
+},
+"type": "array"
+},
+"memoryMb": {
+"description": "The memory size of the VM in MB.",
+"format": "int32",
+"type": "integer"
+},
+"osDescription": {
+"$ref": "OSDescription",
+"description": "Description of the OS."
+},
+"osDisk": {
+"$ref": "OSDisk",
+"description": "Description of the OS disk."
+},
+"powerState": {
+"description": "The power state of the VM at the moment list was taken.",
+"enum": [
+"POWER_STATE_UNSPECIFIED",
+"STARTING",
+"RUNNING",
+"STOPPING",
+"STOPPED",
+"DEALLOCATING",
+"DEALLOCATED",
+"UNKNOWN"
+],
+"enumDescriptions": [
+"Power state is not specified.",
+"The VM is starting.",
+"The VM is running.",
+"The VM is stopping.",
+"The VM is stopped.",
+"The VM is deallocating.",
+"The VM is deallocated.",
+"The VM's power state is unknown."
+],
+"type": "string"
+},
+"tags": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The tags of the VM.",
+"type": "object"
+},
+"vmId": {
+"description": "The VM full path in Azure.",
+"type": "string"
+},
+"vmSize": {
+"description": "VM size as configured in Azure. Determines the VM's hardware spec.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"AzureVmsDetails": {
+"description": "AzureVmsDetails describes VMs in Azure.",
+"id": "AzureVmsDetails",
+"properties": {
+"details": {
+"description": "The details of the Azure VMs.",
+"items": {
+"$ref": "AzureVmDetails"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"BootDiskDefaults": {
+"description": "BootDiskDefaults hold information about the boot disk of a VM.",
+"id": "BootDiskDefaults",
+"properties": {
+"deviceName": {
+"description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
+"type": "string"
+},
+"diskName": {
+"description": "Optional. The name of the disk.",
+"type": "string"
+},
+"diskType": {
+"description": "Optional. The type of disk provisioning to use for the VM.",
+"enum": [
+"COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
+"COMPUTE_ENGINE_DISK_TYPE_STANDARD",
+"COMPUTE_ENGINE_DISK_TYPE_SSD",
+"COMPUTE_ENGINE_DISK_TYPE_BALANCED",
+"COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED"
+],
+"enumDescriptions": [
+"An unspecified disk type. Will be used as STANDARD.",
+"A Standard disk type.",
+"SSD hard disk type.",
+"An alternative to SSD persistent disks that balance performance and cost.",
+"Hyperdisk balanced disk type."
+],
+"type": "string"
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Optional. The encryption to apply to the boot disk."
+},
+"image": {
+"$ref": "DiskImageDefaults",
+"description": "The image to use when creating the disk."
+}
+},
+"type": "object"
+},
+"CancelCloneJobRequest": {
+"description": "Request message for 'CancelCloneJob' request.",
+"id": "CancelCloneJobRequest",
+"properties": {},
+"type": "object"
+},
+"CancelCutoverJobRequest": {
+"description": "Request message for 'CancelCutoverJob' request.",
+"id": "CancelCutoverJobRequest",
+"properties": {},
+"type": "object"
+},
+"CancelImageImportJobRequest": {
+"description": "Request message for 'CancelImageImportJob' request.",
+"id": "CancelImageImportJobRequest",
+"properties": {},
+"type": "object"
+},
+"CancelOperationRequest": {
+"description": "The request message for Operations.CancelOperation.",
+"id": "CancelOperationRequest",
+"properties": {},
+"type": "object"
+},
+"ClientSecretCredentials": {
+"description": "Message describing Azure Credentials using tenant ID, client ID and secret.",
+"id": "ClientSecretCredentials",
+"properties": {
+"clientId": {
+"description": "Azure client ID.",
+"type": "string"
+},
+"clientSecret": {
+"description": "Input only. Azure client secret.",
+"type": "string"
+},
+"tenantId": {
+"description": "Azure tenant ID.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CloneJob": {
+"description": "CloneJob describes the process of creating a clone of a MigratingVM to the requested target based on the latest successful uploaded snapshots. While the migration cycles of a MigratingVm take place, it is possible to verify the uploaded VM can be started in the cloud, by creating a clone. The clone can be created without any downtime, and it is created using the latest snapshots which are already in the cloud. The cloneJob is only responsible for its work, not its products, which means once it is finished, it will never touch the instance it created. It will only delete it in case of the CloneJob being cancelled or upon failure to clone.",
+"id": "CloneJob",
+"properties": {
+"computeEngineDisksTargetDetails": {
+"$ref": "ComputeEngineDisksTargetDetails",
+"description": "Output only. Details of the target Persistent Disks in Compute Engine.",
+"readOnly": true
+},
+"computeEngineTargetDetails": {
+"$ref": "ComputeEngineTargetDetails",
+"description": "Output only. Details of the target VM in Compute Engine.",
+"readOnly": true
+},
+"computeEngineVmDetails": {
+"$ref": "TargetVMDetails",
+"deprecated": true,
+"description": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
+"readOnly": true
+},
+"createTime": {
+"description": "Output only. The time the clone job was created (as an API call, not when it was actually created in the target).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the clone job was ended.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details for the errors that led to the Clone Job's state.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. The name of the clone.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the clone job.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"ACTIVE",
+"FAILED",
+"SUCCEEDED",
+"CANCELLED",
+"CANCELLING",
+"ADAPTING_OS"
+],
+"enumDescriptions": [
+"The state is unknown. This is used for API compatibility only and is not used by the system.",
+"The clone job has not yet started.",
+"The clone job is active and running.",
+"The clone job finished with errors.",
+"The clone job finished successfully.",
+"The clone job was cancelled.",
+"The clone job is being cancelled.",
+"OS adaptation is running as part of the clone job to generate license."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateTime": {
+"description": "Output only. The time the state was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"steps": {
+"description": "Output only. The clone steps list representing its progress.",
+"items": {
+"$ref": "CloneStep"
+},
+"readOnly": true,
+"type": "array"
+},
+"targetDetails": {
+"$ref": "TargetVMDetails",
+"deprecated": true,
+"description": "Output only. Details of the VM to create as the target of this clone job. Deprecated: Use compute_engine_target_details instead.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"CloneStep": {
+"description": "CloneStep holds information about the clone step progress.",
+"id": "CloneStep",
+"properties": {
+"adaptingOs": {
+"$ref": "AdaptingOSStep",
+"description": "Adapting OS step."
+},
+"endTime": {
+"description": "The time the step has ended.",
+"format": "google-datetime",
+"type": "string"
+},
+"instantiatingMigratedVm": {
+"$ref": "InstantiatingMigratedVMStep",
+"description": "Instantiating migrated VM step."
+},
+"preparingVmDisks": {
+"$ref": "PreparingVMDisksStep",
+"description": "Preparing VM disks step."
+},
+"startTime": {
+"description": "The time the step has started.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ComputeEngineDisksTargetDefaults": {
+"description": "ComputeEngineDisksTargetDefaults is a collection of details for creating Persistent Disks in a target Compute Engine project.",
+"id": "ComputeEngineDisksTargetDefaults",
+"properties": {
+"disks": {
+"description": "The details of each Persistent Disk to create.",
+"items": {
+"$ref": "PersistentDiskDefaults"
+},
+"type": "array"
+},
+"disksTargetDefaults": {
+"$ref": "DisksMigrationDisksTargetDefaults",
+"description": "Details of the disk only migration target."
+},
+"targetProject": {
+"description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create the Persistent Disks.",
+"type": "string"
+},
+"vmTargetDefaults": {
+"$ref": "DisksMigrationVmTargetDefaults",
+"description": "Details of the VM migration target."
+},
+"zone": {
+"description": "The zone in which to create the Persistent Disks.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ComputeEngineDisksTargetDetails": {
+"description": "ComputeEngineDisksTargetDetails is a collection of created Persistent Disks details.",
+"id": "ComputeEngineDisksTargetDetails",
+"properties": {
+"disks": {
+"description": "The details of each created Persistent Disk.",
+"items": {
+"$ref": "PersistentDisk"
+},
+"type": "array"
+},
+"disksTargetDetails": {
+"$ref": "DisksMigrationDisksTargetDetails",
+"description": "Details of the disks-only migration target."
+},
+"vmTargetDetails": {
+"$ref": "DisksMigrationVmTargetDetails",
+"description": "Details for the VM the migrated data disks are attached to."
+}
+},
+"type": "object"
+},
+"ComputeEngineTargetDefaults": {
+"description": "ComputeEngineTargetDefaults is a collection of details for creating a VM in a target Compute Engine project.",
+"id": "ComputeEngineTargetDefaults",
+"properties": {
+"additionalLicenses": {
+"description": "Additional licenses to assign to the VM.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"appliedLicense": {
+"$ref": "AppliedLicense",
+"description": "Output only. The OS license returned from the adaptation module report.",
+"readOnly": true
+},
+"bootConversion": {
+"description": "Optional. By default the virtual machine will keep its existing boot option. Setting this property will trigger an internal process which will convert the virtual machine from using the existing boot option to another.",
+"enum": [
+"BOOT_CONVERSION_UNSPECIFIED",
+"NONE",
+"BIOS_TO_EFI"
+],
+"enumDescriptions": [
+"Unspecified conversion type.",
+"No conversion.",
+"Convert from BIOS to EFI."
+],
+"type": "string"
+},
+"bootOption": {
+"description": "Output only. The VM Boot Option, as set in the source VM.",
+"enum": [
+"COMPUTE_ENGINE_BOOT_OPTION_UNSPECIFIED",
+"COMPUTE_ENGINE_BOOT_OPTION_EFI",
+"COMPUTE_ENGINE_BOOT_OPTION_BIOS"
+],
+"enumDescriptions": [
+"The boot option is unknown.",
+"The boot option is EFI.",
+"The boot option is BIOS."
+],
+"readOnly": true,
+"type": "string"
+},
+"computeScheduling": {
+"$ref": "ComputeScheduling",
+"description": "Compute instance scheduling information (if empty default is used)."
+},
+"diskType": {
+"description": "The disk type to use in the VM.",
+"enum": [
+"COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
+"COMPUTE_ENGINE_DISK_TYPE_STANDARD",
+"COMPUTE_ENGINE_DISK_TYPE_SSD",
+"COMPUTE_ENGINE_DISK_TYPE_BALANCED",
+"COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED"
+],
+"enumDescriptions": [
+"An unspecified disk type. Will be used as STANDARD.",
+"A Standard disk type.",
+"SSD hard disk type.",
+"An alternative to SSD persistent disks that balance performance and cost.",
+"Hyperdisk balanced disk type."
+],
+"type": "string"
+},
+"enableIntegrityMonitoring": {
+"description": "Optional. Defines whether the instance has integrity monitoring enabled. This can be set to true only if the VM boot option is EFI, and vTPM is enabled.",
+"type": "boolean"
+},
+"enableVtpm": {
+"description": "Optional. Defines whether the instance has vTPM enabled. This can be set to true only if the VM boot option is EFI.",
+"type": "boolean"
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Optional. Immutable. The encryption to apply to the VM disks."
+},
+"hostname": {
+"description": "The hostname to assign to the VM.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map of labels to associate with the VM.",
+"type": "object"
+},
+"licenseType": {
+"description": "The license type to use in OS adaptation.",
+"enum": [
+"COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT",
+"COMPUTE_ENGINE_LICENSE_TYPE_PAYG",
+"COMPUTE_ENGINE_LICENSE_TYPE_BYOL"
+],
+"enumDescriptions": [
+"The license type is the default for the OS.",
+"The license type is Pay As You Go license type.",
+"The license type is Bring Your Own License type."
+],
+"type": "string"
+},
+"machineType": {
+"description": "The machine type to create the VM with.",
+"type": "string"
+},
+"machineTypeSeries": {
+"description": "The machine type series to create the VM with.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The metadata key/value pairs to assign to the VM.",
+"type": "object"
+},
+"networkInterfaces": {
+"description": "List of NICs connected to this VM.",
+"items": {
+"$ref": "NetworkInterface"
+},
+"type": "array"
+},
+"networkTags": {
+"description": "A list of network tags to associate with the VM.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"secureBoot": {
+"description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI.",
+"type": "boolean"
+},
+"serviceAccount": {
+"description": "The service account to associate the VM with.",
+"type": "string"
+},
+"targetProject": {
+"description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.",
+"type": "string"
+},
+"vmName": {
+"description": "The name of the VM to create.",
+"type": "string"
+},
+"zone": {
+"description": "The zone in which to create the VM.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ComputeEngineTargetDetails": {
+"description": "ComputeEngineTargetDetails is a collection of details for creating a VM in a target Compute Engine project.",
+"id": "ComputeEngineTargetDetails",
+"properties": {
+"additionalLicenses": {
+"description": "Additional licenses to assign to the VM.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"appliedLicense": {
+"$ref": "AppliedLicense",
+"description": "The OS license returned from the adaptation module report."
+},
+"bootConversion": {
+"description": "Optional. By default the virtual machine will keep its existing boot option. Setting this property will trigger an internal process which will convert the virtual machine from using the existing boot option to another.",
+"enum": [
+"BOOT_CONVERSION_UNSPECIFIED",
+"NONE",
+"BIOS_TO_EFI"
+],
+"enumDescriptions": [
+"Unspecified conversion type.",
+"No conversion.",
+"Convert from BIOS to EFI."
+],
+"type": "string"
+},
+"bootOption": {
+"description": "The VM Boot Option, as set in the source VM.",
+"enum": [
+"COMPUTE_ENGINE_BOOT_OPTION_UNSPECIFIED",
+"COMPUTE_ENGINE_BOOT_OPTION_EFI",
+"COMPUTE_ENGINE_BOOT_OPTION_BIOS"
+],
+"enumDescriptions": [
+"The boot option is unknown.",
+"The boot option is EFI.",
+"The boot option is BIOS."
+],
+"type": "string"
+},
+"computeScheduling": {
+"$ref": "ComputeScheduling",
+"description": "Compute instance scheduling information (if empty default is used)."
+},
+"diskType": {
+"description": "The disk type to use in the VM.",
+"enum": [
+"COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
+"COMPUTE_ENGINE_DISK_TYPE_STANDARD",
+"COMPUTE_ENGINE_DISK_TYPE_SSD",
+"COMPUTE_ENGINE_DISK_TYPE_BALANCED",
+"COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED"
+],
+"enumDescriptions": [
+"An unspecified disk type. Will be used as STANDARD.",
+"A Standard disk type.",
+"SSD hard disk type.",
+"An alternative to SSD persistent disks that balance performance and cost.",
+"Hyperdisk balanced disk type."
+],
+"type": "string"
+},
+"enableIntegrityMonitoring": {
+"description": "Optional. Defines whether the instance has integrity monitoring enabled.",
+"type": "boolean"
+},
+"enableVtpm": {
+"description": "Optional. Defines whether the instance has vTPM enabled.",
+"type": "boolean"
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Optional. The encryption to apply to the VM disks."
+},
+"hostname": {
+"description": "The hostname to assign to the VM.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map of labels to associate with the VM.",
+"type": "object"
+},
+"licenseType": {
+"description": "The license type to use in OS adaptation.",
+"enum": [
+"COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT",
+"COMPUTE_ENGINE_LICENSE_TYPE_PAYG",
+"COMPUTE_ENGINE_LICENSE_TYPE_BYOL"
+],
+"enumDescriptions": [
+"The license type is the default for the OS.",
+"The license type is Pay As You Go license type.",
+"The license type is Bring Your Own License type."
+],
+"type": "string"
+},
+"machineType": {
+"description": "The machine type to create the VM with.",
+"type": "string"
+},
+"machineTypeSeries": {
+"description": "The machine type series to create the VM with.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The metadata key/value pairs to assign to the VM.",
+"type": "object"
+},
+"networkInterfaces": {
+"description": "List of NICs connected to this VM.",
+"items": {
+"$ref": "NetworkInterface"
+},
+"type": "array"
+},
+"networkTags": {
+"description": "A list of network tags to associate with the VM.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"project": {
+"description": "The Google Cloud target project ID or project name.",
+"type": "string"
+},
+"secureBoot": {
+"description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI.",
+"type": "boolean"
+},
+"serviceAccount": {
+"description": "The service account to associate the VM with.",
+"type": "string"
+},
+"vmName": {
+"description": "The name of the VM to create.",
+"type": "string"
+},
+"zone": {
+"description": "The zone in which to create the VM.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ComputeScheduling": {
+"description": "Scheduling information for VM on maintenance/restart behaviour and node allocation in sole tenant nodes. Options for instance behavior when the host machine undergoes maintenance that may temporarily impact instance performance.",
+"id": "ComputeScheduling",
+"properties": {
+"automaticRestart": {
+"deprecated": true,
+"type": "boolean"
+},
+"minNodeCpus": {
+"description": "The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node. Ignored if no node_affinites are configured.",
+"format": "int32",
+"type": "integer"
+},
+"nodeAffinities": {
+"description": "A set of node affinity and anti-affinity configurations for sole tenant nodes.",
+"items": {
+"$ref": "SchedulingNodeAffinity"
+},
+"type": "array"
+},
+"onHostMaintenance": {
+"description": "How the instance should behave when the host machine undergoes maintenance that may temporarily impact instance performance.",
+"enum": [
+"ON_HOST_MAINTENANCE_UNSPECIFIED",
+"TERMINATE",
+"MIGRATE"
+],
+"enumDescriptions": [
+"An unknown, unexpected behavior.",
+"Terminate the instance when the host machine undergoes maintenance.",
+"Migrate the instance when the host machine undergoes maintenance."
+],
+"type": "string"
+},
+"restartType": {
+"description": "Whether the Instance should be automatically restarted whenever it is terminated by Compute Engine (not terminated by user). This configuration is identical to `automaticRestart` field in Compute Engine create instance under scheduling. It was changed to an enum (instead of a boolean) to match the default value in Compute Engine which is automatic restart.",
+"enum": [
+"RESTART_TYPE_UNSPECIFIED",
+"AUTOMATIC_RESTART",
+"NO_AUTOMATIC_RESTART"
+],
+"enumDescriptions": [
+"Unspecified behavior. This will use the default.",
+"The Instance should be automatically restarted whenever it is terminated by Compute Engine.",
+"The Instance isn't automatically restarted whenever it is terminated by Compute Engine."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"CreatingImageStep": {
+"description": "CreatingImageStep contains specific step details.",
+"id": "CreatingImageStep",
+"properties": {},
+"type": "object"
+},
+"CutoverForecast": {
+"description": "CutoverForecast holds information about future CutoverJobs of a MigratingVm.",
+"id": "CutoverForecast",
+"properties": {
+"estimatedCutoverJobDuration": {
+"description": "Output only. Estimation of the CutoverJob duration.",
+"format": "google-duration",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"CutoverJob": {
+"description": "CutoverJob message describes a cutover of a migrating VM. The CutoverJob is the operation of shutting down the VM, creating a snapshot and clonning the VM using the replicated snapshot.",
+"id": "CutoverJob",
+"properties": {
+"computeEngineDisksTargetDetails": {
+"$ref": "ComputeEngineDisksTargetDetails",
+"description": "Output only. Details of the target Persistent Disks in Compute Engine.",
+"readOnly": true
+},
+"computeEngineTargetDetails": {
+"$ref": "ComputeEngineTargetDetails",
+"description": "Output only. Details of the target VM in Compute Engine.",
+"readOnly": true
+},
+"computeEngineVmDetails": {
+"$ref": "TargetVMDetails",
+"deprecated": true,
+"description": "Output only. Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_details instead.",
+"readOnly": true
+},
+"createTime": {
+"description": "Output only. The time the cutover job was created (as an API call, not when it was actually created in the target).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the cutover job had finished.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details for the errors that led to the Cutover Job's state.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. The name of the cutover job.",
+"readOnly": true,
+"type": "string"
+},
+"progress": {
+"deprecated": true,
+"description": "Output only. The current progress in percentage of the cutover job.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"progressPercent": {
+"description": "Output only. The current progress in percentage of the cutover job.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"state": {
+"description": "Output only. State of the cutover job.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"FAILED",
+"SUCCEEDED",
+"CANCELLED",
+"CANCELLING",
+"ACTIVE",
+"ADAPTING_OS"
+],
+"enumDescriptions": [
+"The state is unknown. This is used for API compatibility only and is not used by the system.",
+"The cutover job has not yet started.",
+"The cutover job finished with errors.",
+"The cutover job finished successfully.",
+"The cutover job was cancelled.",
+"The cutover job is being cancelled.",
+"The cutover job is active and running.",
+"OS adaptation is running as part of the cutover job to generate license."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateMessage": {
+"description": "Output only. A message providing possible extra details about the current state.",
+"readOnly": true,
+"type": "string"
+},
+"stateTime": {
+"description": "Output only. The time the state was last updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"steps": {
+"description": "Output only. The cutover steps list representing its progress.",
+"items": {
+"$ref": "CutoverStep"
+},
+"readOnly": true,
+"type": "array"
+},
+"targetDetails": {
+"$ref": "TargetVMDetails",
+"deprecated": true,
+"description": "Output only. Details of the VM to create as the target of this cutover job. Deprecated: Use compute_engine_target_details instead.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"CutoverStep": {
+"description": "CutoverStep holds information about the cutover step progress.",
+"id": "CutoverStep",
+"properties": {
+"endTime": {
+"description": "The time the step has ended.",
+"format": "google-datetime",
+"type": "string"
+},
+"finalSync": {
+"$ref": "ReplicationCycle",
+"description": "Final sync step."
+},
+"instantiatingMigratedVm": {
+"$ref": "InstantiatingMigratedVMStep",
+"description": "Instantiating migrated VM step."
+},
+"preparingVmDisks": {
+"$ref": "PreparingVMDisksStep",
+"description": "Preparing VM disks step."
+},
+"previousReplicationCycle": {
+"$ref": "ReplicationCycle",
+"description": "A replication cycle prior cutover step."
+},
+"shuttingDownSourceVm": {
+"$ref": "ShuttingDownSourceVMStep",
+"description": "Shutting down VM step."
+},
+"startTime": {
+"description": "The time the step has started.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"CycleStep": {
+"description": "CycleStep holds information about a step progress.",
+"id": "CycleStep",
+"properties": {
+"endTime": {
+"description": "The time the cycle step has ended.",
+"format": "google-datetime",
+"type": "string"
+},
+"initializingReplication": {
+"$ref": "InitializingReplicationStep",
+"description": "Initializing replication step."
+},
+"postProcessing": {
+"$ref": "PostProcessingStep",
+"description": "Post processing step."
+},
+"replicating": {
+"$ref": "ReplicatingStep",
+"description": "Replicating step."
+},
+"startTime": {
+"description": "The time the cycle step has started.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DataDiskImageImport": {
+"description": "Mentions that the image import is not using OS adaptation process.",
+"id": "DataDiskImageImport",
+"properties": {},
+"type": "object"
+},
+"DatacenterConnector": {
+"description": "DatacenterConnector message describes a connector between the Source and Google Cloud, which is installed on a vmware datacenter (an OVA vm installed by the user) to connect the Datacenter to Google Cloud and support vm migration data transfer.",
+"id": "DatacenterConnector",
+"properties": {
+"applianceInfrastructureVersion": {
+"description": "Output only. Appliance OVA version. This is the OVA which is manually installed by the user and contains the infrastructure for the automatically updatable components on the appliance.",
+"readOnly": true,
+"type": "string"
+},
+"applianceSoftwareVersion": {
+"description": "Output only. Appliance last installed update bundle version. This is the version of the automatically updatable components on the appliance.",
+"readOnly": true,
+"type": "string"
+},
+"availableVersions": {
+"$ref": "AvailableUpdates",
+"description": "Output only. The available versions for updating this appliance.",
+"readOnly": true
+},
+"bucket": {
+"description": "Output only. The communication channel between the datacenter connector and Google Cloud.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the connector was created (as an API call, not when it was actually installed).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details on the state of the Datacenter Connector in case of an error.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. The connector's name.",
+"readOnly": true,
+"type": "string"
+},
+"registrationId": {
+"description": "Immutable. A unique key for this connector. This key is internal to the OVA connector and is supplied with its creation during the registration process and can not be modified.",
+"type": "string"
+},
+"serviceAccount": {
+"description": "The service account to use in the connector when communicating with the cloud.",
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the DatacenterConnector, as determined by the health checks.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"OFFLINE",
+"FAILED",
+"ACTIVE"
+],
+"enumDescriptions": [
+"The state is unknown. This is used for API compatibility only and is not used by the system.",
+"The state was not sampled by the health checks yet.",
+"The source was sampled by health checks and is not available.",
+"The source is available but might not be usable yet due to unvalidated credentials or another reason. The credentials referred to are the ones to the Source. The error message will contain further details.",
+"The source exists and its credentials were verified."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateTime": {
+"description": "Output only. The time the state was last set.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last time the connector was updated with an API call.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"upgradeStatus": {
+"$ref": "UpgradeStatus",
+"description": "Output only. The status of the current / last upgradeAppliance operation.",
+"readOnly": true
+},
+"version": {
+"description": "The version running in the DatacenterConnector. This is supplied by the OVA connector during the registration process and can not be modified.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Disk": {
+"description": "A message describing a data disk.",
+"id": "Disk",
+"properties": {
+"lun": {
+"description": "The disk's Logical Unit Number (LUN).",
+"format": "int32",
+"type": "integer"
+},
+"name": {
+"description": "The disk name.",
+"type": "string"
+},
+"sizeGb": {
+"description": "The disk size in GB.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"DiskImageDefaults": {
+"description": "Contains details about the image source used to create the disk.",
+"id": "DiskImageDefaults",
+"properties": {
+"sourceImage": {
+"description": "Required. The Image resource used when creating the disk.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DiskImageTargetDetails": {
+"description": "The target details of the image resource that will be created by the import job.",
+"id": "DiskImageTargetDetails",
+"properties": {
+"additionalLicenses": {
+"description": "Optional. Additional licenses to assign to the image. Format: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/licenses/LICENSE_NAME Or https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/licenses/LICENSE_NAME",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"dataDiskImageImport": {
+"$ref": "DataDiskImageImport",
+"description": "Optional. Use to skip OS adaptation process."
+},
+"description": {
+"description": "Optional. An optional description of the image.",
+"type": "string"
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Immutable. The encryption to apply to the image."
+},
+"familyName": {
+"description": "Optional. The name of the image family to which the new image belongs.",
+"type": "string"
+},
+"imageName": {
+"description": "Required. The name of the image to be created.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. A map of labels to associate with the image.",
+"type": "object"
+},
+"osAdaptationParameters": {
+"$ref": "ImageImportOsAdaptationParameters",
+"description": "Optional. Use to set the parameters relevant for the OS adaptation process."
+},
+"singleRegionStorage": {
+"description": "Optional. Set to true to set the image storageLocations to the single region of the import job. When false, the closest multi-region is selected.",
+"type": "boolean"
+},
+"targetProject": {
+"description": "Required. Reference to the TargetProject resource that represents the target project in which the imported image will be created.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DisksMigrationDisksTargetDefaults": {
+"description": "Details for a disk only migration.",
+"id": "DisksMigrationDisksTargetDefaults",
+"properties": {},
+"type": "object"
+},
+"DisksMigrationDisksTargetDetails": {
+"description": "Details for a disks-only migration.",
+"id": "DisksMigrationDisksTargetDetails",
+"properties": {},
+"type": "object"
+},
+"DisksMigrationVmTargetDefaults": {
+"description": "Details for creation of a VM that migrated data disks will be attached to.",
+"id": "DisksMigrationVmTargetDefaults",
+"properties": {
+"additionalLicenses": {
+"description": "Optional. Additional licenses to assign to the VM.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"bootDiskDefaults": {
+"$ref": "BootDiskDefaults",
+"description": "Optional. Details of the boot disk of the VM."
+},
+"computeScheduling": {
+"$ref": "ComputeScheduling",
+"description": "Optional. Compute instance scheduling information (if empty default is used)."
+},
+"enableIntegrityMonitoring": {
+"description": "Optional. Defines whether the instance has integrity monitoring enabled.",
+"type": "boolean"
+},
+"enableVtpm": {
+"description": "Optional. Defines whether the instance has vTPM enabled.",
+"type": "boolean"
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Optional. The encryption to apply to the VM."
+},
+"hostname": {
+"description": "Optional. The hostname to assign to the VM.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. A map of labels to associate with the VM.",
+"type": "object"
+},
+"machineType": {
+"description": "Required. The machine type to create the VM with.",
+"type": "string"
+},
+"machineTypeSeries": {
+"description": "Optional. The machine type series to create the VM with. For presentation only.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. The metadata key/value pairs to assign to the VM.",
+"type": "object"
+},
+"networkInterfaces": {
+"description": "Optional. NICs to attach to the VM.",
+"items": {
+"$ref": "NetworkInterface"
+},
+"type": "array"
+},
+"networkTags": {
+"description": "Optional. A list of network tags to associate with the VM.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"secureBoot": {
+"description": "Optional. Defines whether the instance has Secure Boot enabled. This can be set to true only if the VM boot option is EFI.",
+"type": "boolean"
+},
+"serviceAccount": {
+"description": "Optional. The service account to associate the VM with.",
+"type": "string"
+},
+"vmName": {
+"description": "Required. The name of the VM to create.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"DisksMigrationVmTargetDetails": {
+"description": "Details for the VM created VM as part of disks migration.",
+"id": "DisksMigrationVmTargetDetails",
+"properties": {
+"vmUri": {
+"description": "Output only. The URI of the Compute Engine VM.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"Empty": {
+"description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }",
+"id": "Empty",
+"properties": {},
+"type": "object"
+},
+"Encryption": {
+"description": "Encryption message describes the details of the applied encryption.",
+"id": "Encryption",
+"properties": {
+"kmsKey": {
+"description": "Required. The name of the encryption key that is stored in Google Cloud KMS.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"FetchInventoryResponse": {
+"description": "Response message for fetchInventory.",
+"id": "FetchInventoryResponse",
+"properties": {
+"awsVms": {
+"$ref": "AwsVmsDetails",
+"description": "The description of the VMs in a Source of type AWS."
+},
+"azureVms": {
+"$ref": "AzureVmsDetails",
+"description": "The description of the VMs in a Source of type Azure."
+},
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The timestamp when the source was last queried (if the result is from the cache).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"vmwareVms": {
+"$ref": "VmwareVmsDetails",
+"description": "The description of the VMs in a Source of type Vmware."
+}
+},
+"type": "object"
+},
+"FinalizeMigrationRequest": {
+"description": "Request message for 'FinalizeMigration' request.",
+"id": "FinalizeMigrationRequest",
+"properties": {},
+"type": "object"
+},
+"Group": {
+"description": "Describes message for 'Group' resource. The Group is a collections of several MigratingVms.",
+"id": "Group",
+"properties": {
+"createTime": {
+"description": "Output only. The create time timestamp.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "User-provided description of the group.",
+"type": "string"
+},
+"displayName": {
+"description": "Display name is a user defined name for this group which can be updated.",
+"type": "string"
+},
+"migrationTargetType": {
+"description": "Immutable. The target type of this group.",
+"enum": [
+"MIGRATION_TARGET_TYPE_UNSPECIFIED",
+"MIGRATION_TARGET_TYPE_GCE",
+"MIGRATION_TARGET_TYPE_DISKS"
+],
+"enumDescriptions": [
+"Group type is not specified. This defaults to Compute Engine targets.",
+"All MigratingVMs in the group must have Compute Engine targets.",
+"All MigratingVMs in the group must have Compute Engine Disks targets."
+],
+"type": "string"
+},
+"name": {
+"description": "Output only. The Group name.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The update time timestamp.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"ImageImport": {
+"description": "ImageImport describes the configuration of the image import to run.",
+"id": "ImageImport",
+"properties": {
+"cloudStorageUri": {
+"description": "Immutable. The path to the Cloud Storage file from which the image should be imported.",
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the image import was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"diskImageTargetDefaults": {
+"$ref": "DiskImageTargetDetails",
+"description": "Immutable. Target details for importing a disk image, will be used by ImageImportJob."
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Immutable. The encryption details used by the image import process during the image adaptation for Compute Engine."
+},
+"machineImageTargetDefaults": {
+"$ref": "MachineImageTargetDetails",
+"description": "Immutable. Target details for importing a machine image, will be used by ImageImportJob."
+},
+"name": {
+"description": "Output only. The resource path of the ImageImport.",
+"readOnly": true,
+"type": "string"
+},
+"recentImageImportJobs": {
+"description": "Output only. The result of the most recent runs for this ImageImport. All jobs for this ImageImport can be listed via ListImageImportJobs.",
+"items": {
+"$ref": "ImageImportJob"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ImageImportJob": {
+"description": "ImageImportJob describes the progress and result of an image import.",
+"id": "ImageImportJob",
+"properties": {
+"cloudStorageUri": {
+"description": "Output only. The path to the Cloud Storage file from which the image should be imported.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the image import was created (as an API call, not when it was actually created in the target).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"createdResources": {
+"description": "Output only. The resource paths of the resources created by the image import job.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"diskImageTargetDetails": {
+"$ref": "DiskImageTargetDetails",
+"description": "Output only. Target details used to import a disk image.",
+"readOnly": true
+},
+"endTime": {
+"description": "Output only. The time the image import was ended.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"errors": {
+"description": "Output only. Provides details on the error that led to the image import state in case of an error.",
+"items": {
+"$ref": "Status"
+},
+"readOnly": true,
+"type": "array"
+},
+"machineImageTargetDetails": {
+"$ref": "MachineImageTargetDetails",
+"description": "Output only. Target details used to import a machine image.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. The resource path of the ImageImportJob.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. The state of the image import.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"RUNNING",
+"SUCCEEDED",
+"FAILED",
+"CANCELLING",
+"CANCELLED"
+],
+"enumDescriptions": [
+"The state is unknown.",
+"The image import has not yet started.",
+"The image import is active and running.",
+"The image import has finished successfully.",
+"The image import has finished with errors.",
+"The image import is being cancelled.",
+"The image import was cancelled."
+],
+"readOnly": true,
+"type": "string"
+},
+"steps": {
+"description": "Output only. The image import steps list representing its progress.",
+"items": {
+"$ref": "ImageImportStep"
+},
+"readOnly": true,
+"type": "array"
+},
+"warnings": {
+"description": "Output only. Warnings that occurred during the image import.",
+"items": {
+"$ref": "MigrationWarning"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ImageImportOsAdaptationParameters": {
+"description": "Parameters affecting the OS adaptation process.",
+"id": "ImageImportOsAdaptationParameters",
+"properties": {
+"generalize": {
+"description": "Optional. Set to true in order to generalize the imported image. The generalization process enables co-existence of multiple VMs created from the same image. For Windows, generalizing the image removes computer-specific information such as installed drivers and the computer security identifier (SID).",
+"type": "boolean"
+},
+"licenseType": {
+"description": "Optional. Choose which type of license to apply to the imported image.",
+"enum": [
+"COMPUTE_ENGINE_LICENSE_TYPE_DEFAULT",
+"COMPUTE_ENGINE_LICENSE_TYPE_PAYG",
+"COMPUTE_ENGINE_LICENSE_TYPE_BYOL"
+],
+"enumDescriptions": [
+"The license type is the default for the OS.",
+"The license type is Pay As You Go license type.",
+"The license type is Bring Your Own License type."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ImageImportStep": {
+"description": "ImageImportStep holds information about the image import step progress.",
+"id": "ImageImportStep",
+"properties": {
+"adaptingOs": {
+"$ref": "AdaptingOSStep",
+"description": "Adapting OS step."
+},
+"creatingImage": {
+"$ref": "CreatingImageStep",
+"description": "Creating image step."
+},
+"endTime": {
+"description": "Output only. The time the step has ended.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"initializing": {
+"$ref": "InitializingImageImportStep",
+"description": "Initializing step."
+},
+"loadingSourceFiles": {
+"$ref": "LoadingImageSourceFilesStep",
+"description": "Loading source files step."
+},
+"startTime": {
+"description": "Output only. The time the step has started.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"InitializingImageImportStep": {
+"description": "InitializingImageImportStep contains specific step details.",
+"id": "InitializingImageImportStep",
+"properties": {},
+"type": "object"
+},
+"InitializingReplicationStep": {
+"description": "InitializingReplicationStep contains specific step details.",
+"id": "InitializingReplicationStep",
+"properties": {},
+"type": "object"
+},
+"InstantiatingMigratedVMStep": {
+"description": "InstantiatingMigratedVMStep contains specific step details.",
+"id": "InstantiatingMigratedVMStep",
+"properties": {},
+"type": "object"
+},
+"Link": {
+"description": "Describes a URL link.",
+"id": "Link",
+"properties": {
+"description": {
+"description": "Describes what the link offers.",
+"type": "string"
+},
+"url": {
+"description": "The URL of the link.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListCloneJobsResponse": {
+"description": "Response message for 'ListCloneJobs' request.",
+"id": "ListCloneJobsResponse",
+"properties": {
+"cloneJobs": {
+"description": "Output only. The list of clone jobs response.",
+"items": {
+"$ref": "CloneJob"
+},
+"readOnly": true,
+"type": "array"
+},
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListCutoverJobsResponse": {
+"description": "Response message for 'ListCutoverJobs' request.",
+"id": "ListCutoverJobsResponse",
+"properties": {
+"cutoverJobs": {
+"description": "Output only. The list of cutover jobs response.",
+"items": {
+"$ref": "CutoverJob"
+},
+"readOnly": true,
+"type": "array"
+},
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListDatacenterConnectorsResponse": {
+"description": "Response message for 'ListDatacenterConnectors' request.",
+"id": "ListDatacenterConnectorsResponse",
+"properties": {
+"datacenterConnectors": {
+"description": "Output only. The list of sources response.",
+"items": {
+"$ref": "DatacenterConnector"
+},
+"readOnly": true,
+"type": "array"
+},
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListGroupsResponse": {
+"description": "Response message for 'ListGroups' request.",
+"id": "ListGroupsResponse",
+"properties": {
+"groups": {
+"description": "Output only. The list of groups response.",
+"items": {
+"$ref": "Group"
+},
+"readOnly": true,
+"type": "array"
+},
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListImageImportJobsResponse": {
+"description": "Response message for 'ListImageImportJobs' call.",
+"id": "ListImageImportJobsResponse",
+"properties": {
+"imageImportJobs": {
+"description": "Output only. The list of target response.",
+"items": {
+"$ref": "ImageImportJob"
+},
+"readOnly": true,
+"type": "array"
+},
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListImageImportsResponse": {
+"description": "Response message for 'ListImageImports' call.",
+"id": "ListImageImportsResponse",
+"properties": {
+"imageImports": {
+"description": "Output only. The list of target response.",
+"items": {
+"$ref": "ImageImport"
+},
+"readOnly": true,
+"type": "array"
+},
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListLocationsResponse": {
+"description": "The response message for Locations.ListLocations.",
+"id": "ListLocationsResponse",
+"properties": {
+"locations": {
+"description": "A list of locations that matches the specified filter in the request.",
+"items": {
+"$ref": "Location"
+},
+"type": "array"
+},
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ListMigratingVmsResponse": {
+"description": "Response message for 'ListMigratingVms' request.",
+"id": "ListMigratingVmsResponse",
+"properties": {
+"migratingVms": {
+"description": "Output only. The list of Migrating VMs response.",
+"items": {
+"$ref": "MigratingVm"
+},
+"readOnly": true,
+"type": "array"
+},
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListOperationsResponse": {
+"description": "The response message for Operations.ListOperations.",
+"id": "ListOperationsResponse",
+"properties": {
+"nextPageToken": {
+"description": "The standard List next-page token.",
+"type": "string"
+},
+"operations": {
+"description": "A list of operations that matches the specified filter in the request.",
+"items": {
+"$ref": "Operation"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListReplicationCyclesResponse": {
+"description": "Response message for 'ListReplicationCycles' request.",
+"id": "ListReplicationCyclesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"replicationCycles": {
+"description": "Output only. The list of replication cycles response.",
+"items": {
+"$ref": "ReplicationCycle"
+},
+"readOnly": true,
+"type": "array"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListSourcesResponse": {
+"description": "Response message for 'ListSources' request.",
+"id": "ListSourcesResponse",
+"properties": {
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"sources": {
+"description": "Output only. The list of sources response.",
+"items": {
+"$ref": "Source"
+},
+"readOnly": true,
+"type": "array"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListTargetProjectsResponse": {
+"description": "Response message for 'ListTargetProjects' call.",
+"id": "ListTargetProjectsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"targetProjects": {
+"description": "Output only. The list of target response.",
+"items": {
+"$ref": "TargetProject"
+},
+"readOnly": true,
+"type": "array"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ListUtilizationReportsResponse": {
+"description": "Response message for 'ListUtilizationReports' request.",
+"id": "ListUtilizationReportsResponse",
+"properties": {
+"nextPageToken": {
+"description": "Output only. A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.",
+"readOnly": true,
+"type": "string"
+},
+"unreachable": {
+"description": "Output only. Locations that could not be reached.",
+"items": {
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+},
+"utilizationReports": {
+"description": "Output only. The list of reports.",
+"items": {
+"$ref": "UtilizationReport"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"LoadingImageSourceFilesStep": {
+"description": "LoadingImageSourceFilesStep contains specific step details.",
+"id": "LoadingImageSourceFilesStep",
+"properties": {},
+"type": "object"
+},
+"LocalizedMessage": {
+"description": "Provides a localized error message that is safe to return to the user which can be attached to an RPC error.",
+"id": "LocalizedMessage",
+"properties": {
+"locale": {
+"description": "The locale used following the specification defined at https://www.rfc-editor.org/rfc/bcp/bcp47.txt. Examples are: \"en-US\", \"fr-CH\", \"es-MX\"",
+"type": "string"
+},
+"message": {
+"description": "The localized error message in the above locale.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Location": {
+"description": "A resource that represents a Google Cloud location.",
+"id": "Location",
+"properties": {
+"displayName": {
+"description": "The friendly name for this location, typically a nearby city name. For example, \"Tokyo\".",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Cross-service attributes for the location. For example {\"cloud.googleapis.com/region\": \"us-east1\"}",
+"type": "object"
+},
+"locationId": {
+"description": "The canonical id for this location. For example: `\"us-east1\"`.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata. For example the available capacity at the given location.",
+"type": "object"
+},
+"name": {
+"description": "Resource name for the location, which may vary between implementations. For example: `\"projects/example-project/locations/us-east1\"`",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MachineImageParametersOverrides": {
+"description": "Parameters overriding decisions based on the source machine image configurations.",
+"id": "MachineImageParametersOverrides",
+"properties": {
+"machineType": {
+"description": "Optional. The machine type to create the MachineImage with. If empty, the service will choose a relevant machine type based on the information from the source image. For more information about machine types, please refer to https://cloud.google.com/compute/docs/machine-resource.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MachineImageTargetDetails": {
+"description": "The target details of the machine image resource that will be created by the image import job.",
+"id": "MachineImageTargetDetails",
+"properties": {
+"additionalLicenses": {
+"description": "Optional. Additional licenses to assign to the instance created by the machine image. Format: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/licenses/LICENSE_NAME Or https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/licenses/LICENSE_NAME",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"description": {
+"description": "Optional. An optional description of the machine image.",
+"type": "string"
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Immutable. The encryption to apply to the machine image."
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "Optional. The labels to apply to the instance created by the machine image.",
+"type": "object"
+},
+"machineImageName": {
+"description": "Required. The name of the machine image to be created.",
+"type": "string"
+},
+"machineImageParametersOverrides": {
+"$ref": "MachineImageParametersOverrides",
+"description": "Optional. Parameters overriding decisions based on the source machine image configurations."
+},
+"networkInterfaces": {
+"description": "Optional. The network interfaces to create with the instance created by the machine image. Internal and external IP addresses are ignored for machine image import.",
+"items": {
+"$ref": "NetworkInterface"
+},
+"type": "array"
+},
+"osAdaptationParameters": {
+"$ref": "ImageImportOsAdaptationParameters",
+"description": "Optional. Use to set the parameters relevant for the OS adaptation process."
+},
+"serviceAccount": {
+"$ref": "ServiceAccount",
+"description": "Optional. The service account to assign to the instance created by the machine image."
+},
+"shieldedInstanceConfig": {
+"$ref": "ShieldedInstanceConfig",
+"description": "Optional. Shielded instance configuration."
+},
+"singleRegionStorage": {
+"description": "Optional. Set to true to set the machine image storageLocations to the single region of the import job. When false, the closest multi-region is selected.",
+"type": "boolean"
+},
+"skipOsAdaptation": {
+"$ref": "SkipOsAdaptation",
+"description": "Optional. Use to skip OS adaptation process."
+},
+"tags": {
+"description": "Optional. The tags to apply to the instance created by the machine image.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"targetProject": {
+"description": "Required. Reference to the TargetProject resource that represents the target project in which the imported machine image will be created.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"MigratingVm": {
+"description": "MigratingVm describes the VM that will be migrated from a Source environment and its replication state.",
+"id": "MigratingVm",
+"properties": {
+"awsSourceVmDetails": {
+"$ref": "AwsSourceVmDetails",
+"description": "Output only. Details of the VM from an AWS source.",
+"readOnly": true
+},
+"azureSourceVmDetails": {
+"$ref": "AzureSourceVmDetails",
+"description": "Output only. Details of the VM from an Azure source.",
+"readOnly": true
+},
+"computeEngineDisksTargetDefaults": {
+"$ref": "ComputeEngineDisksTargetDefaults",
+"description": "Details of the target Persistent Disks in Compute Engine."
+},
+"computeEngineTargetDefaults": {
+"$ref": "ComputeEngineTargetDefaults",
+"description": "Details of the target VM in Compute Engine."
+},
+"computeEngineVmDefaults": {
+"$ref": "TargetVMDetails",
+"deprecated": true,
+"description": "Details of the VM in Compute Engine. Deprecated: Use compute_engine_target_defaults instead."
+},
+"createTime": {
+"description": "Output only. The time the migrating VM was created (this refers to this resource and not to the time it was installed in the source).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"currentSyncInfo": {
+"$ref": "ReplicationCycle",
+"description": "Output only. Details of the current running replication cycle.",
+"readOnly": true
+},
+"cutoverForecast": {
+"$ref": "CutoverForecast",
+"description": "Output only. Provides details of future CutoverJobs of a MigratingVm. Set to empty when cutover forecast is unavailable.",
+"readOnly": true
+},
+"description": {
+"description": "The description attached to the migrating VM by the user.",
+"type": "string"
+},
+"displayName": {
+"description": "The display name attached to the MigratingVm by the user.",
+"type": "string"
+},
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details on the state of the Migrating VM in case of an error in replication.",
+"readOnly": true
+},
+"group": {
+"description": "Output only. The group this migrating vm is included in, if any. The group is represented by the full path of the appropriate Group resource.",
+"readOnly": true,
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The labels of the migrating VM.",
+"type": "object"
+},
+"lastReplicationCycle": {
+"$ref": "ReplicationCycle",
+"description": "Output only. Details of the last replication cycle. This will be updated whenever a replication cycle is finished and is not to be confused with last_sync which is only updated on successful replication cycles.",
+"readOnly": true
+},
+"lastSync": {
+"$ref": "ReplicationSync",
+"description": "Output only. The most updated snapshot created time in the source that finished replication.",
+"readOnly": true
+},
+"name": {
+"description": "Output only. The identifier of the MigratingVm.",
+"readOnly": true,
+"type": "string"
+},
+"policy": {
+"$ref": "SchedulePolicy",
+"description": "The replication schedule policy."
+},
+"recentCloneJobs": {
+"description": "Output only. The recent clone jobs performed on the migrating VM. This field holds the vm's last completed clone job and the vm's running clone job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request.",
+"items": {
+"$ref": "CloneJob"
+},
+"readOnly": true,
+"type": "array"
+},
+"recentCutoverJobs": {
+"description": "Output only. The recent cutover jobs performed on the migrating VM. This field holds the vm's last completed cutover job and the vm's running cutover job, if one exists. Note: To have this field populated you need to explicitly request it via the \"view\" parameter of the Get/List request.",
+"items": {
+"$ref": "CutoverJob"
+},
+"readOnly": true,
+"type": "array"
+},
+"sourceVmId": {
+"description": "The unique ID of the VM in the source. The VM's name in vSphere can be changed, so this is not the VM's name but rather its moRef id. This id is of the form vm-.",
+"type": "string"
+},
+"state": {
+"description": "Output only. State of the MigratingVm.",
+"enum": [
+"STATE_UNSPECIFIED",
+"PENDING",
+"READY",
+"FIRST_SYNC",
+"ACTIVE",
+"CUTTING_OVER",
+"CUTOVER",
+"FINAL_SYNC",
+"PAUSED",
+"FINALIZING",
+"FINALIZED",
+"ERROR"
+],
+"enumDescriptions": [
+"The state was not sampled by the health checks yet.",
+"The VM in the source is being verified.",
+"The source VM was verified, and it's ready to start replication.",
+"Migration is going through the first sync cycle.",
+"The replication is active, and it's running or scheduled to run.",
+"The source VM is being turned off, and a final replication is currently running.",
+"The source VM was stopped and replicated. The replication is currently paused.",
+"A cutover job is active and replication cycle is running the final sync.",
+"The replication was paused by the user and no cycles are scheduled to run.",
+"The migrating VM is being finalized and migration resources are being removed.",
+"The replication process is done. The migrating VM is finalized and no longer consumes billable resources.",
+"The replication process encountered an unrecoverable error and was aborted."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateTime": {
+"description": "Output only. The last time the migrating VM state was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"targetDefaults": {
+"$ref": "TargetVMDetails",
+"deprecated": true,
+"description": "The default configuration of the target VM that will be created in Google Cloud as a result of the migration. Deprecated: Use compute_engine_target_defaults instead."
+},
+"updateTime": {
+"description": "Output only. The last time the migrating VM resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"vmwareSourceVmDetails": {
+"$ref": "VmwareSourceVmDetails",
+"description": "Output only. Details of the VM from a Vmware source.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"MigrationError": {
+"description": "Represents migration resource error information that can be used with google.rpc.Status message. MigrationError is used to present the user with error information in migration operations.",
+"id": "MigrationError",
+"properties": {
+"actionItem": {
+"$ref": "LocalizedMessage",
+"description": "Output only. Suggested action for solving the error.",
+"readOnly": true
+},
+"code": {
+"description": "Output only. The error code.",
+"enum": [
+"ERROR_CODE_UNSPECIFIED",
+"UNKNOWN_ERROR",
+"SOURCE_VALIDATION_ERROR",
+"SOURCE_REPLICATION_ERROR",
+"TARGET_REPLICATION_ERROR",
+"OS_ADAPTATION_ERROR",
+"CLONE_ERROR",
+"CUTOVER_ERROR",
+"UTILIZATION_REPORT_ERROR",
+"APPLIANCE_UPGRADE_ERROR",
+"IMAGE_IMPORT_ERROR"
+],
+"enumDescriptions": [
+"Default value. This value is not used.",
+"Migrate to Virtual Machines encountered an unknown error.",
+"Migrate to Virtual Machines encountered an error while validating replication source health.",
+"Migrate to Virtual Machines encountered an error during source data operation.",
+"Migrate to Virtual Machines encountered an error during target data operation.",
+"Migrate to Virtual Machines encountered an error during OS adaptation.",
+"Migrate to Virtual Machines encountered an error in clone operation.",
+"Migrate to Virtual Machines encountered an error in cutover operation.",
+"Migrate to Virtual Machines encountered an error during utilization report creation.",
+"Migrate to Virtual Machines encountered an error during appliance upgrade.",
+"Migrate to Virtual Machines encountered an error in image import operation."
+],
+"readOnly": true,
+"type": "string"
+},
+"errorMessage": {
+"$ref": "LocalizedMessage",
+"description": "Output only. The localized error message.",
+"readOnly": true
+},
+"errorTime": {
+"description": "Output only. The time the error occurred.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"helpLinks": {
+"description": "Output only. URL(s) pointing to additional information on handling the current error.",
+"items": {
+"$ref": "Link"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"MigrationWarning": {
+"description": "Represents migration resource warning information that can be used with google.rpc.Status message. MigrationWarning is used to present the user with warning information in migration operations.",
+"id": "MigrationWarning",
+"properties": {
+"actionItem": {
+"$ref": "LocalizedMessage",
+"description": "Output only. Suggested action for solving the warning.",
+"readOnly": true
+},
+"code": {
+"description": "The warning code.",
+"enum": [
+"WARNING_CODE_UNSPECIFIED",
+"ADAPTATION_WARNING"
+],
+"enumDescriptions": [
+"Default value. This value is not used.",
+"A warning originated from OS Adaptation."
+],
+"type": "string"
+},
+"helpLinks": {
+"description": "Output only. URL(s) pointing to additional information on handling the current warning.",
+"items": {
+"$ref": "Link"
+},
+"readOnly": true,
+"type": "array"
+},
+"warningMessage": {
+"$ref": "LocalizedMessage",
+"description": "Output only. The localized warning message.",
+"readOnly": true
+},
+"warningTime": {
+"description": "The time the warning occurred.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"NetworkInterface": {
+"description": "NetworkInterface represents a NIC of a VM.",
+"id": "NetworkInterface",
+"properties": {
+"externalIp": {
+"description": "Optional. The external IP to define in the NIC.",
+"type": "string"
+},
+"internalIp": {
+"description": "Optional. The internal IP to define in the NIC. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path.",
+"type": "string"
+},
+"network": {
+"description": "The network to connect the NIC to.",
+"type": "string"
+},
+"networkTier": {
+"description": "Optional. The networking tier used for optimizing connectivity between instances and systems on the internet. Applies only for external ephemeral IP addresses. If left empty, will default to PREMIUM.",
+"enum": [
+"COMPUTE_ENGINE_NETWORK_TIER_UNSPECIFIED",
+"NETWORK_TIER_STANDARD",
+"NETWORK_TIER_PREMIUM"
+],
+"enumDescriptions": [
+"An unspecified network tier. Will be used as PREMIUM.",
+"A standard network tier.",
+"A premium network tier."
+],
+"type": "string"
+},
+"subnetwork": {
+"description": "Optional. The subnetwork to connect the NIC to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OSDescription": {
+"description": "A message describing the VM's OS. Including OS, Publisher, Offer and Plan if applicable.",
+"id": "OSDescription",
+"properties": {
+"offer": {
+"description": "OS offer.",
+"type": "string"
+},
+"plan": {
+"description": "OS plan.",
+"type": "string"
+},
+"publisher": {
+"description": "OS publisher.",
+"type": "string"
+},
+"type": {
+"description": "OS type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"OSDisk": {
+"description": "A message describing the OS disk.",
+"id": "OSDisk",
+"properties": {
+"name": {
+"description": "The disk's full name.",
+"type": "string"
+},
+"sizeGb": {
+"description": "The disk's size in GB.",
+"format": "int32",
+"type": "integer"
+},
+"type": {
+"description": "The disk's type.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Operation": {
+"description": "This resource represents a long-running operation that is the result of a network API call.",
+"id": "Operation",
+"properties": {
+"done": {
+"description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.",
+"type": "boolean"
+},
+"error": {
+"$ref": "Status",
+"description": "The error result of the operation in case of failure or cancellation."
+},
+"metadata": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.",
+"type": "object"
+},
+"name": {
+"description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.",
+"type": "string"
+},
+"response": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"description": "The normal, successful response of the operation. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.",
+"type": "object"
+}
+},
+"type": "object"
+},
+"OperationMetadata": {
+"description": "Represents the metadata of the long-running operation.",
+"id": "OperationMetadata",
+"properties": {
+"apiVersion": {
+"description": "Output only. API version used to start the operation.",
+"readOnly": true,
+"type": "string"
+},
+"createTime": {
+"description": "Output only. The time the operation was created.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"endTime": {
+"description": "Output only. The time the operation finished running.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"requestedCancellation": {
+"description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.",
+"readOnly": true,
+"type": "boolean"
+},
+"statusMessage": {
+"description": "Output only. Human-readable status of the operation, if any.",
+"readOnly": true,
+"type": "string"
+},
+"target": {
+"description": "Output only. Server-defined resource path for the target of the operation.",
+"readOnly": true,
+"type": "string"
+},
+"verb": {
+"description": "Output only. Name of the verb executed by the operation.",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"PauseMigrationRequest": {
+"description": "Request message for 'PauseMigration' request.",
+"id": "PauseMigrationRequest",
+"properties": {},
+"type": "object"
+},
+"PersistentDisk": {
+"description": "Details of a created Persistent Disk.",
+"id": "PersistentDisk",
+"properties": {
+"diskUri": {
+"description": "The URI of the Persistent Disk.",
+"type": "string"
+},
+"sourceDiskNumber": {
+"description": "The ordinal number of the source VM disk.",
+"format": "int32",
+"type": "integer"
+}
+},
+"type": "object"
+},
+"PersistentDiskDefaults": {
+"description": "Details for creation of a Persistent Disk.",
+"id": "PersistentDiskDefaults",
+"properties": {
+"additionalLabels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map of labels to associate with the Persistent Disk.",
+"type": "object"
+},
+"diskName": {
+"description": "Optional. The name of the Persistent Disk to create.",
+"type": "string"
+},
+"diskType": {
+"description": "The disk type to use.",
+"enum": [
+"COMPUTE_ENGINE_DISK_TYPE_UNSPECIFIED",
+"COMPUTE_ENGINE_DISK_TYPE_STANDARD",
+"COMPUTE_ENGINE_DISK_TYPE_SSD",
+"COMPUTE_ENGINE_DISK_TYPE_BALANCED",
+"COMPUTE_ENGINE_DISK_TYPE_HYPERDISK_BALANCED"
+],
+"enumDescriptions": [
+"An unspecified disk type. Will be used as STANDARD.",
+"A Standard disk type.",
+"SSD hard disk type.",
+"An alternative to SSD persistent disks that balance performance and cost.",
+"Hyperdisk balanced disk type."
+],
+"type": "string"
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Optional. The encryption to apply to the disk."
+},
+"sourceDiskNumber": {
+"description": "Required. The ordinal number of the source VM disk.",
+"format": "int32",
+"type": "integer"
+},
+"vmAttachmentDetails": {
+"$ref": "VmAttachmentDetails",
+"description": "Optional. Details for attachment of the disk to a VM. Used when the disk is set to be attached to a target VM."
+}
+},
+"type": "object"
+},
+"PostProcessingStep": {
+"description": "PostProcessingStep contains specific step details.",
+"id": "PostProcessingStep",
+"properties": {},
+"type": "object"
+},
+"PreparingVMDisksStep": {
+"description": "PreparingVMDisksStep contains specific step details.",
+"id": "PreparingVMDisksStep",
+"properties": {},
+"type": "object"
+},
+"RemoveGroupMigrationRequest": {
+"description": "Request message for 'RemoveMigration' request.",
+"id": "RemoveGroupMigrationRequest",
+"properties": {
+"migratingVm": {
+"description": "The MigratingVm to remove.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ReplicatingStep": {
+"description": "ReplicatingStep contains specific step details.",
+"id": "ReplicatingStep",
+"properties": {
+"lastThirtyMinutesAverageBytesPerSecond": {
+"description": "The source disks replication rate for the last 30 minutes in bytes per second.",
+"format": "int64",
+"type": "string"
+},
+"lastTwoMinutesAverageBytesPerSecond": {
+"description": "The source disks replication rate for the last 2 minutes in bytes per second.",
+"format": "int64",
+"type": "string"
+},
+"replicatedBytes": {
+"description": "Replicated bytes in the step.",
+"format": "int64",
+"type": "string"
+},
+"totalBytes": {
+"description": "Total bytes to be handled in the step.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ReplicationCycle": {
+"description": "ReplicationCycle contains information about the current replication cycle status.",
+"id": "ReplicationCycle",
+"properties": {
+"cycleNumber": {
+"description": "The cycle's ordinal number.",
+"format": "int32",
+"type": "integer"
+},
+"endTime": {
+"description": "The time the replication cycle has ended.",
+"format": "google-datetime",
+"type": "string"
+},
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details on the state of the cycle in case of an error.",
+"readOnly": true
+},
+"name": {
+"description": "The identifier of the ReplicationCycle.",
+"type": "string"
+},
+"progress": {
+"deprecated": true,
+"description": "The current progress in percentage of this cycle.",
+"format": "int32",
+"type": "integer"
+},
+"progressPercent": {
+"deprecated": true,
+"description": "The current progress in percentage of this cycle. Was replaced by 'steps' field, which breaks down the cycle progression more accurately.",
+"format": "int32",
+"type": "integer"
+},
+"startTime": {
+"description": "The time the replication cycle has started.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "State of the ReplicationCycle.",
+"enum": [
+"STATE_UNSPECIFIED",
+"RUNNING",
+"PAUSED",
+"FAILED",
+"SUCCEEDED"
+],
+"enumDescriptions": [
+"The state is unknown. This is used for API compatibility only and is not used by the system.",
+"The replication cycle is running.",
+"The replication cycle is paused.",
+"The replication cycle finished with errors.",
+"The replication cycle finished successfully."
+],
+"type": "string"
+},
+"steps": {
+"description": "The cycle's steps list representing its progress.",
+"items": {
+"$ref": "CycleStep"
+},
+"type": "array"
+},
+"totalPauseDuration": {
+"description": "The accumulated duration the replication cycle was paused.",
+"format": "google-duration",
+"type": "string"
+},
+"warnings": {
+"description": "Output only. Warnings that occurred during the cycle.",
+"items": {
+"$ref": "MigrationWarning"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"ReplicationSync": {
+"description": "ReplicationSync contain information about the last replica sync to the cloud.",
+"id": "ReplicationSync",
+"properties": {
+"lastSyncTime": {
+"description": "The most updated snapshot created time in the source that finished replication.",
+"format": "google-datetime",
+"type": "string"
+}
+},
+"type": "object"
+},
+"ResumeMigrationRequest": {
+"description": "Request message for 'ResumeMigration' request.",
+"id": "ResumeMigrationRequest",
+"properties": {},
+"type": "object"
+},
+"SchedulePolicy": {
+"description": "A policy for scheduling replications.",
+"id": "SchedulePolicy",
+"properties": {
+"idleDuration": {
+"description": "The idle duration between replication stages.",
+"format": "google-duration",
+"type": "string"
+},
+"skipOsAdaptation": {
+"description": "A flag to indicate whether to skip OS adaptation during the replication sync. OS adaptation is a process where the VM's operating system undergoes changes and adaptations to fully function on Compute Engine.",
+"type": "boolean"
+}
+},
+"type": "object"
+},
+"SchedulingNodeAffinity": {
+"description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled. Based on https://cloud.google.com/compute/docs/reference/rest/v1/instances/setScheduling",
+"id": "SchedulingNodeAffinity",
+"properties": {
+"key": {
+"description": "The label key of Node resource to reference.",
+"type": "string"
+},
+"operator": {
+"description": "The operator to use for the node resources specified in the `values` parameter.",
+"enum": [
+"OPERATOR_UNSPECIFIED",
+"IN",
+"NOT_IN"
+],
+"enumDescriptions": [
+"An unknown, unexpected behavior.",
+"The node resource group should be in these resources affinity.",
+"The node resource group should not be in these resources affinity."
+],
+"type": "string"
+},
+"values": {
+"description": "Corresponds to the label values of Node resource.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ServiceAccount": {
+"description": "Service account to assign to the instance created by the machine image.",
+"id": "ServiceAccount",
+"properties": {
+"email": {
+"description": "Required. The email address of the service account.",
+"type": "string"
+},
+"scopes": {
+"description": "Optional. The list of scopes to be made available for this service account.",
+"items": {
+"type": "string"
+},
+"type": "array"
+}
+},
+"type": "object"
+},
+"ShieldedInstanceConfig": {
+"description": "Shielded instance configuration.",
+"id": "ShieldedInstanceConfig",
+"properties": {
+"enableIntegrityMonitoring": {
+"description": "Optional. Defines whether the instance created by the machine image has integrity monitoring enabled. This can be set to true only if the image boot option is EFI, and vTPM is enabled.",
+"type": "boolean"
+},
+"enableVtpm": {
+"description": "Optional. Defines whether the instance created by the machine image has vTPM enabled. This can be set to true only if the image boot option is EFI.",
+"type": "boolean"
+},
+"secureBoot": {
+"description": "Optional. Defines whether the instance created by the machine image has Secure Boot enabled. This can be set to true only if the image boot option is EFI.",
+"enum": [
+"SECURE_BOOT_UNSPECIFIED",
+"TRUE",
+"FALSE"
+],
+"enumDescriptions": [
+"No explicit value is selected. Will use the configuration of the source (if exists, otherwise the default will be false).",
+"Use secure boot. This can be set to true only if the image boot option is EFI.",
+"Do not use secure boot."
+],
+"type": "string"
+}
+},
+"type": "object"
+},
+"ShuttingDownSourceVMStep": {
+"description": "ShuttingDownSourceVMStep contains specific step details.",
+"id": "ShuttingDownSourceVMStep",
+"properties": {},
+"type": "object"
+},
+"SkipOsAdaptation": {
+"description": "Mentions that the machine image import is not using OS adaptation process.",
+"id": "SkipOsAdaptation",
+"properties": {},
+"type": "object"
+},
+"Source": {
+"description": "Source message describes a specific vm migration Source resource. It contains the source environment information.",
+"id": "Source",
+"properties": {
+"aws": {
+"$ref": "AwsSourceDetails",
+"description": "AWS type source details."
+},
+"azure": {
+"$ref": "AzureSourceDetails",
+"description": "Azure type source details."
+},
+"createTime": {
+"description": "Output only. The create time timestamp.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "User-provided description of the source.",
+"type": "string"
+},
+"encryption": {
+"$ref": "Encryption",
+"description": "Optional. Immutable. The encryption details of the source data stored by the service."
+},
+"error": {
+"$ref": "Status",
+"deprecated": true,
+"description": "Output only. Provides details on the state of the Source in case of an error.",
+"readOnly": true
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The labels of the source.",
+"type": "object"
+},
+"name": {
+"description": "Output only. The Source name.",
+"readOnly": true,
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The update time timestamp.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"vmware": {
+"$ref": "VmwareSourceDetails",
+"description": "Vmware type source details."
+}
+},
+"type": "object"
+},
+"StartMigrationRequest": {
+"description": "Request message for 'StartMigrationRequest' request.",
+"id": "StartMigrationRequest",
+"properties": {},
+"type": "object"
+},
+"Status": {
+"description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).",
+"id": "Status",
+"properties": {
+"code": {
+"description": "The status code, which should be an enum value of google.rpc.Code.",
+"format": "int32",
+"type": "integer"
+},
+"details": {
+"description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.",
+"items": {
+"additionalProperties": {
+"description": "Properties of the object. Contains field @type with type URL.",
+"type": "any"
+},
+"type": "object"
+},
+"type": "array"
+},
+"message": {
+"description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"Tag": {
+"description": "Tag is an AWS tag representation.",
+"id": "Tag",
+"properties": {
+"key": {
+"description": "Required. Key of tag.",
+"type": "string"
+},
+"value": {
+"description": "Required. Value of tag.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"TargetProject": {
+"description": "TargetProject message represents a target Compute Engine project for a migration or a clone.",
+"id": "TargetProject",
+"properties": {
+"createTime": {
+"description": "Output only. The time this target project resource was created (not related to when the Compute Engine project it points to was created).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"description": {
+"description": "The target project's description.",
+"type": "string"
+},
+"name": {
+"description": "Output only. The name of the target project.",
+"readOnly": true,
+"type": "string"
+},
+"project": {
+"description": "Required. The target project ID (number) or project name.",
+"type": "string"
+},
+"updateTime": {
+"description": "Output only. The last time the target project resource was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"TargetVMDetails": {
+"deprecated": true,
+"description": "TargetVMDetails is a collection of details for creating a VM in a target Compute Engine project.",
+"id": "TargetVMDetails",
+"properties": {
+"appliedLicense": {
+"$ref": "AppliedLicense",
+"description": "Output only. The OS license returned from the adaptation module report.",
+"readOnly": true
+},
+"bootOption": {
+"description": "Output only. The VM Boot Option, as set in the source VM.",
+"enum": [
+"BOOT_OPTION_UNSPECIFIED",
+"EFI",
+"BIOS"
+],
+"enumDescriptions": [
+"The boot option is unknown.",
+"The boot option is EFI.",
+"The boot option is BIOS."
+],
+"readOnly": true,
+"type": "string"
+},
+"computeScheduling": {
+"$ref": "ComputeScheduling",
+"description": "Compute instance scheduling information (if empty default is used)."
+},
+"diskType": {
+"description": "The disk type to use in the VM.",
+"enum": [
+"DISK_TYPE_UNSPECIFIED",
+"STANDARD",
+"BALANCED",
+"SSD",
+"HYPERDISK_BALANCED"
+],
+"enumDescriptions": [
+"An unspecified disk type. Will be used as STANDARD.",
+"A Standard disk type.",
+"An alternative to SSD persistent disks that balance performance and cost.",
+"SSD hard disk type.",
+"Hyperdisk balanced disk type."
+],
+"type": "string"
+},
+"externalIp": {
+"description": "The external IP to define in the VM.",
+"type": "string"
+},
+"internalIp": {
+"description": "The internal IP to define in the VM. The formats accepted are: `ephemeral` \\ ipv4 address \\ a named address resource full path.",
+"type": "string"
+},
+"labels": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "A map of labels to associate with the VM.",
+"type": "object"
+},
+"licenseType": {
+"description": "The license type to use in OS adaptation.",
+"enum": [
+"DEFAULT",
+"PAYG",
+"BYOL"
+],
+"enumDescriptions": [
+"The license type is the default for the OS.",
+"The license type is Pay As You Go license type.",
+"The license type is Bring Your Own License type."
+],
+"type": "string"
+},
+"machineType": {
+"description": "The machine type to create the VM with.",
+"type": "string"
+},
+"machineTypeSeries": {
+"description": "The machine type series to create the VM with.",
+"type": "string"
+},
+"metadata": {
+"additionalProperties": {
+"type": "string"
+},
+"description": "The metadata key/value pairs to assign to the VM.",
+"type": "object"
+},
+"name": {
+"description": "The name of the VM to create.",
+"type": "string"
+},
+"network": {
+"description": "The network to connect the VM to.",
+"type": "string"
+},
+"networkInterfaces": {
+"description": "List of NICs connected to this VM.",
+"items": {
+"$ref": "NetworkInterface"
+},
+"type": "array"
+},
+"networkTags": {
+"description": "A list of network tags to associate with the VM.",
+"items": {
+"type": "string"
+},
+"type": "array"
+},
+"project": {
+"deprecated": true,
+"description": "Output only. The project in which to create the VM.",
+"readOnly": true,
+"type": "string"
+},
+"secureBoot": {
+"description": "Defines whether the instance has Secure Boot enabled. This can be set to true only if the vm boot option is EFI.",
+"type": "boolean"
+},
+"serviceAccount": {
+"description": "The service account to associate the VM with.",
+"type": "string"
+},
+"subnetwork": {
+"description": "The subnetwork to connect the VM to.",
+"type": "string"
+},
+"targetProject": {
+"description": "The full path of the resource of type TargetProject which represents the Compute Engine project in which to create this VM.",
+"type": "string"
+},
+"zone": {
+"description": "The zone in which to create the VM.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpgradeApplianceRequest": {
+"description": "Request message for 'UpgradeAppliance' request.",
+"id": "UpgradeApplianceRequest",
+"properties": {
+"requestId": {
+"description": "A request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UpgradeStatus": {
+"description": "UpgradeStatus contains information about upgradeAppliance operation.",
+"id": "UpgradeStatus",
+"properties": {
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details on the state of the upgrade operation in case of an error.",
+"readOnly": true
+},
+"previousVersion": {
+"description": "The version from which we upgraded.",
+"type": "string"
+},
+"startTime": {
+"description": "The time the operation was started.",
+"format": "google-datetime",
+"type": "string"
+},
+"state": {
+"description": "The state of the upgradeAppliance operation.",
+"enum": [
+"STATE_UNSPECIFIED",
+"RUNNING",
+"FAILED",
+"SUCCEEDED"
+],
+"enumDescriptions": [
+"The state was not sampled by the health checks yet.",
+"The upgrade has started.",
+"The upgrade failed.",
+"The upgrade finished successfully."
+],
+"type": "string"
+},
+"version": {
+"description": "The version to upgrade to.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"UtilizationReport": {
+"description": "Utilization report details the utilization (CPU, memory, etc.) of selected source VMs.",
+"id": "UtilizationReport",
+"properties": {
+"createTime": {
+"description": "Output only. The time the report was created (this refers to the time of the request, not the time the report creation completed).",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"displayName": {
+"description": "The report display name, as assigned by the user.",
+"type": "string"
+},
+"error": {
+"$ref": "Status",
+"description": "Output only. Provides details on the state of the report in case of an error.",
+"readOnly": true
+},
+"frameEndTime": {
+"description": "Output only. The point in time when the time frame ends. Notice that the time frame is counted backwards. For instance if the \"frame_end_time\" value is 2021/01/20 and the time frame is WEEK then the report covers the week between 2021/01/20 and 2021/01/14.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"name": {
+"description": "Output only. The report unique name.",
+"readOnly": true,
+"type": "string"
+},
+"state": {
+"description": "Output only. Current state of the report.",
+"enum": [
+"STATE_UNSPECIFIED",
+"CREATING",
+"SUCCEEDED",
+"FAILED"
+],
+"enumDescriptions": [
+"The state is unknown. This value is not in use.",
+"The report is in the making.",
+"Report creation completed successfully.",
+"Report creation failed."
+],
+"readOnly": true,
+"type": "string"
+},
+"stateTime": {
+"description": "Output only. The time the state was last set.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"timeFrame": {
+"description": "Time frame of the report.",
+"enum": [
+"TIME_FRAME_UNSPECIFIED",
+"WEEK",
+"MONTH",
+"YEAR"
+],
+"enumDescriptions": [
+"The time frame was not specified and will default to WEEK.",
+"One week.",
+"One month.",
+"One year."
+],
+"type": "string"
+},
+"vmCount": {
+"description": "Output only. Total number of VMs included in the report.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"vms": {
+"description": "List of utilization information per VM. When sent as part of the request, the \"vm_id\" field is used in order to specify which VMs to include in the report. In that case all other fields are ignored.",
+"items": {
+"$ref": "VmUtilizationInfo"
+},
+"type": "array"
+},
+"vmsCount": {
+"deprecated": true,
+"description": "Output only. Total number of VMs included in the report.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+}
+},
+"type": "object"
+},
+"VmAttachmentDetails": {
+"description": "Details for attachment of the disk to a VM.",
+"id": "VmAttachmentDetails",
+"properties": {
+"deviceName": {
+"description": "Optional. Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disk-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VmCapabilities": {
+"description": "Migrating VM source information about the VM capabilities needed for some Compute Engine features.",
+"id": "VmCapabilities",
+"properties": {
+"lastOsCapabilitiesUpdateTime": {
+"description": "Output only. The last time OS capabilities list was updated.",
+"format": "google-datetime",
+"readOnly": true,
+"type": "string"
+},
+"osCapabilities": {
+"description": "Output only. Unordered list. List of certain VM OS capabilities needed for some Compute Engine features.",
+"items": {
+"enum": [
+"OS_CAPABILITY_UNSPECIFIED",
+"OS_CAPABILITY_NVME_STORAGE_ACCESS",
+"OS_CAPABILITY_GVNIC_NETWORK_INTERFACE"
+],
+"enumDescriptions": [
+"This is for API compatibility only and is not in use.",
+"NVMe driver installed and the VM can use NVMe PD or local SSD.",
+"gVNIC virtual NIC driver supported."
+],
+"type": "string"
+},
+"readOnly": true,
+"type": "array"
+}
+},
+"type": "object"
+},
+"VmUtilizationInfo": {
+"description": "Utilization information of a single VM.",
+"id": "VmUtilizationInfo",
+"properties": {
+"utilization": {
+"$ref": "VmUtilizationMetrics",
+"description": "Utilization metrics for this VM."
+},
+"vmId": {
+"description": "The VM's ID in the source.",
+"type": "string"
+},
+"vmwareVmDetails": {
+"$ref": "VmwareVmDetails",
+"description": "The description of the VM in a Source of type Vmware."
+}
+},
+"type": "object"
+},
+"VmUtilizationMetrics": {
+"description": "Utilization metrics values for a single VM.",
+"id": "VmUtilizationMetrics",
+"properties": {
+"cpuAverage": {
+"deprecated": true,
+"description": "Average CPU usage, percent.",
+"format": "int32",
+"type": "integer"
+},
+"cpuAveragePercent": {
+"description": "Average CPU usage, percent.",
+"format": "int32",
+"type": "integer"
+},
+"cpuMax": {
+"deprecated": true,
+"description": "Max CPU usage, percent.",
+"format": "int32",
+"type": "integer"
+},
+"cpuMaxPercent": {
+"description": "Max CPU usage, percent.",
+"format": "int32",
+"type": "integer"
+},
+"diskIoRateAverage": {
+"deprecated": true,
+"description": "Average disk IO rate, in kilobytes per second.",
+"format": "int64",
+"type": "string"
+},
+"diskIoRateAverageKbps": {
+"description": "Average disk IO rate, in kilobytes per second.",
+"format": "int64",
+"type": "string"
+},
+"diskIoRateMax": {
+"deprecated": true,
+"description": "Max disk IO rate, in kilobytes per second.",
+"format": "int64",
+"type": "string"
+},
+"diskIoRateMaxKbps": {
+"description": "Max disk IO rate, in kilobytes per second.",
+"format": "int64",
+"type": "string"
+},
+"memoryAverage": {
+"deprecated": true,
+"description": "Average memory usage, percent.",
+"format": "int32",
+"type": "integer"
+},
+"memoryAveragePercent": {
+"description": "Average memory usage, percent.",
+"format": "int32",
+"type": "integer"
+},
+"memoryMax": {
+"deprecated": true,
+"description": "Max memory usage, percent.",
+"format": "int32",
+"type": "integer"
+},
+"memoryMaxPercent": {
+"description": "Max memory usage, percent.",
+"format": "int32",
+"type": "integer"
+},
+"networkThroughputAverage": {
+"deprecated": true,
+"description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second.",
+"format": "int64",
+"type": "string"
+},
+"networkThroughputAverageKbps": {
+"description": "Average network throughput (combined transmit-rates and receive-rates), in kilobytes per second.",
+"format": "int64",
+"type": "string"
+},
+"networkThroughputMax": {
+"deprecated": true,
+"description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second.",
+"format": "int64",
+"type": "string"
+},
+"networkThroughputMaxKbps": {
+"description": "Max network throughput (combined transmit-rates and receive-rates), in kilobytes per second.",
+"format": "int64",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VmwareDiskDetails": {
+"description": "The details of a Vmware VM disk.",
+"id": "VmwareDiskDetails",
+"properties": {
+"diskNumber": {
+"description": "Output only. The ordinal number of the disk.",
+"format": "int32",
+"readOnly": true,
+"type": "integer"
+},
+"label": {
+"description": "Output only. The disk label.",
+"readOnly": true,
+"type": "string"
+},
+"sizeGb": {
+"description": "Output only. Size in GB.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+}
+},
+"type": "object"
+},
+"VmwareSourceDetails": {
+"description": "VmwareSourceDetails message describes a specific source details for the vmware source type.",
+"id": "VmwareSourceDetails",
+"properties": {
+"password": {
+"description": "Input only. The credentials password. This is write only and can not be read in a GET operation.",
+"type": "string"
+},
+"resolvedVcenterHost": {
+"description": "The hostname of the vcenter.",
+"type": "string"
+},
+"thumbprint": {
+"description": "The thumbprint representing the certificate for the vcenter.",
+"type": "string"
+},
+"username": {
+"description": "The credentials username.",
+"type": "string"
+},
+"vcenterIp": {
+"description": "The ip address of the vcenter this Source represents.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VmwareSourceVmDetails": {
+"description": "Represent the source Vmware VM details.",
+"id": "VmwareSourceVmDetails",
+"properties": {
+"architecture": {
+"description": "Output only. The VM architecture.",
+"enum": [
+"VM_ARCHITECTURE_UNSPECIFIED",
+"VM_ARCHITECTURE_X86_FAMILY",
+"VM_ARCHITECTURE_ARM64"
+],
+"enumDescriptions": [
+"The architecture is unknown.",
+"The architecture is one of the x86 architectures.",
+"The architecture is ARM64."
+],
+"readOnly": true,
+"type": "string"
+},
+"committedStorageBytes": {
+"description": "Output only. The total size of the disks being migrated in bytes.",
+"format": "int64",
+"readOnly": true,
+"type": "string"
+},
+"disks": {
+"description": "Output only. The disks attached to the source VM.",
+"items": {
+"$ref": "VmwareDiskDetails"
+},
+"readOnly": true,
+"type": "array"
+},
+"firmware": {
+"description": "Output only. The firmware type of the source VM.",
+"enum": [
+"FIRMWARE_UNSPECIFIED",
+"EFI",
+"BIOS"
+],
+"enumDescriptions": [
+"The firmware is unknown.",
+"The firmware is EFI.",
+"The firmware is BIOS."
+],
+"readOnly": true,
+"type": "string"
+},
+"vmCapabilitiesInfo": {
+"$ref": "VmCapabilities",
+"description": "Output only. Information about VM capabilities needed for some Compute Engine features.",
+"readOnly": true
+}
+},
+"type": "object"
+},
+"VmwareVmDetails": {
+"description": "VmwareVmDetails describes a VM in vCenter.",
+"id": "VmwareVmDetails",
+"properties": {
+"architecture": {
+"description": "Output only. The CPU architecture.",
+"enum": [
+"VM_ARCHITECTURE_UNSPECIFIED",
+"VM_ARCHITECTURE_X86_FAMILY",
+"VM_ARCHITECTURE_ARM64"
+],
+"enumDescriptions": [
+"The architecture is unknown.",
+"The architecture is one of the x86 architectures.",
+"The architecture is ARM64."
+],
+"readOnly": true,
+"type": "string"
+},
+"bootOption": {
+"description": "Output only. The VM Boot Option.",
+"enum": [
+"BOOT_OPTION_UNSPECIFIED",
+"EFI",
+"BIOS"
+],
+"enumDescriptions": [
+"The boot option is unknown.",
+"The boot option is EFI.",
+"The boot option is BIOS."
+],
+"readOnly": true,
+"type": "string"
+},
+"committedStorage": {
+"deprecated": true,
+"description": "The total size of the storage allocated to the VM in MB.",
+"format": "int64",
+"type": "string"
+},
+"committedStorageMb": {
+"description": "The total size of the storage allocated to the VM in MB.",
+"format": "int64",
+"type": "string"
+},
+"cpuCount": {
+"description": "The number of cpus in the VM.",
+"format": "int32",
+"type": "integer"
+},
+"datacenterDescription": {
+"description": "The descriptive name of the vCenter's datacenter this VM is contained in.",
+"type": "string"
+},
+"datacenterId": {
+"description": "The id of the vCenter's datacenter this VM is contained in.",
+"type": "string"
+},
+"diskCount": {
+"description": "The number of disks the VM has.",
+"format": "int32",
+"type": "integer"
+},
+"displayName": {
+"description": "The display name of the VM. Note that this is not necessarily unique.",
+"type": "string"
+},
+"guestDescription": {
+"description": "The VM's OS. See for example https://vdc-repo.vmware.com/vmwb-repository/dcr-public/da47f910-60ac-438b-8b9b-6122f4d14524/16b7274a-bf8b-4b4c-a05e-746f2aa93c8c/doc/vim.vm.GuestOsDescriptor.GuestOsIdentifier.html for types of strings this might hold.",
+"type": "string"
+},
+"memoryMb": {
+"description": "The size of the memory of the VM in MB.",
+"format": "int32",
+"type": "integer"
+},
+"powerState": {
+"description": "The power state of the VM at the moment list was taken.",
+"enum": [
+"POWER_STATE_UNSPECIFIED",
+"ON",
+"OFF",
+"SUSPENDED"
+],
+"enumDescriptions": [
+"Power state is not specified.",
+"The VM is turned ON.",
+"The VM is turned OFF.",
+"The VM is suspended. This is similar to hibernation or sleep mode."
+],
+"type": "string"
+},
+"uuid": {
+"description": "The unique identifier of the VM in vCenter.",
+"type": "string"
+},
+"vmId": {
+"description": "The VM's id in the source (note that this is not the MigratingVm's id). This is the moref id of the VM.",
+"type": "string"
+}
+},
+"type": "object"
+},
+"VmwareVmsDetails": {
+"description": "VmwareVmsDetails describes VMs in vCenter.",
+"id": "VmwareVmsDetails",
+"properties": {
+"details": {
+"description": "The details of the vmware VMs.",
+"items": {
+"$ref": "VmwareVmDetails"
+},
+"type": "array"
+}
+},
+"type": "object"
+}
+},
+"servicePath": "",
+"title": "VM Migration API",
+"version": "v1alpha1",
+"version_module": true
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/webmasters.v3.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/webmasters.v3.json
new file mode 100644
index 0000000000000000000000000000000000000000..94cd3762bd8f4d7f77ba35d8c545b90eb120d561
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/webmasters.v3.json
@@ -0,0 +1,555 @@
+{
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/webmasters": {
+ "description": "View and manage Search Console data for your verified sites"
+ },
+ "https://www.googleapis.com/auth/webmasters.readonly": {
+ "description": "View Search Console data for your verified sites"
+ }
+ }
+ }
+ },
+ "basePath": "/webmasters/v3/",
+ "baseUrl": "https://www.googleapis.com/webmasters/v3/",
+ "batchPath": "batch/webmasters/v3",
+ "description": "View Google Search Console data for your verified sites.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://developers.google.com/webmaster-tools/",
+ "etag": "\"u9GIe6H63LSGq-9_t39K2Zx_EAc/yeQbVpX8MWZgvu0Tp4j1CJkOSB4\"",
+ "icons": {
+ "x16": "https://www.google.com/images/icons/product/webmaster_tools-16.png",
+ "x32": "https://www.google.com/images/icons/product/webmaster_tools-32.png"
+ },
+ "id": "webmasters:v3",
+ "kind": "discovery#restDescription",
+ "name": "webmasters",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "alt": {
+ "default": "json",
+ "description": "Data format for the response.",
+ "enum": [
+ "json"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json"
+ ],
+ "location": "query",
+ "type": "string"
+ },
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
+ "type": "string"
+ },
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
+ "type": "string"
+ },
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
+ "type": "string"
+ },
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "quotaUser": {
+ "description": "An opaque string that represents a user for quota purposes. Must not exceed 40 characters.",
+ "location": "query",
+ "type": "string"
+ },
+ "userIp": {
+ "description": "Deprecated. Please use quotaUser instead.",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "protocol": "rest",
+ "resources": {
+ "searchanalytics": {
+ "methods": {
+ "query": {
+ "description": "Query your data with filters and parameters that you define. Returns zero or more rows grouped by the row keys that you define. You must define a date range of one or more days.\n\nWhen date is one of the group by values, any days without data are omitted from the result list. If you need to know which days have data, issue a broad date range query grouped by date for any metric, and see which day rows are returned.",
+ "httpMethod": "POST",
+ "id": "webmasters.searchanalytics.query",
+ "parameterOrder": [
+ "siteUrl"
+ ],
+ "parameters": {
+ "siteUrl": {
+ "description": "The site's URL, including protocol. For example: http://www.example.com/",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "sites/{siteUrl}/searchAnalytics/query",
+ "request": {
+ "$ref": "SearchAnalyticsQueryRequest"
+ },
+ "response": {
+ "$ref": "SearchAnalyticsQueryResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters",
+ "https://www.googleapis.com/auth/webmasters.readonly"
+ ]
+ }
+ }
+ },
+ "sitemaps": {
+ "methods": {
+ "delete": {
+ "description": "Deletes a sitemap from this site.",
+ "httpMethod": "DELETE",
+ "id": "webmasters.sitemaps.delete",
+ "parameterOrder": [
+ "siteUrl",
+ "feedpath"
+ ],
+ "parameters": {
+ "feedpath": {
+ "description": "The URL of the actual sitemap. For example: http://www.example.com/sitemap.xml",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "siteUrl": {
+ "description": "The site's URL, including protocol. For example: http://www.example.com/",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "sites/{siteUrl}/sitemaps/{feedpath}",
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters"
+ ]
+ },
+ "get": {
+ "description": "Retrieves information about a specific sitemap.",
+ "httpMethod": "GET",
+ "id": "webmasters.sitemaps.get",
+ "parameterOrder": [
+ "siteUrl",
+ "feedpath"
+ ],
+ "parameters": {
+ "feedpath": {
+ "description": "The URL of the actual sitemap. For example: http://www.example.com/sitemap.xml",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "siteUrl": {
+ "description": "The site's URL, including protocol. For example: http://www.example.com/",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "sites/{siteUrl}/sitemaps/{feedpath}",
+ "response": {
+ "$ref": "WmxSitemap"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters",
+ "https://www.googleapis.com/auth/webmasters.readonly"
+ ]
+ },
+ "list": {
+ "description": "Lists the sitemaps-entries submitted for this site, or included in the sitemap index file (if sitemapIndex is specified in the request).",
+ "httpMethod": "GET",
+ "id": "webmasters.sitemaps.list",
+ "parameterOrder": [
+ "siteUrl"
+ ],
+ "parameters": {
+ "siteUrl": {
+ "description": "The site's URL, including protocol. For example: http://www.example.com/",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "sitemapIndex": {
+ "description": "A URL of a site's sitemap index. For example: http://www.example.com/sitemapindex.xml",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "sites/{siteUrl}/sitemaps",
+ "response": {
+ "$ref": "SitemapsListResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters",
+ "https://www.googleapis.com/auth/webmasters.readonly"
+ ]
+ },
+ "submit": {
+ "description": "Submits a sitemap for a site.",
+ "httpMethod": "PUT",
+ "id": "webmasters.sitemaps.submit",
+ "parameterOrder": [
+ "siteUrl",
+ "feedpath"
+ ],
+ "parameters": {
+ "feedpath": {
+ "description": "The URL of the sitemap to add. For example: http://www.example.com/sitemap.xml",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "siteUrl": {
+ "description": "The site's URL, including protocol. For example: http://www.example.com/",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "sites/{siteUrl}/sitemaps/{feedpath}",
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters"
+ ]
+ }
+ }
+ },
+ "sites": {
+ "methods": {
+ "add": {
+ "description": "Adds a site to the set of the user's sites in Search Console.",
+ "httpMethod": "PUT",
+ "id": "webmasters.sites.add",
+ "parameterOrder": [
+ "siteUrl"
+ ],
+ "parameters": {
+ "siteUrl": {
+ "description": "The URL of the site to add.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "sites/{siteUrl}",
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters"
+ ]
+ },
+ "delete": {
+ "description": "Removes a site from the set of the user's Search Console sites.",
+ "httpMethod": "DELETE",
+ "id": "webmasters.sites.delete",
+ "parameterOrder": [
+ "siteUrl"
+ ],
+ "parameters": {
+ "siteUrl": {
+ "description": "The URI of the property as defined in Search Console. Examples: http://www.example.com/ or android-app://com.example/ Note: for property-sets, use the URI that starts with sc-set: which is used in Search Console URLs.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "sites/{siteUrl}",
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters"
+ ]
+ },
+ "get": {
+ "description": "Retrieves information about specific site.",
+ "httpMethod": "GET",
+ "id": "webmasters.sites.get",
+ "parameterOrder": [
+ "siteUrl"
+ ],
+ "parameters": {
+ "siteUrl": {
+ "description": "The URI of the property as defined in Search Console. Examples: http://www.example.com/ or android-app://com.example/ Note: for property-sets, use the URI that starts with sc-set: which is used in Search Console URLs.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "sites/{siteUrl}",
+ "response": {
+ "$ref": "WmxSite"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters",
+ "https://www.googleapis.com/auth/webmasters.readonly"
+ ]
+ },
+ "list": {
+ "description": "Lists the user's Search Console sites.",
+ "httpMethod": "GET",
+ "id": "webmasters.sites.list",
+ "path": "sites",
+ "response": {
+ "$ref": "SitesListResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/webmasters",
+ "https://www.googleapis.com/auth/webmasters.readonly"
+ ]
+ }
+ }
+ }
+ },
+ "revision": "20190428",
+ "rootUrl": "https://www.googleapis.com/",
+ "schemas": {
+ "ApiDataRow": {
+ "id": "ApiDataRow",
+ "properties": {
+ "clicks": {
+ "format": "double",
+ "type": "number"
+ },
+ "ctr": {
+ "format": "double",
+ "type": "number"
+ },
+ "impressions": {
+ "format": "double",
+ "type": "number"
+ },
+ "keys": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "position": {
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "ApiDimensionFilter": {
+ "id": "ApiDimensionFilter",
+ "properties": {
+ "dimension": {
+ "type": "string"
+ },
+ "expression": {
+ "type": "string"
+ },
+ "operator": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ApiDimensionFilterGroup": {
+ "id": "ApiDimensionFilterGroup",
+ "properties": {
+ "filters": {
+ "items": {
+ "$ref": "ApiDimensionFilter"
+ },
+ "type": "array"
+ },
+ "groupType": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SearchAnalyticsQueryRequest": {
+ "id": "SearchAnalyticsQueryRequest",
+ "properties": {
+ "aggregationType": {
+ "description": "[Optional; Default is \"auto\"] How data is aggregated. If aggregated by property, all data for the same property is aggregated; if aggregated by page, all data is aggregated by canonical URI. If you filter or group by page, choose AUTO; otherwise you can aggregate either by property or by page, depending on how you want your data calculated; see the help documentation to learn how data is calculated differently by site versus by page.\n\nNote: If you group or filter by page, you cannot aggregate by property.\n\nIf you specify any value other than AUTO, the aggregation type in the result will match the requested type, or if you request an invalid type, you will get an error. The API will never change your aggregation type if the requested type is invalid.",
+ "type": "string"
+ },
+ "dataState": {
+ "description": "[Optional] If \"all\" (case-insensitive), data will include fresh data. If \"final\" (case-insensitive) or if this parameter is omitted, the returned data will include only finalized data.",
+ "type": "string"
+ },
+ "dimensionFilterGroups": {
+ "description": "[Optional] Zero or more filters to apply to the dimension grouping values; for example, 'query contains \"buy\"' to see only data where the query string contains the substring \"buy\" (not case-sensitive). You can filter by a dimension without grouping by it.",
+ "items": {
+ "$ref": "ApiDimensionFilterGroup"
+ },
+ "type": "array"
+ },
+ "dimensions": {
+ "description": "[Optional] Zero or more dimensions to group results by. Dimensions are the group-by values in the Search Analytics page. Dimensions are combined to create a unique row key for each row. Results are grouped in the order that you supply these dimensions.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "endDate": {
+ "description": "[Required] End date of the requested date range, in YYYY-MM-DD format, in PST (UTC - 8:00). Must be greater than or equal to the start date. This value is included in the range.",
+ "type": "string"
+ },
+ "rowLimit": {
+ "description": "[Optional; Default is 1000] The maximum number of rows to return. Must be a number from 1 to 5,000 (inclusive).",
+ "format": "int32",
+ "type": "integer"
+ },
+ "searchType": {
+ "description": "[Optional; Default is \"web\"] The search type to filter for.",
+ "type": "string"
+ },
+ "startDate": {
+ "description": "[Required] Start date of the requested date range, in YYYY-MM-DD format, in PST time (UTC - 8:00). Must be less than or equal to the end date. This value is included in the range.",
+ "type": "string"
+ },
+ "startRow": {
+ "description": "[Optional; Default is 0] Zero-based index of the first row in the response. Must be a non-negative number.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "SearchAnalyticsQueryResponse": {
+ "description": "A list of rows, one per result, grouped by key. Metrics in each row are aggregated for all data grouped by that key either by page or property, as specified by the aggregation type parameter.",
+ "id": "SearchAnalyticsQueryResponse",
+ "properties": {
+ "responseAggregationType": {
+ "description": "How the results were aggregated.",
+ "type": "string"
+ },
+ "rows": {
+ "description": "A list of rows grouped by the key values in the order given in the query.",
+ "items": {
+ "$ref": "ApiDataRow"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SitemapsListResponse": {
+ "description": "List of sitemaps.",
+ "id": "SitemapsListResponse",
+ "properties": {
+ "sitemap": {
+ "description": "Contains detailed information about a specific URL submitted as a sitemap.",
+ "items": {
+ "$ref": "WmxSitemap"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SitesListResponse": {
+ "description": "List of sites with access level information.",
+ "id": "SitesListResponse",
+ "properties": {
+ "siteEntry": {
+ "description": "Contains permission level information about a Search Console site. For more information, see Permissions in Search Console.",
+ "items": {
+ "$ref": "WmxSite"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "WmxSite": {
+ "description": "Contains permission level information about a Search Console site. For more information, see Permissions in Search Console.",
+ "id": "WmxSite",
+ "properties": {
+ "permissionLevel": {
+ "description": "The user's permission level for the site.",
+ "type": "string"
+ },
+ "siteUrl": {
+ "description": "The URL of the site.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "WmxSitemap": {
+ "description": "Contains detailed information about a specific URL submitted as a sitemap.",
+ "id": "WmxSitemap",
+ "properties": {
+ "contents": {
+ "description": "The various content types in the sitemap.",
+ "items": {
+ "$ref": "WmxSitemapContent"
+ },
+ "type": "array"
+ },
+ "errors": {
+ "description": "Number of errors in the sitemap. These are issues with the sitemap itself that need to be fixed before it can be processed correctly.",
+ "format": "int64",
+ "type": "string"
+ },
+ "isPending": {
+ "description": "If true, the sitemap has not been processed.",
+ "type": "boolean"
+ },
+ "isSitemapsIndex": {
+ "description": "If true, the sitemap is a collection of sitemaps.",
+ "type": "boolean"
+ },
+ "lastDownloaded": {
+ "description": "Date & time in which this sitemap was last downloaded. Date format is in RFC 3339 format (yyyy-mm-dd).",
+ "format": "date-time",
+ "type": "string"
+ },
+ "lastSubmitted": {
+ "description": "Date & time in which this sitemap was submitted. Date format is in RFC 3339 format (yyyy-mm-dd).",
+ "format": "date-time",
+ "type": "string"
+ },
+ "path": {
+ "description": "The url of the sitemap.",
+ "type": "string"
+ },
+ "type": {
+ "description": "The type of the sitemap. For example: rssFeed.",
+ "type": "string"
+ },
+ "warnings": {
+ "description": "Number of warnings for the sitemap. These are generally non-critical issues with URLs in the sitemaps.",
+ "format": "int64",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "WmxSitemapContent": {
+ "description": "Information about the various content types in the sitemap.",
+ "id": "WmxSitemapContent",
+ "properties": {
+ "indexed": {
+ "description": "The number of URLs from the sitemap that were indexed (of the content type).",
+ "format": "int64",
+ "type": "string"
+ },
+ "submitted": {
+ "description": "The number of URLs in the sitemap (of the content type).",
+ "format": "int64",
+ "type": "string"
+ },
+ "type": {
+ "description": "The specific type of content in this sitemap. For example: web.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "servicePath": "webmasters/v3/",
+ "title": "Search Console API",
+ "version": "v3"
+}
\ No newline at end of file
diff --git a/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/youtubeAnalytics.v1.json b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/youtubeAnalytics.v1.json
new file mode 100644
index 0000000000000000000000000000000000000000..6081adc7183c41c7d487143ca124b333df1403b6
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/googleapiclient/discovery_cache/documents/youtubeAnalytics.v1.json
@@ -0,0 +1,106 @@
+{
+ "name": "youtubeAnalytics",
+ "batchPath": "batch",
+ "mtlsRootUrl": "https://youtubeanalytics.mtls.googleapis.com/",
+ "fullyEncodeReservedExpansion": true,
+ "title": "YouTube Analytics API",
+ "ownerName": "Google",
+ "resources": {},
+ "parameters": {
+ "quotaUser": {
+ "type": "string",
+ "location": "query",
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters."
+ },
+ "prettyPrint": {
+ "type": "boolean",
+ "default": "true",
+ "location": "query",
+ "description": "Returns response with indentations and line breaks."
+ },
+ "uploadType": {
+ "type": "string",
+ "location": "query",
+ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")."
+ },
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "type": "string",
+ "location": "query"
+ },
+ "callback": {
+ "description": "JSONP",
+ "type": "string",
+ "location": "query"
+ },
+ "oauth_token": {
+ "type": "string",
+ "location": "query",
+ "description": "OAuth 2.0 token for the current user."
+ },
+ "$.xgafv": {
+ "description": "V1 error format.",
+ "type": "string",
+ "enumDescriptions": [
+ "v1 error format",
+ "v2 error format"
+ ],
+ "location": "query",
+ "enum": [
+ "1",
+ "2"
+ ]
+ },
+ "alt": {
+ "location": "query",
+ "description": "Data format for response.",
+ "default": "json",
+ "enum": [
+ "json",
+ "media",
+ "proto"
+ ],
+ "type": "string",
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json",
+ "Media download with context-dependent Content-Type",
+ "Responses with Content-Type of application/x-protobuf"
+ ]
+ },
+ "key": {
+ "type": "string",
+ "location": "query",
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token."
+ },
+ "access_token": {
+ "location": "query",
+ "description": "OAuth access token.",
+ "type": "string"
+ },
+ "upload_protocol": {
+ "type": "string",
+ "location": "query",
+ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")."
+ }
+ },
+ "version": "v1",
+ "baseUrl": "https://youtubeanalytics.googleapis.com/",
+ "servicePath": "",
+ "description": "Retrieves your YouTube Analytics data.",
+ "kind": "discovery#restDescription",
+ "basePath": "",
+ "revision": "20200215",
+ "documentationLink": "https://developers.google.com/youtube/analytics",
+ "id": "youtubeAnalytics:v1",
+ "discoveryVersion": "v1",
+ "version_module": true,
+ "schemas": {},
+ "protocol": "rest",
+ "icons": {
+ "x16": "http://www.google.com/images/icons/product/search-16.gif",
+ "x32": "http://www.google.com/images/icons/product/search-32.gif"
+ },
+ "canonicalName": "YouTube Analytics",
+ "rootUrl": "https://youtubeanalytics.googleapis.com/",
+ "ownerDomain": "google.com"
+}
diff --git a/.venv/lib/python3.11/site-packages/uvloop/loop.cpython-311-x86_64-linux-gnu.so b/.venv/lib/python3.11/site-packages/uvloop/loop.cpython-311-x86_64-linux-gnu.so
new file mode 100644
index 0000000000000000000000000000000000000000..02425d2b02d3ba5e94b18c72f4181051cade637a
--- /dev/null
+++ b/.venv/lib/python3.11/site-packages/uvloop/loop.cpython-311-x86_64-linux-gnu.so
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b2800c71301fe995a0ea4b6b10eb7eff1269b7f2bea9d9e8afcbd3c7710bede
+size 13712536